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.
Automatic retries
Section titled “Automatic retries”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.
Resend manually
Section titled “Resend manually”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.
Through the API
Section titled “Through the API”/v1/webhooks/deliveriesList deliveries (50 by default, 200 at most)/v1/webhooks/deliveries/{id}Read a delivery/v1/webhooks/deliveries/{id}/resendResend a deliveryList filters: transaction_id, status (pending, delivered, failed), event, limit. A test key only sees test deliveries.
curl "https://cartflox.com/api/v1/webhooks/deliveries?transaction_id=cmf3k2p1x0001abcd9e8f7g6h" \ -H "Authorization: Bearer af_live_sec_YOUR_KEY"{ "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}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 |