Start here
Core concepts
Organizations, Projects, Sources, Destinations, Events, Deliveries and DLQ.
On this page
| Concept | Meaning |
|---|---|
| Organization | The account and billing boundary. Quotas are counted per Organization. |
| Project | A resource filter inside an Organization. It groups Sources, Destinations, Events, and metrics. |
| Source | A named ingestion configuration with an authentication method, public locator, and signing credential. |
| Destination | A public HTTPS endpoint attached to a Source. DeadHook signs each outbound attempt with the Destination's signing secret. |
| Event | The durable record of one authenticated inbound request, including the raw payload and selected headers. |
| Delivery | The independent obligation to send one Event to one Destination. A single Event may have several Deliveries. |
| Attempt | One outbound HTTP request belonging to a Delivery, with status, duration, result, and optional captured response. |
| Dead Letter Queue (DLQ) | The view of Deliveries that exhausted retries or reached a terminal policy failure and are eligible for manual replay. |
Scope relationships
Organization
├── Project (filter)
├── Source ── Event ── Delivery ── Attempt
└── Destination ── Delivery
- An Event belongs to exactly one Organization and one Source.
- A Delivery joins one Event to one Destination.
- A Delivery's attempts are ordered by attempt number.
- A Replay is a new dispatch cycle over the same Delivery, with its own audit record.
- A Stop request is attached to one Delivery and does not erase its history.
Authentication is not the same as authorization
- Ingress authentication proves the provider sent the request. It uses the Source authentication method.
- Dashboard access proves a signed-in member may view or manage the Organization. Their role determines which actions are available.
- Organization isolation keeps one Organization's data separate from another's.
A Source public locator does not grant dashboard access. A dashboard login does not authenticate an ingestion request.
Delivery is at least once
DeadHook may deliver an Event more than once. A network timeout can hide a 2xx, a delivery
interruption can leave an ambiguous result, and a replay is an explicit second dispatch.
Consumers must be idempotent. Use the stable webhook-id header (msg_<delivery-reference>) and your own
business key to deduplicate.
The Event status is an aggregate
An Event with multiple Deliveries can be partial (some delivered, some failed) or in_progress.
Inspect each Destination's Delivery separately rather than assuming a single boolean.