Skip to main content

Receive a delivery on a self-managed webhook

POST 

/webhooks/w/:token

The one ingestion receiver (ADR-0012). {token} is the unguessable ingest token minted by create_webhook / rotate_webhook; it routes the delivery to exactly one webhook, owned by one endpoint. The webhook's source type fixes how the delivery is verified (ADR-0003):

  • Signed source types (github, gitea, stripe, slack, cairn): the raw request body is read and the provider's signature is verified before any parsing, in constant time, against the secret switchboard minted. A missing, malformed, or failing signature returns 401 and the payload is NOT persisted. Stripe, Slack, and Cairn additionally enforce a timestamp freshness window (default 300s) to blunt replay.
  • generic and telemetry (trust_mode=token): the token in the URL authenticates the caller; the body is not verified, and the event persists with verified=false.

On success the event is persisted, routing rules pick a queue (or drop the delivery), and one todo is created per target endpoint — the webhook's owner plus any route fan-out (ADR-0022). A redelivery with the same delivery id (or body) collapses onto the existing todo.

Request​

Responses​

Accepted. The body lists the todos the delivery produced, or says it was dropped.