linear or exponential backoff retry strategy.
The retry behavior on this page applies to subscriptions using the at least once delivery mode (the default). A subscription set to at most once treats any HTTP response as final and only retries when there is no response at all, such as a network error.
Comparing Retry Algorithms for Webhooks
Retry algorithms aren’t specific to webhooks, rather they’re a general technique used to solve various problems in distributed systems. But what would be appropriate retry configuration for a webhook provider? Most providers offer retries with exponential backoff. Let’s assess three retry strategies for webhooksLinear RetryExponential BackoffExponential Backoff with capped duration
- Requirement 1: The first 5 retries should happen in less than 30 minutes.
- Requirement 2: The maximum retry should not exceed 24 hours.
With the following parameters
- Base: 20 seconds
- Jitter: +/-10%
- Delay Growth:
delaySeconds * 2^attempt - Retry Limit: 20
- Delay Growth: The delay doubles with each retry attempt, allowing for a rapid increase in wait time for successive failures (
delaySeconds * 2^attempt). - Capping: The new strategy incorporates a default (but configurable) cap of 7200 seconds (
maxRetrySeconds) to prevent indefinitely long wait times, thus ensuring the system remains responsive and efficient. - Jitter: A
jittervalue is added to each calculated wait time, providing an additional layer of randomness that further helps distribute the retry attempts over time.
The Results

We didn’t include the pure exponential backoff strategy above because the chart looks ridiculous compared to the rest.

Retry limits
Convoy honors the retry limit you configure on a subscription or project. Internally, the retry queue’s auto-retry budget is kept in sync with that configured limit, so deliveries set to retry more than the internal default still keep retrying up to your configured count instead of stopping early.Appendix
- These numbers aren’t a hard and fast rule; rather, they’re a framework for reasoning about the latency requirements for your webhooks and tuning them accordingly. This would optimize your entire delivery process and save $$$ in compute. Feel free to use our script - compare-retries.
🇺🇸 US Region
Access Convoy Cloud US region
🇪🇺 EU Region
Access Convoy Cloud EU region