Guides
Automatic retry policy
The delivered retry ladder, jitter, timeouts, terminal responses, and the 24-hour ceiling.
On this page
DeadHook retries eligible failures with bounded attempts and a hard age ceiling.
Default policy
- Maximum attempts: 8
- Maximum retry age: 24 hours from the Delivery
- Delays after failed attempts: 15 s, 60 s, 300 s, 900 s, 3600 s, 14400 s, 43200 s
- Jitter: approximately ±20%
The delays are the base schedule. A Destination's Retry-After header can extend or shorten a wait
within policy limits; it cannot make the ladder infinite.
After the eighth failed attempt, after the 24-hour ceiling, or on a terminal policy failure, the
Delivery enters dead_letter.
Which failures retry
Retryable:
- timeout;
- connection or network failure;
- TLS transport failure (not certificate validation);
- HTTP
408,409,425,429,500–599.
Terminal:
- other
4xx; 3xx(redirects are not followed);- blocked or private Destination policy;
- invalid TLS certificate;
- expired or purged payload;
- missing signing secret.
What a retry is
A retry creates a fresh outbound request. It reuses the Delivery and the stable webhook-id, but
generates a new webhook-timestamp and signature. A Destination can therefore see the same Event
body more than once. Deduplicate by webhook-id and your business key.
Retries are at least once, never exactly once. A timeout does not prove the Destination did not process the request.
Retry and Destination state
If a Destination is disabled while a retry is waiting, DeadHook re-checks its state and does not bypass the Delivery deadline. Re-enabling a Destination does not reset the attempt count or age.