Skip to content

Log and retries

Every request to your server is a delivery: Cartflox keeps what was sent, when, the response received, and retries until your server responds 2xx.

Your server has 10 seconds to respond. Without a 2xx response, the delivery is retried on this schedule, 10 attempts over roughly 72 hours:

Attempt Delay after the previous one
1 immediate
2 1 minute
3 5 minutes
4 15 minutes
5 1 hour
6 3 hours
7 6 hours
8 12 hours
9 24 hours
10 24 hours

After the last attempt, the delivery is marked failed and a notification shows up in your dashboard. The address and the signing key are read again at every attempt: fix your address in API and Logs and the next attempt picks it up.

Each request carries two headers that help with deduplication: X-Afriflow-Event (the event name) and X-Afriflow-Delivery (the delivery identifier, identical from one attempt to the next). Idempotent processing keyed on X-Afriflow-Delivery, or on data.id and data.status, protects you from duplicates.

In API and Logs, the “Webhook deliveries” block lists the last 50 requests with the response received. “Resend” fires immediately, with a fresh signature, to your current address, whatever the state of the delivery.

GET/v1/webhooks/deliveriesList deliveries (50 by default, 200 at most)
GET/v1/webhooks/deliveries/{id}Read a delivery
POST/v1/webhooks/deliveries/{id}/resendResend a delivery

List filters: transaction_id, status (pending, delivered, failed), event, limit. A test key only sees test deliveries.

Deliveries of a transaction
curl "https://cartflox.com/api/v1/webhooks/deliveries?transaction_id=cmf3k2p1x0001abcd9e8f7g6h" \
-H "Authorization: Bearer af_live_sec_YOUR_KEY"
200 OK
{
"object": "list",
"data": [
{
"id": "cmu8d4e5f0003abc",
"object": "webhook.delivery",
"event": "payment.completed",
"url": "https://mystore.com/webhooks/cartflox",
"status": "delivered",
"attempts": 2,
"max_attempts": 10,
"next_attempt_at": null,
"last_status_code": 200,
"last_error": null,
"response_ms": 412,
"transaction_id": "cmf3k2p1x0001abcd9e8f7g6h",
"transfer_id": null,
"livemode": true,
"created_at": "2026-09-19T08:00:00.000Z",
"delivered_at": "2026-09-19T08:01:03.000Z"
}
],
"count": 1
}
Resend
curl -X POST https://cartflox.com/api/v1/webhooks/deliveries/cmu8d4e5f0003abc/resend \
-H "Authorization: Bearer af_live_sec_YOUR_KEY"

The response is the updated delivery. Limit: 30 resends per minute per workspace.

Field Description
status pending (another attempt is scheduled), delivered (2xx response received), failed (given up after the last attempt)
attempts / max_attempts Attempts made, and the cap
next_attempt_at Next automatic attempt, null otherwise
last_status_code / last_error Your server’s last response, or the error met (timeout, network)
livemode false for a test event