Skip to content

Retries and failures

What happens when your receiver is down, slow, or says no.

Answer 2xx as soon as you have the event, then do the work. You have ten seconds; anything slower is recorded as a timeout and retried, which for a slow handler means the same event processed twice. Any status outside 2xx is a failure, and a redirect is a failure too — deliveries do not follow them.

Retried

A 5xx, a 429, a 408, a timeout, a refused connection, a DNS miss or a TLS problem — all of them are a receiver that may well be fine in a minute. Up to six attempts, backing off 10s, 20s, 40s, 80s then 160s.

Not retried

Most 4xx — a 404 means the route does not exist and a 401 means our signature was not accepted, and neither fixes itself. A redirect and a URL the address guard now refuses are terminal for the same reason. These fail on the first attempt rather than being retried at your server for minutes.

An endpoint that keeps failing is switched off

Ten consecutive failures and Localoy disables the endpoint, so an abandoned receiver is not retried forever. The dashboard says it was us and not you. Any single success — including a test event — resets the count, so a merely flaky receiver is never disabled. Fix it, send a test to confirm, then re-enable.

Every attempt is recorded under Webhook Deliveries, with the exact body that was sent, the status your receiver returned and how long it took. Replay re-sends a past delivery once your server is fixed; it carries the ORIGINAL event id, so a receiver that did process it the first time should recognise the duplicate and drop it.