Skip to content

No dead letter queue for failed webhook deliveries #257

Description

@ritaifeoluwa

Description

The webhook delivery system has retry logic but no dead letter queue (DLQ). When a webhook delivery fails permanently (exhausts max attempts), the delivery record is marked as failed but the event data is lost. There is no way to replay failed deliveries.

Current behavior

Failed deliveries are marked with status='failed' and last_error. The payload is only stored in the delivery record and may be overwritten or cleaned up.

Expected behavior

  • Store permanently failed deliveries in a DLQ (Redis sorted set or separate table)
  • Include full payload, error history, and attempt details in DLQ entry
  • Provide API endpoint to list DLQ entries
  • Provide API endpoint to retry a DLQ entry (re-dispatch)
  • Add TTL to DLQ entries for automatic cleanup

Suggested approach

Add a DLQ module that stores failed deliveries with full context. Add /webhooks/dlq GET and POST /webhooks/dlq/:id/retry endpoints. Use Redis sorted set with timestamp scores for efficient querying.

Labels

webhooks, api, feature

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programapiREST API design and endpointsfeatureNew feature or enhancementwebhooksWebhook delivery and notification

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions