Webhook Retry Budgets: Backoff, Jitter and Delivery Deadlines

A retry count does not describe a delivery deadline. The waits and timeouts can consume the budget long before the final attempt. Model the timing, then compare it with the provider policy.

Reviewed 19 October 2026. Examples are synthetic; no customer data or production outcomes.

Open the free Webhook Retry Planner

Start with evidence

  1. Count total attempts, including the first. Set the timeout for each attempt and a delivery time budget in seconds.
  2. Use the failure policy from your provider or integration. Do not assume that every status or network failure should be retried.
  3. Check duplicate handling and a terminal failure path before replaying an event. Use synthetic events in an authorized test environment, not real customer operations.

Worked examples

These examples exercise the current tool logic. Load the matching case on the tool page to reproduce its result. Downloads contain only the fixed synthetic example, never your pasted input.

Six attempts, generous budget

Maximum 215 seconds; expected 137.5 seconds; all 6 attempts fit the 600-second budget.

Example JSON
{
  "attempts": 6,
  "initialDelay": 5,
  "multiplier": 2,
  "maxDelay": 300,
  "timeout": 10,
  "budget": 600,
  "jitter": "full"
}

Download six attempts, generous budget JSON

Six attempts, 65-second budget

Maximum 215 seconds; only 3 of 6 attempts fit the 65-second budget.

Example JSON
{
  "attempts": 6,
  "initialDelay": 5,
  "multiplier": 2,
  "maxDelay": 300,
  "timeout": 10,
  "budget": 65,
  "jitter": "full"
}

Download six attempts, 65-second budget JSON

Fixed waits with a 30-second cap

Maximum and expected duration 155 seconds; 5 of 6 attempts fit the 120-second budget.

Example JSON
{
  "attempts": 6,
  "initialDelay": 5,
  "multiplier": 2,
  "maxDelay": 30,
  "timeout": 10,
  "budget": 120,
  "jitter": "none"
}

Download fixed waits with a 30-second cap JSON

Diagnostic decisions

Why is six attempts 215 seconds?
With a 10-second timeout on each attempt, the six attempts consume 60 seconds. The capped maximum waits are 5, 10, 20, 40 and 80 seconds: another 155 seconds. Maximum modeled duration is 215 seconds.
What changes with full jitter?
This planner uses a uniform wait from zero to each capped delay. Expected total wait is half the sum of those caps, so expected duration is 60 + 77.5 = 137.5 seconds. That is a mean, not a percentile, deadline or delivery guarantee.
What does a 65-second budget allow?
The first three maximum finishes are 10, 25 and 45 seconds; the fourth is 75 seconds. Only three attempts fit that modeled budget, even though a favorable jitter sample could finish sooner.

What this does not establish

All attempts are serial, unsuccessful and consume their full timeout. A wait starts after the previous failure. The model excludes queue latency, network overhead, concurrency, provider retry rules and Retry-After. HTTP Retry-After can express a date or a delay in seconds; account for it separately when the integration uses it. The exported JSON is a planning record, not a provider configuration. This tool sends no webhooks and does not store settings.

Optional analytics records sanitized page paths and fixed action labels after consent. The tools keep your input local. An action count is not a person, installation, resolved incident or sale.

Primary references

Continue with KnownFix