> For the complete documentation index, see [llms.txt](https://api.dataloy.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://api.dataloy.com/api-release-8.26/dataloy-rest-api/webhook-notification-retry-rules.md).

# Webhook Notification Retry Rules

When a webhook notification fails to deliver, the system will automatically retry based on the following rules.

#### Retry Schedule

Retries use an exponential backoff strategy. The delay between each retry attempt increases as follows:

<table data-search="false"><thead><tr><th>Attempt</th><th>Delay before retry</th></tr></thead><tbody><tr><td>1</td><td>Immediate</td></tr><tr><td>2</td><td>1 minute</td></tr><tr><td>3</td><td>2 minutes</td></tr><tr><td>4</td><td>5 minutes</td></tr><tr><td>5</td><td>10 minutes</td></tr><tr><td>6</td><td>15 minutes</td></tr><tr><td>7</td><td>30 minutes</td></tr><tr><td>8</td><td>1 hour</td></tr><tr><td>9</td><td>6 hours</td></tr><tr><td>10+</td><td>1 day</td></tr></tbody></table>

#### Maximum Attempts

The maximum number of retry attempts is controlled by the system setting `System.webhookAttempts`. This applies to all subscriptions, including those with "Do Not Unsubscribe" enabled. When the maximum is reached, the individual notification stops retrying, but the subscription remains active for new notifications.

#### Non-Retryable Errors

Notifications that fail with the following HTTP status codes are never retried, as these indicate permanent errors that will not resolve on their own:

<table data-search="false"><thead><tr><th>HTTP Status Code</th><th>Meaning</th></tr></thead><tbody><tr><td>400</td><td>Bad Request</td></tr><tr><td>401</td><td>Unauthorized</td></tr><tr><td>403</td><td>Forbidden</td></tr><tr><td>404</td><td>Not Found</td></tr><tr><td>405</td><td>Method Not Allowed</td></tr><tr><td>413</td><td>Payload Too Large</td></tr><tr><td>422</td><td>Unprocessable Entity</td></tr></tbody></table>

All other errors are retried, including:

* Connection timeouts (endpoint unreachable)
* Server errors (5xx)
* Rate limiting (429)
* Request timeouts (408)
* Conflicts (409)

#### Circuit Breaker

If a notification fails for a subscription during a retry cycle, all remaining pending notifications for that same subscription are skipped in that cycle. This prevents the system from repeatedly hitting a known failing endpoint. Skipped notifications are not counted as attempts — they will be picked up in the next cycle.

#### HTTP Timeouts

Webhook HTTP calls use configurable timeouts to prevent indefinite blocking:

| Setting    | Description                                              | Default    |
| ---------- | -------------------------------------------------------- | ---------- |
| `CTIMEOUT` | Connect timeout — maximum time to establish a connection | 15 seconds |
| `RTIMEOUT` | Read timeout — maximum time to wait for a response       | 60 seconds |

These can be configured via System Preferences.

#### Overlap Protection

If a retry cycle takes longer than the timer interval, the next cycle will not start until the current one finishes. This prevents multiple retry cycles from running simultaneously.

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://api.dataloy.com/api-release-8.26/dataloy-rest-api/webhook-notification-retry-rules.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
