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 2 months ago
Did this page help you?
