POST to a URL you control.
Every webhook is pinned to a version, which fixes the events it can subscribe to and the shape of every payload it receives. Two versions exist today.
What changed in version 2
How a sync becomes events
A sync sendsconnector.sync.started when it begins. After it finishes, it sends one event per model that changed, then connector.sync.completed. Every event carries the next sequence number for that connector - see Order within a sync.
Why it works this way
Pinning a version lets the payload improve without breaking you. Version 1 bodies are frozen as they were. Everything version 2 adds lives behind a version string you chose, so no handler starts receiving a shape it has never seen. Data events carry record IDs, not records. The IDs are enough to read exactly what changed with theids filter, the payload stays small enough to acknowledge quickly, and no record data sits in your webhook logs or ours.
One event per model per sync replaces the aggregates. A handler that only cares about employees subscribes to two events and never parses the rest. Created and updated arrive separately, because onboarding a new hire and syncing an edit are different jobs in most products.
Signatures follow the Standard Webhooks specification, so you can verify them with a maintained library instead of hand-rolled code. The legacy header is still sent on version 2, so existing verification code keeps working while you switch.
What this means for you
- Create new webhooks on version 2. The dashboard still offers version 1, marked with its deprecation date, until it is retired.
- Deduplicate on the event
id. A retried delivery carries the same one - see Delivery and retries. - Read the records an event names with the
idsfilter, rather than expecting them in the payload. - Subscribe to
connector.relink_needed. It is the one event that means your customer has to act. - Verify
webhook-signatureon every request - see Verify webhook signatures.
Related
- Create a webhook - set one up in the dashboard
- Webhook events - every event, and when it fires
- Webhook payload - the headers and body of every delivery
- Migrate from version 1 - move an existing webhook before the deadline