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.Failures that never reached the endpoint
Failures that never reached the endpoint
DNS, TLS or connection problems. The URL is wrong, or the receiver is not publicly
reachable.
The endpoint rejected it
The endpoint rejected it
It responded with an error status. The body in the log is the receiver’s own message —
that is where the reason will be.
Nothing at all in the log
Nothing at all in the log
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.

