Endpoints go down. We expect that and retry failed deliveries automatically, but designing your handler with retries in mind keeps your data complete.
When a delivery is considered failed
Any response that is not a 2xx, or that does not arrive within the timeout, counts as a failure and triggers a retry.
The retry schedule
We retry with exponential backoff over roughly a day — quick attempts at first, then progressively longer gaps. After the final attempt the delivery is marked failed and surfaced in the dashboard.
Designing for retries
- Make your handler idempotent by deduplicating on the event id.
- Acknowledge fast, then process asynchronously, so a slow downstream system does not cause retries.
- Use the Replay button in the dashboard to re-send events you missed during an outage.
If a whole endpoint is failing repeatedly, we may pause it and email you. Fix the endpoint, then replay the backlog from the dashboard.
Was this article helpful?
Still stuck? Our team is happy to help.