Skip to main content
Stableyard retries a failed delivery with exponential backoff until it succeeds or reaches the deployment’s attempt limit, then abandons it. Failed and abandoned deliveries stay visible for audit and can be requeued once the endpoint is fixed.

How each response is handled

Replaying a request the endpoint has already rejected as invalid is not expected to succeed, which is why other 4xx responses are not retried. Respond promptly: an attempt that gets no response in time counts as a network failure.

Backoff and the attempt limit

The wait after each failed attempt doubles, from about 30 seconds to a ceiling of one hour: A Retry-After header on a retryable response, in seconds or as an HTTP date, replaces the computed wait and is honoured up to the same one-hour ceiling. The attempt limit is per deployment. Read capabilities.webhooks.deliveryPolicy.maxAttempts from GET /v2/partners/config rather than assuming a number:
When an attempt fails and the limit is reached, the delivery is abandoned.

Delivery statuses

A retry is the same delivery. It keeps the x-stableyard-delivery ID, the x-stableyard-event-id and the body; only x-stableyard-timestamp and the signature are new. If one endpoint succeeds while another subscribed to the same event fails, only the failing endpoint is retried.

Endpoint restrictions

Endpoints must be HTTPS with no embedded credentials. Redirects are not followed, and destinations that resolve to local, private or metadata addresses are rejected outright, so a tunnel to a laptop will not receive deliveries in a deployed environment. These rules are checked when you create the endpoint and again before every attempt.

Inspect deliveries

Deliveries are listed most recently updated first. limit is up to 100, default 50; pass nextCursor as cursor for the next page. Each delivery also carries the requestBody that was sent, the start of your endpoint’s responseBody, nextAttemptAt while a retry is scheduled, and deliveredAt once delivered.

Requeue a delivery

Once the endpoint is fixed, requeue a failed or abandoned delivery from the Partner Dashboard, or from your backend:
The same delivery is sent again with its attempt count reset, so it gets the full attempt budget. Endpoints that already received the event are not sent it again. Requeueing only helps if someone is watching, so alert on abandonment rather than on the first failure.

Endpoint changes and pending deliveries

Webhooks overview

Endpoints, delivery guarantees and headers.

Verifying signatures

Retries are re-signed; verify each one the same way.

Event catalog

Every partner event and what it means.

Reconciliation

Sweep on your own schedule so a lost event never loses money.