Skip to main content
A webhook tells another system when something happens here — no polling, no API code on your side beyond receiving a request.

Setting one up

1

Get a URL from the receiving system

In n8n, a Webhook node. In Zapier, a “Catch Hook” trigger. In your own system, any endpoint that accepts a POST.
2

Add the endpoint

Integrations → Webhooks → Add. The URL must be publicly reachable over http(s) — internal and private addresses are rejected.
3

Choose the events

Only the ones you need. Every extra event is traffic the receiver has to ignore.
4

Choose the fields

Per event, you can pick which fields to send.
5

Send a test

Confirms the endpoint accepts what we send before anything real depends on it.

Events

Messaging: message received, sent, delivered, read, failed; comment received. CRM: lead created, updated, stage changed, assigned, won, lost.

The signing secret

Each endpoint has a secret used to sign every request. Your receiver should verify it — otherwise anyone who learns your URL can post fake events to it. You can rotate the secret. Update the receiver at the same time; requests signed with the new secret will fail verification against the old one.

The delivery log

The last 300 attempts per endpoint, with what was sent and what came back.
DNS, TLS or connection problems. The URL is wrong, or the receiver is not publicly reachable.
It responded with an error status. The body in the log is the receiver’s own message — that is where the reason will be.
No event matching your subscription has occurred yet. Send a test to confirm the wiring.

Keeping it healthy

  • Respond quickly, with a 2xx. Do the slow work after acknowledging. A receiver that takes seconds to reply will look like a failure.
  • Expect the same event more than once. Make your handler safe to run twice on the same event rather than assuming exactly-once delivery.
  • Subscribe narrowly. It is easier to add an event later than to work out which of fifteen is causing a problem.