Integrations and channels (technical)
How channels such as WhatsApp, Messenger, Instagram, Telegram, SMS and email are connected technically – callback addresses, signature verification, platform rules –, how integrations are delivered and what state the individual providers are in.
Channels bring messages from other services into the same desk as the website chat; integrations send events to other services or fetch knowledge from them. This page describes the technology. How to operate them in your account is described in the Manual.
Status: channels and most integrations have been tested against simulated provider responses, but not yet against every real account. The signed webhook is finished (with the limitation mentioned there); for all other providers, check the integration's log after switching it on. Treat them as beta.
Common rules
- Callback addresses have the form
https://reactive.chat/kanal/<kanal>/<SITE_KEY>. The site key is in your account under Project → Installation. - Every inbound route verifies the provider's signature. Without the provider's secret, nothing is accepted.
- Credentials are stored encrypted and separately from the rest of the configuration.
- Replies from your team go to the provider through an outbound queue; a hanging platform holds up no chat.
- Message length: inbound messages longer than the plan limit are shortened and marked with
[...](Limits). - Attachments from channels (email, Telegram photos) go through the same check as in the widget (type, size, quota). Rejected files appear in the text as “[Attachment not accepted: …]”, in the project's default language (de, en, pl, otherwise English).
WhatsApp, Messenger, Instagram
Set up in your account under Integrations. You need your own app in the Meta Developer Dashboard; your messages do not run through an account of ours.
- Callback URL:
https://reactive.chat/kanal/whatsapp/SITE_KEY,…/kanal/messenger/SITE_KEYor…/kanal/instagram/SITE_KEY - Verify Token: a long random string that you enter identically at Meta and with us (constant-time comparison).
- App Secret: we use it to verify the signature of every callback. Without an App Secret, the inbound route accepts nothing.
- Access Token: we use it to send on your behalf.
Platform rules that make deliveries fail silently:
- WhatsApp: for 24 hours after the customer's last message you may reply freely, after that only with an approved template (type UTILITY, exactly one placeholder
{{1}}). Enter its name in the configuration; outside the window we do not send freely. - Instagram: the customer must write first.
- Messenger: of the message tags, only
HUMAN_AGENTremains; we reject others.
Meta expects the response to a callback within five seconds; our inbound route only accepts and enqueues.
Telegram, SMS, email
These channels belong to the project and are set up under Project → Channels.
- Telegram: your own bot. When you save the bot token, we register the callback address
https://reactive.chat/kanal/telegram/SITE_KEYourselves viasetWebhook, with a randomsecret_tokenthat every callback must carry. By default, the assistant replies too. - SMS: through your Twilio account (integration Twilio). For the number, enter
https://reactive.chat/kanal/sms/SITE_KEYunder “A message comes in”;X-Twilio-Signatureis verified. By default, the assistant replies too. - Email: your mailbox is fetched via IMAP every minute, replies go through your SMTP (otherwise through our sending service with
Reply-To). No old mail is fetched when switching on. Assignment to the conversation viaIn-Reply-To/References, otherwise sender and subject from the last 30 days. Not taken over: out-of-office notes, delivery reports, mailing lists, mails marked as spam, more than 20 mails per sender and hour (300 per project). By default, the assistant does not reply to email; when switched on, its replies carryAuto-Submitted: auto-replied.
Known gap: if a delivery to the provider fails permanently (blocked number, closed window), the reason is in the integration's log, but not yet in the conversation.
Integrations
You switch integrations on in your account under Integrations. Each has its own credentials (key, token, address or sign-in with the provider). Events (conversation.created, message.created, handoff.requested, csat.submitted, fehlerfall.erstellt) run through a queue with retries:
- up to five retries with increasing intervals (1 s to just over 10 minutes),
- a circuit breaker per provider and workspace: after 5 errors in 60 seconds, a 30-second pause,
- events older than one hour are no longer delivered,
- a chat never waits for an integration.
Providers in the code:
- Events to your own systems: webhooks (signed, see Webhooks), Zapier, Make, n8n (via REST hooks)
- Team chat: Slack, Microsoft Teams, Discord
- Tickets and CRM: Zendesk, Freshdesk, HubSpot, Pipedrive, Jira, Linear, GitHub
- Shops: Shopify, WooCommerce, Shopware, Stripe
- Knowledge: website crawler, WordPress, Notion, Confluence, Google Drive
- Analytics and errors: Google Analytics 4, Matomo, Plausible, Sentry
- Appointments: Cal.com
- Channels: WhatsApp, Messenger, Instagram, Telegram, Twilio, email
You cannot register your own providers. For your own connections, use webhooks, the server API or MCP.
Shop features in the chat (such as “Add to cart” for WooCommerce, Shopify and Shopware) are enabled by reactive.chat per project; they only work on the registered shop host and have no JavaScript API of their own.
Mobile apps
For apps there is no native SDK, but an embed page for WebViews: Mobile apps.
Next: Mobile apps
Ultima actualizare: