Skip to content

[FEAT] Ordered Webhook Delivery with Dead Letter Queue #17

Description

@oomokaro1

[FEAT] Ordered Webhook Delivery with Dead Letter Queue

Priority: High

Difficulty: Hard
Estimated Effort: 3-4 days
Relevant Packages: OrbitStream_backend/, orbitstream_docs/
Labels: enhancement, infrastructure, priority:high

Requirements

1. Ordered Delivery

  • Add a sequence column to webhook_deliveries table (auto-increment per session)
  • When dispatching webhooks for the same session, process them sequentially
  • Use a per-session queue within the main queue
  • If webhook N for session X fails, block webhook N+1 for session X until N succeeds or goes to dead letter

2. Dead Letter Queue

  • After 5 failed attempts, move delivery to a webhook_dead_letter table
  • Dead letter entries include: all delivery attempts with timestamps and error messages
  • Merchants can view dead letter entries via GET /v1/webhooks/dead-letter
  • Merchants can manually retry via POST /v1/webhooks/dead-letter/:id/retry
  • Merchants can dismiss via DELETE /v1/webhooks/dead-letter/:id

3. Delivery Log

  • GET /v1/webhooks/deliveries — list recent deliveries (last 100, paginated)
  • Filter by: event type, status (delivered/failed/pending), date range
  • Each entry shows: event, status, attempts, last error, delivered_at

4. Idempotency Keys

  • Each delivery gets X-OrbitStream-Delivery-Id (UUID v4)
  • Each delivery gets X-OrbitStream-Timestamp (ISO 8601)
  • Signature covers: delivery_id + timestamp + payload
  • Document idempotency in integration guide

5. Testing

  • Test ordering: webhooks for same session arrive in order
  • Test dead letter: failed deliveries move to DLQ after 5 attempts
  • Test manual retry: dead letter entry is retried successfully
  • Test idempotency: duplicate delivery IDs are handled

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions