Retries and replay▾
Retries and replay
The retry schedule, when an endpoint is disabled, and how to replay missed events.
A delivery is successful when your endpoint answers 2xx within 5 seconds. Anything else is retried with exponential backoff.
| Attempt | Delay after the previous try |
|---|---|
| 1 | immediate |
| 2 | 30 seconds |
| 3 | 2 minutes |
| 4 | 10 minutes |
| 5 | 1 hour |
| 6 | 6 hours |
| 7 | 24 hours |
After the seventh failure the event is dropped. If an endpoint fails every delivery for 72 consecutive hours it is set to disabled and we email the account owner.
Retries mean duplicates
id — handlers must be idempotent.Ordering
Events are not guaranteed to arrive in order. A message.read can land before its message.delivered if the first delivery attempt was retried. Compare created_at and treat status as a monotonic ladder: accepted → sent → delivered → read, never downgrading.
Replaying
Dashboard → Webhooks → an endpoint → Deliveries lists the last 30 days with request, response and status. Any delivery can be replayed individually, or filtered and replayed in bulk after an outage.