Webhooks
Delivery and retries
Atlas delivers each event to your endpoint and retries automatically when a delivery fails. This page covers what counts as success, the fixed retry schedule, and how to inspect, replay, and own your webhooks.
Success and failure
A delivery succeeds when your endpoint returns any 2xx status within 10 seconds. Anything else is a failure: a non-2xx status, a timeout (each attempt has its own 10 second timeout), or a network or connection error. Failures are retried on the schedule below.
Retry ladder
On failure Atlas retries automatically on a fixed schedule. There is 1 initial attempt plus 5 retries, for 6 attempts in total. Each delay is measured from the initial attempt time.
| Attempt | When |
|---|---|
| Initial | immediately |
| Retry 1 | 60 seconds after the initial attempt |
| Retry 2 | 5 minutes later |
| Retry 3 | 30 minutes later |
| Retry 4 | 2 hours later |
| Retry 5 | 12 hours later |
After the 6th attempt (Retry 5) fails, the delivery is abandoned and an alert is recorded.
Make your receiver idempotent
id from the body (or the x-atlas-delivery header) so reprocessing the same event is safe.Delivery history
Every attempt is recorded. You can inspect deliveries for a single webhook or across the whole workspace. Each record shows the attempt number, status code, error kind, and timing.
GET /v1/webhooks/{id}/deliveries?limit=50 # history for one webhook
GET /v1/webhook-deliveries?limit=50 # workspace-wide feed across all webhooksThe first endpoint returns the history for one webhook; the second is a workspace-wide feed across all webhooks.
Replay and test
You can re-send past deliveries and send synthetic test events to confirm connectivity.
POST /v1/webhooks/{id}/deliveries/{deliveryId}/replay # re-send a past delivery
POST /v1/webhooks/{id}/test-delivery # send a synthetic webhook.test eventUse replay to re-send a past delivery, for example after fixing your receiver. Use test-delivery to send a synthetic webhook.test event and confirm your endpoint is reachable.
Ownership
Webhooks can carry an owner label and an escalation contact so failures reach the right person. When creating or updating a webhook you can set ownerLabel, escalationEmail, and escalationNote. Set these so nobody has to guess who owns a failing endpoint when an alert fires.