Skip to main content
A webhook sends events to your own tools the moment they happen. Set them up in Settings › Webhooks. Only owners and admins can add or change webhooks. Members can see the list, with the address cut down to its host.

Add a webhook

1

Press Add webhook

Give it a Name, then put your address in Where to send. It must start with http:// or https:// and be publicly reachable.
2

Choose your events

Under When should we send?, tick the events you want. First reply starts ticked. Choose all ticks all 20.
3

Limit it, if you want

Under Only for, pick Campaigns and Sources. See Only for.
4

Press Send a test event

We send one test event, and show your tool’s answer. Nothing is saved yet.
5

Press Save webhook

Copy the signing secret now. It’s shown once.
Add webhook drawer with name, address, events, Only for and Technical details

Add webhook, filled in, with three events ticked and Technical details open: the signing secret note, the retry rule and every event code.

You can also add a webhook from a campaign’s settings. It then starts limited to that campaign. The number of webhooks depends on your plan: none on Free, 3 on Software, and set by your agreement on Custom. Past the limit, saving returns “Webhook limit reached”. See Plans.

What we send

Each event is a POST with a JSON body:
tenant_id is your workspace’s id. data depends on the event.

Headers

Check it came from us

Compare X-Webhook-Secret with your signing secret, and reject the request if they differ. The header holds the secret itself, not a signature of the body, so use HTTPS to keep it private. A test event sent before you save has no secret header, because the webhook has no secret yet.

Handle repeats

Your tool can occasionally receive the same event twice. Use X-Webhook-Delivery to drop repeats.

Answer and retries

Answer with any 2xx within 5 seconds. Anything else counts as a failure, including a redirect, because we don’t follow them. Do slow work after you answer. After a failed first try, we retry 3 times over an hour: If the last retry fails, the webhook is marked Not working. From then on:
  • it gets no new events,
  • its other waiting retries are cancelled,
  • events that happen while it’s stopped aren’t saved or sent later.

Get it working again

Fix your tool, then press Try again in the list. We send one test event. If your tool answers with a 2xx, new events flow again. If not, it stays Not working. Editing the webhook doesn’t restart it. Only Try again does.

Status in the list

Only for

Use Only for to limit a webhook. Leaving a list empty means all of them. Events with no workflow_id are always delivered, whatever you picked under Campaigns. That includes sender alerts, tag changes, and reply events on chats that aren’t tied to a campaign. New campaigns and sources aren’t added on their own.

Events

Event codes in Technical details on each webhook shows the same list. Ids in payloads can be null when we don’t have them. workflow_id is a campaign’s id, run_id is one person’s journey through a campaign, and lead_id is the person. Older names like agent_id refer to the source that found them.

People

lead.created and lead.enriched have this data: lead.tag_updated covers the tags you put on a person, not the reply tags in Inbox:

Sent for you

Each has this data:

Replies

Reply tag events fire only for tags we set, not when you change a tag by hand in Inbox. invitation_accepted, message_replied and inmail_reply_received have this data: every_message_reply_received has run_id, workflow_id, lead_id, chat_id, reply_text, reply_intent and occurred_at. The three reply tag events have run_id, workflow_id, lead_id, chat_id, tag, confidence and occurred_at. tag is one of interested, meeting_request, question, objection, not_interested, out_of_office or neutral.

Campaigns

Campaign finished fires when nobody is left in progress in the campaign right now. It can fire again if you add more people later.

Senders

Test event

Send a test event and Try again send webhook.test. It has made-up data in the lead.created shape. You can’t subscribe to it. Make sure your tool accepts unknown event names without failing.

Turn a webhook off

Open it and switch On off, then press Save webhook. It stops getting events and you can turn it back on later. Delete… removes it for good, after you confirm. Nothing more is sent to it, and you can’t undo this.

Troubleshooting

We only send to public addresses. Addresses inside a private network, and names that lead to one, are refused when you save and again at every delivery. A name we can’t find yet can be saved, but deliveries fail until it resolves. A webhook that has never worked and points at a private address goes straight to Not working, with no retries.
We show the status it sent back. Check the address and what your tool accepts. A 405 or 404 often means the address is wrong for a POST.
It didn’t answer within 5 seconds, or we couldn’t connect. Check the address and that your tool is running.
It’s shown once, and after that only the last 4 characters. To get a new one, delete the webhook and add it again, then update your tool.
They aren’t sent later. To catch up, use the REST API.

Developers overview

API, permissions and limits.

Integrations

Send people in from another tool.