Retries & Replay
Repull automatically retries failed webhook deliveries with exponential backoff. You can also manually replay any delivery from the last 7 days.
Retry Schedule
When a delivery fails, Repull retries up to 5 times on the following schedule:
| Attempt | Delay | Cumulative |
|---|---|---|
| 1st retry | 1 minute | 1 minute |
| 2nd retry | 5 minutes | 6 minutes |
| 3rd retry | 30 minutes | 36 minutes |
| 4th retry | 2 hours | ~2.5 hours |
| 5th retry | 24 hours | ~26.5 hours |
What Triggers a Retry
A delivery is considered failed and will be retried if:
- Your endpoint returns a non-2xx status code (e.g. 500, 502, 503)
- Your endpoint does not respond within 5 seconds (request timeout)
- The connection is refused or the DNS lookup fails
Return 200 quickly
Process webhook events asynchronously. Return a
200 status immediately, then handle the event in a background job. This prevents timeouts and duplicate deliveries.Auto-Disable
After 10 consecutive failed deliveries (across any events), the webhook subscription is automatically disabled. You will receive an email notification when this happens. Re-enable it from the dashboard or via the API after fixing the issue.
Viewing Failed Deliveries
List recent deliveries for a webhook subscription, including status, response code, and timestamps:
curl https://api.repull.dev/v1/webhooks/wh_abc123/deliveries?status=failed \ -H "Authorization: Bearer sk_live_YOUR_KEY" \ -H "X-Workspace-Id: YOUR_WORKSPACE_ID"
Manual Replay
Re-deliver any webhook from the last 7 days. The replayed delivery uses the exact same payload as the original:
curl -X POST https://api.repull.dev/v1/webhooks/wh_abc123/replay/del_xyz789 \ -H "Authorization: Bearer sk_live_YOUR_KEY" \ -H "X-Workspace-Id: YOUR_WORKSPACE_ID"
{
"id": "del_new456",
"webhook_id": "wh_abc123",
"original_delivery_id": "del_xyz789",
"status": "success",
"response_code": 200,
"replayed_at": "2025-06-15T14:30:00Z"
}AI