Browse documentation

WEBHOOKS

Delivery & retries

Delivery is at-least-once. Design your consumer around the event id.

Business changee.g. payment recordedEvent outboxsame DB transactionDispatchersigns each deliveryYour URLHTTPS 2xxatomicnon-2xx → retry, ≤10 attemptscommit → exactly one event · rollback → zero events · delivery is at-least-once

At-least-once: the same event may be delivered more than once, and a retry re-sends the byte-identical body and evt_ id — deduplicate on the event id. No ordering guarantee, globally or per resource; order by the envelope's created_at if sequence matters.

Respond 2xx quickly to acknowledge (the response body is ignored). 408/425/429, 5xx, and timeouts are retried with exponential backoff — roughly 30 seconds doubling up to 6 hours, at most 10 attempts over about a day — then the delivery is dead-lettered. Any other 4xx is terminal for that delivery. Delivery history for each endpoint is visible on the Developers → Webhooks page.