Integrations and webhooks

Send conversations, bookings, team requests and support requests to Zapier, Make or your server; check the signature, see delivery results.

Integrations send business events to another service the moment they happen: a new conversation, a booking, a request for a team member, a support request. With Zapier or Make you can, for example, add a row to a spreadsheet, send a message to a chat or create a CRM record without copying data by hand.

Where to find it

Open “Modules” in the top menu, connect the “Integrations” module (it is off by default) and click “Open integrations” on its card. The “Webhooks” tab opens, with the “Event log” tab next to it. Only the Owner and the Administrator can open the section: the receiver address can contain a private token. While the module is off nothing is delivered, and events that happen in the meantime are not resent later. Receivers stay configured and the event log keeps recording.

How to add a receiver

  1. In Zapier create a Zap with the “Webhooks by Zapier” trigger and the “Catch Hook” event, and copy the address it gives you. In Make add the “Custom webhook” module and copy its address.
  2. On the integrations page fill in “Name” (for example, the name of the Zap) and “Receiver address” (the copied address).
  3. In “Events to send” tick what to send.
  4. Click “Add receiver”.
  5. The signing secret appears once. Copy it and keep it safe. Zapier and Make do not need it; your own server uses it to check the signature. If you lose it, create a new one with “Change secret”.
  6. On the receiver card click “Send a test”. The result says Delivered or Not delivered with the reason.

The address must be public and start with https. These are rejected, and the page names the reason: http addresses, IP addresses instead of a domain, custom ports, addresses with a login and password, internal addresses and addresses on ReceptionWorks domains. The page shows only the host and path of the address: the part after the question mark can hold your receiver's token.

Which events are sent

Events from the test chat are not sent. A receiver gets only events that happen after it was added and while it is on: what happened while it was paused or turned off is not sent later.

“New message” and “Conversation transcript” carry the full text of conversations, including what customers write. The text leaves ReceptionWorks and goes to the receiver you chose, so tick them only for receivers you trust. A new receiver starts with these two unticked. They are sent only while some receiver has them ticked, and they do not appear in the event log or its export: the dialog itself is in the inbox. Test chats and blocked customers are not sent.

What the receiver gets

Every event is a POST request with a JSON body. Example for a request for a team member made by an AI employee:

{
  "schema_version": "business-webhook.v1",
  "id": "5b0c5e2e-0000-4000-8000-000000000001",
  "type": "conversation.handoff_requested",
  "occurred_at": "2026-10-07T09:30:00.000Z",
  "business": { "name": "Example Studio" },
  "actor": { "kind": "ai_employee" },
  "channel": "telegram",
  "employee": { "name": "Anna" },
  "conversation": { "url": "https://app.example.com/businesses/studio/inbox?conversation=example" },
  "customer": { "name": "Maria", "email": "maria@example.com", "phone": "+1 555 0100" },
  "booking": null,
  "handoff": { "reason": "ai_request", "reason_text": "The customer wants to discuss a discount" },
  "support_case": null
}

Sections that do not apply to the event are null. The “Send a test” event has the type webhook.test, and every section except business is null. The data carries no translated text: names are as saved, codes are fixed English words, and times are in UTC.

"message": {
  "id": "6c1d0f52-0000-4000-8000-000000000002",
  "sequence": 12,
  "author": "customer",
  "text": "Hello, can I book for Friday?",
  "created_at": "2026-10-07T09:29:41.000Z",
  "attachments": [{ "kind": "image", "name": "photo.jpg", "media_type": "image/jpeg" }]
}

Messages and transcripts can arrive out of order and can repeat, so do not rely on arrival order. Use sequence to restore the order of messages in a conversation, and drop a delivery whose webhook-id you have already processed. A transcript repeats messages you may already have received one by one: use it to check or rebuild the whole conversation.

How to check the signature

Each request has three headers of the Standard Webhooks standard: webhook-id, webhook-timestamp and webhook-signature. Zapier and Make do not check them. On your own server use the official Standard Webhooks library for your language: give it the secret exactly as shown (it starts with whsec_), the raw unchanged request body and the three headers. To check by hand:

signed_content = webhook-id + "." + webhook-timestamp + "." + raw request body
signature      = "v1," + base64( HMAC-SHA256( key, signed_content ) )
key            = base64-decoded part of the secret after "whsec_"

The webhook-signature header holds v1, followed by the signature. After “Change secret” it holds two signatures separated by a space: accept the request if either matches. Reject requests whose timestamp differs from your clock by more than five minutes.

Retries and automatic shutdown

The receiver must answer with a 2xx code within 10 seconds. Redirects are not followed: an address that redirects counts as an error. Otherwise ReceptionWorks tries again: right away, then after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 12 hours. That is 7 attempts over about 21 hours. If all fail, the delivery is marked Not delivered in “Delivery log”, and you can click “Send again”. Retries carry the same webhook-id, so the receiver can drop duplicates.

A receiver is turned off automatically when it answers that the address no longer exists (code 410) or when five events in a row are not delivered. The card then shows “Turned off automatically” with the reason, and your team gets a notification. Fix the address and click “Turn on”: events missed in the meantime are not sent.

Pause, new secret, deletion

Good to know

What's next

← All articles