Connect your endpoint
- An admin opens Settings → Link your system.
- Enter your webhook URL (must be
https://and publicly reachable) and pick the events to send. - Click Connect and copy the signing secret (
whsec_…) — it’s shown only once. Use Rotate later to issue a new one. - Click Send test event to deliver a sample
message.receivedpayload and inspect your server’s response.
Events
The request we send
Each event is aPOST with a JSON body:
conversation is omitted for contact.* events, message is present only on
message.received, and assignment (agentId, agentName) is added on
conversation.assigned. Test deliveries include "test": true.
Verify the signature
Every delivery carries these headers:verify-signature.js
Respond with actions
Return HTTP200 with JSON. Any actions you include run immediately:
An empty body or
{} is fine when you only want to record the event — for
example, feeding an analytics pipeline.
Limits
- Up to 5 actions per response, of which at most 3 replies (4,096 characters each).
fieldsis capped at 32 keys / 16 KB;dataat 32 KB.replyandtrigger_floware skipped oncontact.*events (no conversation in scope).- Invalid actions are recorded in the delivery log; valid ones still run.
Delivery behavior
Deliveries are fire-and-forget: they never delay message processing, and a reply lands moments after the customer’s message. Your endpoint has 10 seconds to respond; non-2xx responses and timeouts are logged and ignored — there are no automatic retries, so a slow endpoint can’t double-message a customer. The Recent deliveries table in settings keeps the last 50 requests with response bodies and per-action results for debugging.Example uses
- Order status: reply with live order data looked up by phone number, and push the order list into the Linked system panel for agents.
- CRM enrichment: on
contact.created, tag the contact with tier and account owner from your CRM. - Dynamic routing: on
message.received, trigger a VIP flow for customers your database marks as high-value. - Ticket sync: mirror
conversation.created/conversation.resolvedinto Jira or Zendesk.
Prefer polling or building against the REST API instead? Everything the
inbox exposes is also available on the public API,
and no-code automations are covered by the Zapier integration.