Skip to main content
Webhooks (callbacks) deliver messaging events to a URL on your server as signed POST requests. A webhook subscription is the record that says which URL receives which events and which secret signs them. You use these endpoints to create subscriptions, change their events or URL, pause them and delete them. For the delivery payloads and a verification example, see the Webhooks guide.

The webhook subscription object

The response includes secret, so keep subscription responses out of logs and client-side code.

Endpoints

Events

When you omit events or send an empty array, the subscription receives message.received, message.delivered and message.failed. An event reaches a subscription only when the subscription is active and its events list contains that exact name.

Create a subscription

cURL
201 Created
Only url is required; a missing or empty url returns 400 with url is required. New subscriptions are active immediately.

Update, pause and delete

  • Partial updates. PUT /webhooks/{id} changes only the fields you send. A field you send replaces the current value, and events replaces the whole list.
  • Pause. Send {"active": false} to stop deliveries and keep the subscription. Send {"active": true} to resume.
  • Rotate the secret. Send a new secret and update your verifier at the same time; deliveries are signed with the new value from that point.
  • Read back. PUT and DELETE return 200 with {"status":"ok"}. Call GET /webhooks/{id} to see the updated subscription.
  • Empty list. GET /webhooks returns a bare JSON array, and null when you have no subscriptions. Treat null as an empty list.

Delivery headers

Every delivery is a POST with a JSON body of the form {"event", "timestamp", "data"} and these headers. Return a 2xx status quickly. Any other response is treated as a failure, and the event is redelivered until your endpoint accepts it.

Webhooks guide

Payloads, signature verification and handler examples in Node and Python.

WebSocket

Live events for dashboards and consoles.

Broadcasts

Track bulk sends with broadcast.updated.

Conversations

Thread inbound replies from message.received.