Retries
Respond with any2xx within 10 seconds. Anything else, a timeout or a connection error is retried with backoff:
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 (adelivered can overtake a sent after a retry) and more than once. Two habits make handlers robust:
- De-duplicate on
Sendbaze-Event-Id(alsoidin the body). Store processed ids for a day or two. - Order on
occurredAt, not on arrival time. A later event with an earlieroccurredAtshould not move a message backwards in your records.
The delivery log
Webhooks in the dashboard, andGET /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.
Replay
Press Replay on a delivery, or callPOST /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.