2xx within 20 seconds. Anything else is handled like this:| Response | What DealMachine does |
2xx | Delivered |
408, 429, 5xx, timeout, connection error | Retried on the schedule below |
410 Gone | The webhook is disabled right away; nothing more is sent |
Any other 4xx | Not retried; the delivery is marked abandoned |
abandoned. Later batches for the same webhook wait too, so your endpoint never sees events out of order.skipped. Re-enable it with PATCH /v1/webhooks/{id} { "is_active": true } (or dm webhooks update <id> --enable), which clears the failure count; then resend anything you missed with POST /v1/webhooks/{id}/deliveries/all/redeliver?since=....GET /v1/webhooks/{id}/deliveries lists every attempt for 30 days: the event, status (pending, processing, delivered, failed, abandoned, skipped), attempt count, the HTTP status and time of the last attempt, a short excerpt of your response, and any error. GET /v1/webhooks/{id} summarizes it: consecutive failures, when it started failing, last success, last failure.POST /v1/webhooks/{id}/deliveries/{delivery_id}/redeliver queues one delivery again with the same event id, so an idempotent consumer will ignore it if it already arrived. To replay a window (after an outage on your side), use delivery_id=all with ?since=<ISO time>.