Retry behavior
If a delivery fails, Rolla automatically retries it with exponential backoff.| Attempts | Up to 6 |
| Backoff | Exponential, starting at ~10 seconds (≈ 10s, 20s, 40s, 80s, 160s, 320s) |
| Timeout | 10 seconds per attempt |
What counts as a failure
| Response | Retried? |
|---|---|
2xx | No — treated as success |
5xx | Yes |
429 Too Many Requests | Yes |
| Connection error / timeout | Yes |
Other 4xx (e.g. 400, 401, 404, 410) | No — treated as a permanent misconfiguration |
Idempotency
The same logical event may be delivered more than once (for example, if your server returns2xx but the connection drops before Rolla records it). Every delivery for a given logical event carries the same event_id (also in the X-Rolla-Event-Id header).
Make your handler idempotent by recording processed event_ids and ignoring duplicates:
Delivery logs
Every delivery attempt is logged and visible from your Rolla Dashboard under API → Webhooks → ⋯ → Deliveries. Each entry can be expanded to show the exact payload sent, the request’s target URL, and the response (status + body). It records:- The event type and
event_id - The target URL, payload, and HTTP response (status + body)
- Number of attempts and the last error (if any)
- Delivery status:
pending,success, orfailed - Timestamps
Manual replay
You can re-send any failed delivery from the dashboard (Deliveries → Retry) — useful after fixing an outage or a bug that caused4xx responses. Replaying re-queues the original payload to your endpoint.
You can also send a test event to a configured endpoint at any time to confirm it is reachable and your signature verification works, before any real transactions occur.
Best practices
Acknowledge fast
Return
2xx immediately and process asynchronously to avoid timeouts.Be idempotent
Deduplicate on
event_id — events may arrive more than once.Verify signatures
Confirm authenticity with the
X-Rolla-Signature header.Don't trust order
Events may arrive out of order; treat
status as the source of truth.