Retry Schedule
Svix attempts to deliver each webhook message based on a retry schedule with exponential backoff.
The schedule
Each message is attempted based on the following schedule, where each period is started 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 delivered roughly 35 minutes and 5 seconds following the first attempt.
Indicating successful delivery
The way 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 time-frame (15s with Svix). Any other status code, including 3xx
redirects are treated as failures.
Failed delivery handling
After the conclusion of the above attempts the message will be marked as Failed
for this endpoint, and you will get a webhook of type message.attempt.exhausted
notifying you of this error.
Disabling failing endpoints
If all attempts to a specific endpoint fail for a period of 5 days, the endpoint will be disabled and an operational webhook (EndpointDisabledEvent
) will be sent to your account.
The clock only starts after multiple deliveries failed within a 24 hour span, with at least 12 hours difference between the first and the last failure.
You can disable this behavior from the Environment settings page on the dashboard.
Manual retries
Your customers can also use the application portal to manually retry each message at any time, or automatically retry ("Recover") all failed messages starting from a given date.
Alternatively, you can use the respective APIs:
- Resend webhook for retrying a single message.
- Resend failed webhooks for the failed messages recovery.