Skip to main content
A webhook endpoint is a URL on your server. When an event you subscribed to happens, the platform sends it a signed JSON POST.

Setting up an endpoint

You can create endpoints in the dashboard under Integrations → Webhooks, or through the API.
  1. Enter a name and a public https:// URL.
  2. Pick the events you want. Nothing is selected automatically. Messaging events can be limited to one channel (for example only whatsapp) or all.
  3. Copy the signing secret (it starts with whsec_) when it is shown. You need it to verify signatures.
  4. New endpoints start paused. Enable the endpoint, then send a test event to check your receiver handles it.

What a delivery looks like

Payloads are deliberately small. To get the full record, call the API with the ID from data.

Responding

  • Return any 2xx status as soon as you have stored the event. Do slow work afterwards.
  • Requests time out after 8 seconds (4 seconds to connect).
  • Redirects are not followed and count as a failure.

Retries

Network errors, timeouts, 408, 429 and 5xx responses are retried. Other 4xx responses and redirects are final. An event is attempted at most 6 times, with delays of roughly 10 seconds, 1 minute, 5 minutes, 30 minutes and 2 hours (with some random jitter). A Retry-After header on your response can lengthen a delay. Delivery history in the dashboard shows each attempt’s status code, duration and outcome, and lets you resend a delivery.

Delivery guarantees

  • At least once. The same delivery can arrive more than once. Use the X-Webhook-Delivery header to ignore duplicates.
  • Not ordered. Events can arrive out of order. Use occurred_at if order matters.
  • Up to a minute’s delay. Deliveries are sent by a scheduler that runs every minute.
  • A manual resend gets a new delivery ID, on purpose.

Changing an endpoint

Editing an endpoint cancels deliveries still queued for its old settings. A request already on its way can still arrive. If the admin responsible for an endpoint leaves or loses access, deliveries pause until another admin takes it over from the endpoint’s edit form.