agentlyleads docs
Webhooks

Retries and failures

A delivery fails when your endpoint does not answer with a 2xx within 10 seconds: a 3xx, 4xx or 5xx status, a timeout, a TLS or DNS error, or a refused connection. Redirects are not followed, so point the endpoint at the final URL.

Retry schedule

A failed delivery is tried again, 8 attempts in all, spread over about a day:

AttemptSent after the previous one fails by
1Sent within about a minute of the event
21 minute
35 minutes
430 minutes
52 hours
65 hours
78 hours
88 hours

Deliveries go out from a job that runs every minute, so each time can be up to a minute later than shown. A receiver that is down for most of a day still gets every event once it is back. Every retry carries the same event id and the same delivery ID, signed with a fresh timestamp.

After the 8th failure the delivery is marked Failed and not tried again automatically.

When an endpoint is turned off

If 5 deliveries in a row fail all 8 attempts, the endpoint is turned off. Any delivery succeeding resets the count. You will see the endpoint marked Off in Settings, Webhooks, with the reason, and active: false with a disabledAt in the API.

While an endpoint is off:

  • New events are not queued for it.
  • If it was turned off automatically, deliveries that were still waiting to retry are marked Failed rather than sent days late when it comes back. If you turned it off yourself, they wait and go out when you turn it back on (up to 30 days).

Fix the receiver, press Send test event to check it, then turn the endpoint back on (or PATCH it with {"active": true}). That also resets the failure count. Resend anything you missed from the delivery log.

A failed test event never counts toward turning an endpoint off.

See recent deliveries

In Settings, Webhooks, open an endpoint to see its latest deliveries: event, status, the HTTP status your server answered with, the number of attempts, and the error for failures. With the API, use GET /api/v1/webhooks/{id}/deliveries, which also returns the data that was sent and can filter by status.

History is kept for 30 days.

Send an event again

Send again in the delivery log, or POST /api/v1/webhooks/{id}/deliveries/{deliveryId}/redeliver, sends that event again right away. It is sent as a new delivery with the same event id and the original createdAt, so a receiver that de-duplicates on id will treat it as the event it already has. A manual resend is a single attempt with no retries; the result is shown straight away.

On this page