Skip to main content

Delivery

Every webhook is a POST request with this envelope:
Your endpoint must respond 200 OK with an empty body. If it doesn’t, delivery is retried with exponential backoff until it succeeds.
Deliveries are idempotent per underlying event id, but a redelivery can still reach your endpoint more than once during a retry window. Deduplicate on the payload’s activity/entity id, not on delivery count.

Verifying the signature

Each delivery carries the same x-signature / x-timestamp headers used for request authentication, computed over the entire request body (not just data) using your webhook secret.
Use the raw request body string exactly as received, not a re-serialized version of the parsed JSON. Re-serializing with JSON.stringify can reorder or reformat keys differently than the sender did, which silently breaks verification.
Your webhook secret is generated alongside your webhook URL in the Business Dashboard — see Configuring and Verifying Webhooks.