> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sendbaze.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Retries, ordering and the delivery log

> What happens when your endpoint is slow or down, how to replay a delivery, and how to read the log.

## Retries

Respond with any `2xx` within 10 seconds. Anything else, a timeout or a connection error is retried with backoff:

| Attempt | Delay after the previous one |
| - | - |
| 2 | 1 minute |
| 3 | 5 minutes |
| 4 | 30 minutes |
| 5 | 2 hours |
| 6 | 24 hours |

After the last attempt the delivery is marked `failed`. An endpoint whose every delivery fails for 3 days is disabled and the organisation owners are emailed; re-enable it from the dashboard or with `PATCH /v1/webhooks/{id}` once it is fixed.

## Ordering and duplicates

Events can arrive out of order (a `delivered` can overtake a `sent` after a retry) and more than once. Two habits make handlers robust:

* **De-duplicate** on `Sendbaze-Event-Id` (also `id` in the body). Store processed ids for a day or two.
* **Order** on `occurredAt`, not on arrival time. A later event with an earlier `occurredAt` should not move a message backwards in your records.

## The delivery log

**Webhooks** in the dashboard, and `GET /v1/webhooks/{id}/deliveries`, list every attempt with the event type, status, attempt count, your response status, the first 1,000 characters of the response body, the transport error if any and the duration. Filter by `status=pending|succeeded|failed`.

```json theme={"dark"}
{
  "id": "whd_01j9x7m3p5q7r9s1t3u5v7w9x1",
  "endpointId": "whk_01j9x7k2r4m8q3v5n6b7c8d9e0",
  "eventId": "evt_01j9x7m3p5q7r9s1t3u5v7w9x1",
  "eventType": "email.bounced",
  "status": "failed",
  "attempts": 6,
  "nextAttemptAt": null,
  "lastAttemptAt": "2026-09-23T08:14:04.201Z",
  "responseStatus": 500,
  "responseBody": "Internal Server Error",
  "error": null,
  "durationMs": 212,
  "replayOfId": null,
  "createdAt": "2026-09-22T08:14:04.201Z"
}
```

## Replay

Press **Replay** on a delivery, or call `POST /v1/webhooks/{id}/deliveries/{deliveryId}/replay`, to send the same event again as a new delivery with a fresh signature and timestamp. Use it after fixing a bug in your handler; the new delivery records `replayOfId`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.