Skip to main content
Webhooks send events — an invite accepted, a reply arriving, a campaign stalling — to a URL you choose, so you can update a CRM, alert a channel, or start your own automations. Manage them under Settings → API & webhooks → Webhooks, or through the public API.
Outbound webhooks are included on the Agency Plus plan.

Add a webhook

  1. Enter an Endpoint URL. It must be https://.
  2. Leave All events (*) on, or turn it off and choose specific events.
  3. Click Create webhook, then reveal and copy its Secret. It is shown once.
Each webhook can be switched off and back on without deleting it.

Events

A few worth knowing:
  • message.classified fires once a reply has been read and given an intent (interested, question, not_now, not_interested, ooo, wrong_person, unclear). This is the one to use for “new interested reply”.
  • sequence.stalled and sender.running_dry are the alerts. sequence.recovered fires when a stall clears.
  • meeting.booked carries lead_id, sender_id, provider, starts_at and booking_id.
  • sequence.webhook is sent by the Call webhook step inside a sequence.
Payloads carry ids, not full records. Fetch the detail with GET /v1/leads/{id} or GET /v1/threads/{id}.

Verifying requests

Each delivery is a JSON POST with three headers:
Work out the same HMAC on your side and compare, using a constant-time comparison, before trusting the payload.
Deliveries can arrive more than once and out of order. Use x-delivery-id to drop duplicates.

Retries and failures

  • Answer with a 2xx within 10 seconds.
  • A failed delivery is retried up to 5 times, with the wait doubling each time (about 2, 4, 8, then 16 minutes).
  • A webhook is switched off automatically after 50 failures in a row. Turn it back on from the list; this resets the failure count.
  • Recent deliveries shows the last 100 attempts with status code, attempts and last error. Records are kept for 30 days.

Replay a delivery

If your endpoint was down, or you fixed a bug and want the event again, click Replay on any delivery. A replay is a new delivery carrying the same payload plus "replayed": true and "replay_of": <original id>. It goes out within about 30 seconds and is signed like any other. The same thing through the API: