Summary
The webhook controller and entity exist but there is no retry logic for failed webhook deliveries. Third-party integrations relying on webhooks need reliable delivery guarantees.
Requirements
- Implement a retry queue for failed webhook deliveries
- Use exponential backoff: 1s, 2s, 4s, 8s, 16s (5 retries max)
- Track delivery status per webhook event:
pending, delivered, retrying, failed
- Store delivery attempts with response status codes and error messages
- Move permanently failed webhooks (5 retries exhausted) to a dead-letter log
- Add an admin endpoint to view failed webhooks and manually retry them
- Add a webhook health check endpoint showing delivery success rate
Acceptance Criteria
Context
- Webhook controller:
apps/backend/src/modules/webhook/webhook.controller.ts
- Webhook entity:
apps/backend/src/modules/webhook/webhook.entity.ts
- Webhook service:
apps/backend/src/services/webhook/webhook.service.ts
- NestJS schedule module is already configured for cron jobs
Points: 150
Summary
The webhook controller and entity exist but there is no retry logic for failed webhook deliveries. Third-party integrations relying on webhooks need reliable delivery guarantees.
Requirements
pending,delivered,retrying,failedAcceptance Criteria
Context
apps/backend/src/modules/webhook/webhook.controller.tsapps/backend/src/modules/webhook/webhook.entity.tsapps/backend/src/services/webhook/webhook.service.tsPoints: 150