Webhook Retry Logic
Success
Your endpoint should respond with 2xx within 10 seconds. Delivyr treats any 2xx response as a successful delivery and does not retry.
Retryable responses
Delivyr retries when the failure is likely transient:
| Status | Meaning |
|---|---|
408 | Request timeout from your endpoint |
429 | Too many requests (rate limited) |
500 | Internal server error |
502 | Bad gateway |
503 | Service unavailable |
504 | Gateway timeout |
522 | Delivyr timed out waiting for your endpoint (10 second limit) |
523 | Delivyr could not connect (DNS failure, connection refused, TLS error, network reset) |
Non-retryable responses
These failures are not retried. They usually mean the URL, authentication, or payload needs to be fixed:
| Status | Meaning |
|---|---|
400 | Bad request |
401 | Unauthorized |
403 | Forbidden |
404 | Not found |
405 | Method not allowed |
410 | Gone |
413 | Payload too large |
422 | Unprocessable entity |
Other 4xx | Client error (except 408 and 429) |
600 | Delivyr could not build the request (for example, a JSONata template error). No HTTP request was sent. |
Retry schedule
Delivyr makes up to 5 attempts. (Note: The retry schedule will be expanded past 5 attempts in future updates.)
| Attempt | Base delay | Jitter |
|---|---|---|
| 1 | — (initial delivery, not scheduled) | — |
| 2 | 0 seconds | none |
| 3 | 5 minutes (300s) | 0–60s subtracted |
| 4 | 10 minutes (600s) | 0–60s subtracted |
| 5 | 15 minutes (900s) | 0–60s subtracted |
Timeouts
Each HTTP attempt waits up to 10 seconds for a complete response. If your endpoint does not respond in time, Delivyr records status 522 and retries according to the schedule above.
Logs
Logs are retained for 30 days.
Updated 16 days ago
Did this page help you?
