Delivery & Retries
Responding to a Delivery
Respond with a 2xx status code as soon as you've accepted the delivery — do the minimal work needed (verify the signature, enqueue for processing) before responding.
If your endpoint doesn't respond with a 2xx status — whether it returns an error, times out, or doesn't respond at all — the delivery is automatically retried with increasing delay between attempts, over a period of hours. You don't need to implement your own retry logic on the receiving end. If your endpoint continues to fail for an extended period, retries eventually stop and the endpoint may be disabled — keep an eye on your delivery log so you notice before that happens.
Because retries can result in the same event being delivered more than once, always process deliveries idempotently. Use the svix-id header (see Verifying Webhook Signatures) as a de-duplication key — if you've already processed a delivery with that identifier, skip it.
Testing Your Integration
Developers → Webhooks in the dashboard includes a way to send an example event to your endpoint, so you can test your signature verification and handling logic before relying on it in production.
Failed example-event deliveries sent this way are not retried, unlike real deliveries.
