When Hookdrop cannot deliver an event to a destination after repeated attempts, it moves the event to the dead letter queue. This keeps failed events visible and recoverable rather than silently discarding them.
The retry schedule
When the initial delivery fails, Hookdrop automatically retries up to 4 more times using exponential backoff:
After 4 retry attempts following the initial failure, Hookdrop stops trying automatically. The event moves to dead_letter status and you receive an email alert.
| Attempt | Delay |
|---|
| Initial attempt | Immediately on event capture |
| 1st retry | 5 seconds after failure |
| 2nd retry | ~25 seconds after 1st retry |
| 3rd retry | ~2 minutes after 2nd retry |
| 4th retry | ~10 minutes after 3rd retry |
A delivery is considered failed if your server returns a non-2xx response or does not respond within 10 seconds.
What happens next
Once an event reaches dead_letter status:
- You receive an email alert — Hookdrop notifies you so you can investigate without needing to monitor the dashboard constantly.
- The event stays in your dashboard — it is never deleted. You can inspect the full payload, headers, and all delivery attempt logs to understand what went wrong.
- You can replay it — once your server is back up and the issue is resolved, replay the event to re-enqueue it for delivery.
Filtering for dead letter events
To see all dead letter events in the dashboard, filter by status dead_letter. Via the API:
GET /api/endpoints/{id}/events?status=dead_letter
Authorization: Bearer TOKEN
You can combine this with other filters. For example, to find dead letter events from the past 24 hours:
GET /api/endpoints/{id}/events?status=dead_letter&from=2026-04-04T00:00:00Z
Authorization: Bearer TOKEN
Replaying a dead letter event
After you fix the issue on your server, replay the event from the dashboard or the API:
POST /api/endpoints/{id}/events/{eventId}/replay
Authorization: Bearer TOKEN
Replay moves the event back into the delivery queue with its original headers and body intact. If delivery succeeds, the event status updates to delivered.
Preventing dead letter events
The most common cause of dead letter events is a server that is slow to respond. To reduce the risk:
- Return a
200 OK immediately on receipt, then process the payload asynchronously.
- Make sure your server handles requests within the 10-second timeout window.
- Monitor the
failed status in your dashboard — events that are failing but not yet dead lettered are still being retried.