Webhook Delivery Log
See every outbound webhook Cheqpoint sent — delivery status, HTTP response codes, attempt count, and timestamps.
What is the Webhook Delivery Log?Growth+
Every time Cheqpoint fires a webhook — when a request is submitted, approved, rejected, or an SLA is breached — the delivery attempt is logged. The Webhook Delivery Log in Settings → Webhooks gives you a table view of every attempt: what was sent, whether it succeeded, and how many retries were needed.
This is particularly useful when your integration is failing silently — the log surfaces the HTTP response code and timestamp so you can pinpoint the problem without combing through server logs.
What each row shows
| Column | What it means |
|---|---|
| Date | When the delivery attempt was made. |
| Type | The event type — e.g. request.submitted, request.approved, sla.breached. |
| Status | HTTP response code from your server. 2xx = success, 4xx/5xx = failure. |
| URL | The target URL the webhook was sent to. |
| Attempts | How many times Cheqpoint tried to deliver this event. 1 = delivered first try, 2+ = retries were needed. |
Retry behaviour
When a webhook fails (non-2xx response or no response), Cheqpoint retries automatically with exponential back-off. The number of attempts depends on your plan:
| Plan | Max attempts | Delivery log |
|---|---|---|
| Free | 1 (no retry) | — |
| Starter | 1 (no retry) | — |
| Growth | 3 | Yes |
| Business | 5 | Yes |
| Enterprise | 5 | Yes |
Retries run every 5 minutes via the background job. A delivery is marked permanently failed after the maximum attempts are exhausted.
SDK: retryable flag
When polling for a decision, the approval status endpoint returns an optional retryable field. If a request was rejected because of a timeout or SLA breach (not because a human declined it), retryable is true. This signals to your SDK integration that it's safe to re-submit the request rather than treating it as a final human rejection.
{
"id": "req_abc123",
"status": "REJECTED",
"retryable": true, // timeout or SLA breach — safe to resubmit
"decisionReasonCode": "sla_breached",
"decidedAt": "2026-07-02T09:31:00Z"
}retryable is false (or absent) when a human explicitly rejected the request — in that case, re-submitting is the wrong behaviour.
Troubleshooting common failures
Status 401 / 403
Your receiving endpoint requires authentication. Add a shared secret as a query param or header and validate it server-side.
Status 500 from your server
Your webhook handler is throwing. Check your server logs for the payload Cheqpoint sent — it's available in the Developer → Request Logs page.
No attempts logged at all
The request may not have had a callbackUrl / webhookUrl set, or outbound webhooks aren't configured. Check Integrations → your integration → Notification URLs.
Attempts = 1, status 200, but my app didn't process it
A 200 response means your server received and acknowledged the payload. The processing failure is downstream — check your own application logs.