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:
| Attempt | Approx delay |
|---|---|
| 1 | immediate |
| 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
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...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.
curl "https://aly.store/api/storefront/v1/merchant/webhooks/wh_8c.../deliveries?status=failed&limit=25" \ -H "Authorization: Bearer aly_..."Replay
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:
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).
Was this page helpful?