Skip to main content

Retry Policy

RetryTiming
1st retry1 minute after initial failure
2nd retry5 minutes after initial failure
3rd retry30 minutes after initial failure — final attempt
Auto-disableAfter 10 consecutive failures across events, the webhook is deactivated (is_active: false, disabled_reason set).
Deduplication

Every retry delivers the stored payload as-is — event_id is stable across all attempts and is safe to use as a deduplication key per webhook endpoint. When multiple webhooks in the same workspace match an event, they all receive the same event_id, so dedupe per endpoint, not globally.

Re-enabling a disabled webhook​

Re-enable via the API — this resets failure_count and clears disabled_reason, keeping the same secret:

curl -X PATCH https://slazbvfvliieskvkjtav.supabase.co/functions/v1/api-gateway/v1/webhooks/{webhook_id} \
-H "X-SalesLobe-Key: sl_live_..." \
-H "Content-Type: application/json" \
-d '{"is_active": true}'

Inspecting deliveries​

GET /v1/webhooks returns per webhook: failure_count, disabled_reason, last_delivery_at, and last_error (HTTP status + response body snippet of the most recent failed delivery).

To verify your endpoint end-to-end, fire a signed test.ping event:

curl -X POST https://slazbvfvliieskvkjtav.supabase.co/functions/v1/api-gateway/v1/webhooks/{webhook_id}/test \
-H "X-SalesLobe-Key: sl_live_..."