Webhooks
Retries & idempotency
Deliveries are retried automatically, and the same event may reach you more than once, so make your handler idempotent.
Retries
A failed delivery — a non-2xx response or no response at all — is retried with exponential backoff up to a fixed number of attempts, then marked failed. You can redeliver any past event from your store's Developers tab.
Idempotency
Retries and redeliveries reuse the same event id (X-Webhook-Id / payload.id). Dedupe on it and make your handler safe to run more than once for the same event.
Assume every event can arrive multiple times. Key your side effects on the event id so duplicates are no-ops.