Skip to main content
New webhooks replace legacy webhooks that you created with the /v1/webhooks endpoints. Event names do not change, but the payload shape, the signature headers, and the signing secret do.

What changes

Update your endpoint

Before you enable a new webhook, make these changes: Your endpoint continues to receive legacy deliveries until you switch. Accept both formats at the same URL, or give the new webhook a different URL.

Migrate a v1 API webhook

1

Find your legacy webhooks

Call GET /v1/webhooks to get the URL, events, and resourceIds of each webhook. You can combine webhooks that send to the same URL into one new webhook.
2

Create the replacement, disabled

Keep the key field from the response. It is the new signing secret.
3

Test your endpoint

For each event type that you subscribe to, send a test event with POST /webhooks/:id/events/test. Put the event type in eventType, for example { "eventType": "message.received" }.Quo sends a signed request with sample data to your URL. Make sure that your endpoint verifies the signature and returns a 2xx response. GET /webhooks/:id/events shows each test delivery and the response from your endpoint.
4

Switch to the replacement

Do not delete the legacy webhook until your tests pass. You cannot restore a deleted v1 webhook.
Delete the legacy webhook, then enable the replacement immediately. Events that occur between the two calls are not delivered.