Skip to main content
WebhooksDelivery + replay
Webhooks

Delivery + replay

Understand retries, replay, and ordering so event-driven operations stay reliable.

Retry schedule, headers per attempt, the audit log, replay endpoint, backfill patterns, ordering caveats.

Aly attempts delivery, retries on failure, logs every attempt, and offers replay for misses. This page is the contract for what to expect at the wire and how to react when something goes wrong.

Success criterion

A 2xx status within 5 seconds is treated as delivered. Anything else — non-2xx, timeout, TLS failure, DNS failure — counts as a failure and triggers retry.

Retry schedule

Exponential backoff with jitter, capped at ~24 attempts over ~72 hours:

AttemptApprox delay
1immediate
2~30 s
3~2 min
4~10 min
5~30 min
6+~1 h, then ~2 h, then capped at ~4 h until 72 h total

After the final attempt the delivery is marked failed and won't retry automatically. Use replay.

Headers on every attempt

http
POST /aly/webhooks HTTP/1.1Content-Type: application/jsonX-Aly-Delivery-Id: del_3f...        # unique per HTTP attemptX-Aly-Event-Id: evt_8a1...          # stable across retries + replaysX-Aly-Event-Type: order.fulfilledX-Aly-Attempt: 3X-Aly-Timestamp: 1748112900X-Aly-Signature: t=1748112900,v1=4f3c...
event.id is the dedupe key
X-Aly-Delivery-Id changes on every attempt and replay.X-Aly-Event-Id is stable for the logical event. Dedupe on the event id; ignore the delivery id (except for logging).

Audit log

Every attempt is recorded with timestamp, status code, response body (first 4KB), and latency. View from the dashboard or via the REST/CLI/MCP audit endpoints.

bash
curl "https://aly.store/api/storefront/v1/merchant/webhooks/wh_8c.../deliveries?status=failed&limit=25" \  -H "Authorization: Bearer aly_..."

Replay

bash
curl -X POST "https://aly.store/api/storefront/v1/merchant/webhooks/wh_8c.../deliveries/del_3f.../replay" \  -H "Authorization: Bearer aly_..."

Replay queues a fresh delivery with the same event.id. Useful for catching up after a receiver outage, or for confirming a fix.

Backfill from event log

Listing deliveries returns the source event.id too. Combined with the event index, you can replay every event of a given type in a window:

bash
aly-store-cli webhooks deliveries list wh_8c... \  --event-type order.created \  --since 1h --json \  | jq -r '.[].id' \  | xargs -I{} aly-store-cli webhooks deliveries replay wh_8c... {}

Ordering

Aly does not guarantee delivery order. A retried earlier event can arrive after a successful later event. Use event.created_at+ the resource id to reconcile state. For order state machines, treat each event as “at least one of these transitions has happened” rather than “this is the current state.”

Endpoint health

Continuous failures over a 48-hour window pause an endpoint automatically and email the workspace owner. Resume by fixing the receiver and toggling active back on (or replaying failed deliveries from the audit log).

Updated

Was this page helpful?