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.

AttemptDelay after the previous try
1immediate
230 seconds
32 minutes
410 minutes
51 hour
66 hours
724 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

If your handler is slow and we time out, you may have processed the event already. Deduplicate on the envelope 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.