Dead Letter Queue & Auto-Replay

When an event exhausts all retry attempts, it moves to the Dead Letter Queue (DLQ). From there you can inspect failures, replay individual events, bulk-retry, or configure automatic replay after a cooldown.

How events reach the DLQ

An event enters the DLQ when all delivery attempts (initial + configured retries) fail. The event's status changes to FAILED and it appears in the DLQ section of the dashboard.

Initial delivery──▶Retry 1...N──▶FAILED → DLQ
Events with maxRetries: 0 go to the DLQ after the first failed delivery attempt.

Viewing DLQ events

Navigate to the webhook detail page and filter events by status FAILED to see all DLQ events. Each entry shows:

  • Event ID and timestamp
  • Number of delivery attempts made
  • Last error message and HTTP status code
  • Full request/response details for each attempt
  • Original payload

Manual replay

Replay a single failed event to re-attempt delivery:

POST /api/events/:id/retry

jsonResponse
{
  "message": "Event queued for retry",
  "eventId": "664a1f2e8b1c4a001f2d0001",
  "status": "PENDING"
}

The event is re-enqueued with the webhook's current retry policy. Its status changes from FAILED back to PENDING.

Fix the underlying issue (server down, bad config, etc.) before replaying events. Otherwise they will fail again and return to the DLQ.

Bulk replay

Replay multiple failed events at once from the dashboard. Select the events you want to retry and click Bulk Retry. All selected events are re-enqueued in parallel.

1

Filter events by FAILED status

Open the webhook detail page and set the status filter to FAILED.

2

Select events

Use the checkboxes to select individual events, or use Select All to pick all visible events.

3

Click Bulk Retry

All selected events are re-enqueued. Their status changes to PENDING.


Auto-replay

Auto-replay automatically retries DLQ events after a configurable cooldown period. This is useful for transient downstream failures where the target service typically recovers within a known window.

FieldTypeDescription
autoReplay.enabledbooleanEnable automatic DLQ retry
autoReplay.cooldownMinutesnumberMinutes to wait before auto-retrying a DLQ event
autoReplay.maxAttemptsnumberMaximum number of auto-replay attempts per event

Configure via API

PATCH /api/webhooks/:id

jsonRequest body
{
  "autoReplay": {
    "enabled": true,
    "cooldownMinutes": 30,
    "maxAttempts": 3
  }
}
Auto-replay events count toward your plan's monthly event quota. Set a reasonable maxAttempts limit to avoid exhausting your quota on persistently failing events.