# Redelivering Webhooks

This guide explains **Clearout's webhook retry logic and redelivery system**. When webhook deliveries fail, Clearout automatically retries with exponential backoff to ensure reliable delivery of your webhook events.

### Retry Overview&#x20;

Clearout automatically retries failed webhook deliveries to ensure your application receives important event notifications. The retry system uses exponential backoff to handle temporary failures while avoiding overwhelming your server.

#### When Retries Occur <a href="#when-retries-occur" id="when-retries-occur"></a>

Webhook retries are triggered when:

* **HTTP Error Responses** - Your endpoint returns 4xx or 5xx status codes
* **Connection Timeouts** - Your server doesn't respond within 30 seconds
* **Network Issues** - Temporary network connectivity problems
* **Server Unavailability** - Your webhook endpoint is temporarily down

#### Retry Limits <a href="#retry-limits" id="retry-limits"></a>

The number of retry attempts depends on your account type

**Request Timeout**

Each webhook request has a maximum timeout of 30 seconds. If your endpoint doesn't respond within this time, the request will be considered failed and retried.

### Retry Schedule&#x20;

Clearout uses exponential backoff for webhook retries, with delays that increase after each failed attempt:

| Attempt | Delay After Previous | Cumulative Time |
| ------- | -------------------- | --------------- |
| 1st     | Immediate            | 0 minutes       |
| 2nd     | 5 minutes            | 5 minutes       |
| 3rd     | 10 minutes           | 15 minutes      |
| 4th     | 20 minutes           | 35 minutes      |
| 5th     | 40 minutes           | 1 hour 15 min   |
| 6th     | 80 minutes           | 2 hours 35 min  |
| 7th     | 160 minutes          | 5 hours 15 min  |
| 8th     | 320 minutes          | 10 hours 35 min |
| 9th     | 640 minutes          | 21 hours 15 min |

**Exponential Backoff**

The retry delays approximately double with each attempt, providing time for temporary issues to resolve while preventing overloading your server with rapid retries.

### Failure Handling&#x20;

When all retry attempts are exhausted, the webhook delivery is permanently marked as failed:

#### Permanent Failure <a href="#permanent-failure" id="permanent-failure"></a>

* **No More Retries** - After the maximum number of attempts, no further retries will be made
* **Failed Status** - The webhook delivery is marked as permanently failed
* **Event Logs** - The failure is recorded in your webhook delivery logs

#### Manual Retry <a href="#manual-retry" id="manual-retry"></a>

Manual retry functionality is not currently available. Once a webhook delivery is permanently failed, it cannot be manually retriggered through the dashboard.

### Monitoring&#x20;

You can monitor webhook delivery status through the Clearout dashboard:

#### Event Logs <a href="#event-logs" id="event-logs"></a>

* **Access Logs** - Click the "View Event Logs" button in the webhook table
* **Delivery Status** - View success/failure status for each webhook delivery attempt
* **Response Details** - See HTTP status codes, response times, and error messages
* **JSON Payloads** - View the complete payload that was sent to your endpoint

#### Event Details <a href="#event-details" id="event-details"></a>

Click on any event in the logs to view detailed information including delivery status, response details, and the complete JSON payload.

<div data-with-frame="true"><figure><img src="https://93738666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEXQQW0hsXyH0YD4ePoxb%2Fuploads%2FFlKzQ9Y50mJ7WVCFuWio%2Fwebhook-event-details.png?alt=media&#x26;token=67f50205-bf04-4b94-8e5a-223e4bf6f719" alt="Webhook Event Details Panel"><figcaption><p>Event details panel showing delivery status, response information, and JSON payload</p></figcaption></figure></div>

#### Monitoring Recommendations <a href="#monitoring-recommendations" id="monitoring-recommendations"></a>

* **Regular Checks** - Monitor your webhook delivery logs regularly for failed deliveries
* **Success Rate Tracking** - Track your webhook delivery success rate over time
* **Alert Setup** - Consider setting up external monitoring for your webhook endpoints
* **Performance Monitoring** - Monitor response times to identify performance issues

### Best Practices&#x20;

#### Webhook Endpoint Reliability <a href="#webhook-endpoint-reliability" id="webhook-endpoint-reliability"></a>

* **Fast Response** - Return HTTP 200 status codes quickly (within 30 seconds)
* **Idempotency** - Handle duplicate webhook deliveries gracefully
* **Error Handling** - Implement proper error handling for webhook processing
* **Queue Processing** - Use message queues for asynchronous webhook processing

#### Duplicate Delivery Handling <a href="#duplicate-handling" id="duplicate-handling"></a>

* **Event ID Tracking** - Use the `event_id` field to track processed events
* **Database Deduplication** - Store processed event IDs to prevent duplicate processing
* **Idempotent Operations** - Design your webhook handlers to be idempotent

#### Performance Optimization <a href="#performance-optimization" id="performance-optimization"></a>

* **Async Processing** - Process webhook data asynchronously when possible
* **Connection Pooling** - Use connection pooling for database operations
* **Resource Management** - Ensure adequate server resources for webhook processing
* **Monitoring** - Implement comprehensive monitoring and alerting

**Next Steps**

Now that you understand webhook retry behavior, check out our [FAQ](https://docs.clearout.io/webhooks/faq.html) for answers to common questions about webhooks.


---

# Agent Instructions: 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:

```
GET https://docs.clearout.io/developers/webhooks/redelivering-webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
