Delivery, retries & DLQ
At-least-once delivery, backoff, endpoint health, and the dead-letter queue.
At-least-once delivery
SFHooks delivers each event at least once. A delivery succeeds when your endpoint returns a 2xx response. Any other response (or a timeout) is treated as a failure and retried. Because retries can re-send an event, your endpoint should be idempotent — de-duplicate using the event's id.
Retries & backoff
- Attempt 1delivered, or fails immediately
- Attempt 2after a short delay
- Attempt 3the delay grows each time…
- Up to 31 attemptsthen moved to the DLQ
Failed deliveries are retried automatically with jittered exponential backoff: each attempt waits longer than the last, up to a cap of about three hours between attempts, for up to 31 attempts. Transient endpoint outages recover on their own without any action from you.
Event statuses
- Received — ingested, but no active webhook matched it.
- Pending — queued or mid-retry, not yet delivered.
- Delivered — your endpoint returned
2xx. - Failed — retries were exhausted; moved to the dead-letter queue.
- Throttled — dropped because the org was over its monthly event limit (see Plans & billing).
Endpoint health
SFHooks tracks each webhook's recent delivery success and escalates an endpoint through health states during a sustained outage:
- Healthy → Degraded → Failing → Paused.
- A paused endpoint stops receiving new deliveries; in-flight events are sent to the dead-letter queue so they aren't lost.
Fix your endpoint, then re-enable the webhook from the Webhooks page to resume.
Dead-letter queue & replay Scale
Events that exhaust their retries land in the dead-letter queue (DLQ). On the Scale plan you can inspect failed events and replay them once the endpoint is healthy again — either a single event or a bulk replay of everything that failed. Replayed events are re-delivered through the normal signing and retry path.
A short window to recover
Log retention
Delivered and failed event records are kept for your plan's retention window (Starter / Pro / Scale retain progressively longer) and pruned automatically once a day. Older events drop off the Logs page after that window.