Retry Schedule

Each message is attempted based on the following schedule, where each period starts following the failure of the preceding attempt:

  • Immediately
  • 5 seconds
  • 5 minutes
  • 30 minutes
  • 2 hours
  • 5 hours
  • 10 hours
  • 10 hours (in addition to the previous)

If an endpoint is removed or disabled delivery attempts to the endpoint will be disabled as well.

For example, an attempt that fails three times before eventually succeeding will be completed roughly 35 minutes and 5 seconds after the first attempt.

Indicating Successful Delivery

The method to indicate that a webhook has been processed is by returning a 2xx (status code 200-299) response to the webhook message within a reasonable timeframe (15s).

Any other status code, including 3xx redirects, is treated as a failure.

Idempotency

To ensure that webhook messages are processed exactly once, the webhook message includes a unique svix-id header field.

If you receive a webhook message with an svix-id that you have already processed, you should ignore the message.