Guides
Delivery and attempt lifecycle
Follow an Event from durable acceptance through attempts, retries, and terminal states.
On this page
From request to Delivery
- The Source is resolved and checked.
- The raw body is size-limited and retained.
- The inbound signature is verified over the original bytes.
- DeadHook records the Event and creates one Delivery for each eligible Destination.
- DeadHook returns
202 accepted(or200 duplicate).
If DeadHook cannot record the Event, ingestion returns 503 and no accepted Event exists. There is no
"accepted but not queued" success path.
Delivery states
| State | Meaning |
|---|---|
pending / retry_scheduled |
Waiting for its first or next attempt. |
delivered |
A Destination returned a success response (2xx). |
dead_letter |
Retries exhausted or a terminal/policy failure ended the Delivery. |
stopped / stop-pending |
Automatic retries were stopped. An in-flight request may still finish. |
canceled / expired |
The Event or Delivery can no longer be sent under policy or retention. |
A Delivery's status is not the same as the Event's aggregate status.
Attempt history
Each attempt records:
- attempt number;
- result such as success, HTTP failure, timeout, network error, or policy blocked;
- HTTP status when a response was received;
- duration and error code;
- whether a response snippet was captured and when it expires;
- start and completion timestamps.
Retryable vs terminal responses
| Destination response | Result |
|---|---|
2xx |
Delivered. |
3xx |
Terminal failure; redirects are not followed. |
408, 409, 425, 429, 5xx |
Retryable, subject to attempt and time limits. |
Other 4xx |
Terminal failure. Fix the Destination and use replay if appropriate. |
| Timeout / network / TLS | Timeout and network failures retry; certificate or policy failures are terminal. |
A 429 or Retry-After response is respected within policy bounds; it does not create an unlimited
retry loop.
Timeouts
Destination timeout is 1–30 seconds (default 10 seconds). DeadHook does not hold a connection open beyond the configured timeout.
Success is local to DeadHook
A delivered state means DeadHook received a 2xx from the Destination. It does not prove the
Destination committed its business transaction. Consumers must be idempotent and should return success
only after their own durable write.