Problem
Third-party applications can't receive real-time notifications about events (transactions, deposits, KYC updates). Need webhook system for event delivery.
Proposed Solution
Build comprehensive webhook system with event subscriptions, delivery tracking, retry logic, and signature verification.
Technical Implementation
New Files:
backend/services/WebhookDeliveryService.js - Webhook delivery service
backend/services/webhook/SignatureGenerator.js - HMAC signature generation
backend/services/webhook/RetryManager.js - Retry logic
backend/models/WebhookEndpoint.js - Webhook endpoint model
backend/models/WebhookDelivery.js - Delivery tracking model
backend/controllers/webhookController.js - Webhook management endpoints
backend/routes/webhooks.js - Webhook routes
backend/migrations/20260327000016_create_webhook_endpoints.js - Migration
backend/migrations/20260327000017_create_webhook_deliveries.js - Migration
backend/workers/webhookDelivery.js - Background delivery worker
backend/tests/webhook.test.js - Test suite
Modify:
backend/services/WebhookService.js - Enhance with delivery tracking
backend/controllers/transactionController.js - Trigger webhooks
backend/services/KycService.js - Trigger KYC webhooks
backend/.env.example - Add webhook configuration
Webhook Events
const WEBHOOK_EVENTS = {
// Transaction events
'transaction.created': 'Transaction initiated',
'transaction.completed': 'Transaction completed',
'transaction.failed': 'Transaction failed',
// Payment events
'payment.received': 'Payment received',
'payment.sent': 'Payment sent',
// Deposit/Withdrawal events
'deposit.confirmed': 'Deposit confirmed on-chain',
'withdrawal.completed': 'Withdrawal completed',
// KYC events
'kyc.submitted': 'KYC submitted for review',
'kyc.approved': 'KYC approved',
'kyc.rejected': 'KYC rejected',
// Account events
'account.created': 'Account created',
'tag.registered': 'Tag registered'
};
Webhook Payload
{
"id": "evt_1234567890",
"type": "transaction.completed",
"created": 1706284800,
"data": {
"transaction_id": "txn_abc123",
"from_tag": "@sender",
"to_tag": "@recipient",
"amount": "100.00",
"currency": "USDC",
"chain": "base",
"status": "completed"
},
"signature": "sha256=abc123..."
}
Acceptance Criteria
Priority
High - Important for third-party integrations
Problem
Third-party applications can't receive real-time notifications about events (transactions, deposits, KYC updates). Need webhook system for event delivery.
Proposed Solution
Build comprehensive webhook system with event subscriptions, delivery tracking, retry logic, and signature verification.
Technical Implementation
New Files:
backend/services/WebhookDeliveryService.js- Webhook delivery servicebackend/services/webhook/SignatureGenerator.js- HMAC signature generationbackend/services/webhook/RetryManager.js- Retry logicbackend/models/WebhookEndpoint.js- Webhook endpoint modelbackend/models/WebhookDelivery.js- Delivery tracking modelbackend/controllers/webhookController.js- Webhook management endpointsbackend/routes/webhooks.js- Webhook routesbackend/migrations/20260327000016_create_webhook_endpoints.js- Migrationbackend/migrations/20260327000017_create_webhook_deliveries.js- Migrationbackend/workers/webhookDelivery.js- Background delivery workerbackend/tests/webhook.test.js- Test suiteModify:
backend/services/WebhookService.js- Enhance with delivery trackingbackend/controllers/transactionController.js- Trigger webhooksbackend/services/KycService.js- Trigger KYC webhooksbackend/.env.example- Add webhook configurationWebhook Events
Webhook Payload
{ "id": "evt_1234567890", "type": "transaction.completed", "created": 1706284800, "data": { "transaction_id": "txn_abc123", "from_tag": "@sender", "to_tag": "@recipient", "amount": "100.00", "currency": "USDC", "chain": "base", "status": "completed" }, "signature": "sha256=abc123..." }Acceptance Criteria
Priority
High - Important for third-party integrations