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:

AttemptDelayCumulative
1st retry1 minute1 minute
2nd retry5 minutes6 minutes
3rd retry30 minutes36 minutes
4th retry2 hours~2.5 hours
5th retry24 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