trigger_type: "webhook").
This surface is inbound-only — deliveries coming into GetDialed. Outbound webhooks (a flow calling an external URL) are a separate catalog action, not receiver machinery.
How inbound webhooks work
- An admin creates a webhook config (
POST /flows/webhooks) bound to an active Definition. GetDialed mints a signing secret and returns it once. - GetDialed returns a
receive_url— a relative path/flows/webhooks/{slug}/{webhook_id}. - Your external sender computes an HMAC-SHA256 signature over each delivery body and POSTs to the public receive URL.
- The receiver verifies the signature on the raw bytes, then starts a batch with the normalized payload as
input_data.
Step 1 — Create the webhook
TheX-API-Key header is admin-equivalent; a Clerk JWT needs the admin role. Only provider: "standard" (Standard Webhooks, HMAC-SHA256) and mode: "trigger" are implemented today — other values are rejected with 422.
201 response carries two show-once fields, signing_secret and receive_url:
Step 2 — Build the receive URL
Thereceive_url is a relative path with no host and no version segment — it already carries its flows group segment. Prepend https://api.getdialed.ai/v1 — host plus version only — to get the address your sender calls:
https://api.getdialed.ai/v1/flows/webhooks/acme/8a9c86a8b78c48d3a3e5e00ad0ed5b96. Note the base stops at /v1: repeating the flows group segment yields /v1/flows/flows/webhooks/..., and every delivery to that address 404s. The webhook_id is a 128-bit opaque hex value, so the URL is unguessable by construction. The tenant is identified by the slug; the webhook by the webhook_id.
Step 3 — Sign and send a delivery
The receiver carries noX-API-Key/Authorization requirement — the trust boundary is the HMAC-SHA256 signature over the raw request body, verified per the Standard Webhooks spec before the body is parsed. Every delivery must carry three headers:
The
standardwebhooks library computes the signature for you — never hand-roll the HMAC.
202 — batch creation happens asynchronously after the ack.
Step 4 — Confirm the delivery dispatched
The receiver’s202 only means “accepted.” Check the delivery log to see whether it started a batch:
received → dispatched (with the created batch_id) or failed (with an error).
Next steps
Webhooks
The full object reference, signing spec, and receiver semantics.
Batches and executions
Every verified delivery starts a batch — track it end to end.