Skip to main content

Delivery Status Reference

Every webhook event processed by Zen Mesh progresses through a delivery state machine. This reference documents each status, its transitions, and how to inspect delivery state.

Delivery State Machine

pending → delivering → delivered
↓ ↓
↓ failed → delivering (retry)
↓ ↓
↓ exhausted → DLQ/replaying → delivered

(dropped by filter)

Status Reference

StatusDescriptionNext State
pendingEvent received and queued for delivery. The event is waiting for a delivery slot.delivering
deliveringDelivery attempt in flight. Zen Mesh has sent the event to the destination and is waiting for a response.delivered, failed
deliveredSuccessfully delivered. The destination acknowledged the event with a 2xx response.Terminal (success)
failedDelivery attempt failed. The destination returned an error (4xx/5xx) or did not respond within the timeout. The event is queued for retry.delivering (retry)
exhaustedAll retry attempts have been exhausted. The event is moved to the Dead Letter Queue.Terminal (DLQ)
replayingEvent has been re-queued from the DLQ for reprocessing.pending

Delivery Attempts

Each delivery produces a history of attempts. An attempt record includes:

FieldDescription
HTTP statusThe HTTP status code returned by the destination (or 0 if connection failed)
Response bodyThe response body from the destination (truncated)
TimestampWhen the attempt was made
DurationHow long the attempt took (milliseconds)
ErrorConnection error, timeout, or TLS error details if applicable

Inspect Delivery Status

curl -H "Authorization: Bearer $ZEN_API_KEY" \
https://api.zen-mesh.io/v1/deliveries/dlv_abc123

View Attempt History

curl -H "Authorization: Bearer $ZEN_API_KEY" \
https://api.zen-mesh.io/v1/deliveries/dlv_abc123/attempts

Query by Status

# List all exhausted events (currently in DLQ)
curl -H "Authorization: Bearer $ZEN_API_KEY" \
https://api.zen-mesh.io/v1/deliveries?status=exhausted&limit=20

# List recent failures
curl -H "Authorization: Bearer $ZEN_API_KEY" \
https://api.zen-mesh.io/v1/deliveries?status=failed&since=1h

Retry Policy

Failed deliveries are retried with exponential backoff:

AttemptDelay
1Immediate
2~10 seconds
3~1 minute
4~10 minutes
5~1 hour

After 5 failed attempts, the event moves to exhausted status and enters the Dead Letter Queue.

Dead Letter Queue

Events in the DLQ (status exhausted) are retained for 7 days by default. DLQ events can be replayed manually:

curl -X POST -H "Authorization: Bearer $ZEN_API_KEY" \
https://api.zen-mesh.io/v1/deliveries/dlv_abc123/replay

See Replay API for replay details.

Operational Limits

LimitValue
Max retry attempts5
DLQ retention7 days (configurable)
Attempt history retention30 days
Rate limit100 req/min per tenant (burst 200)