Webhooks Operations & Monitoring
Monitoring webhook health is critical for maintaining reliable integrations. Catena provides comprehensive metrics, detailed logs, and replay capabilities to help you track delivery performance and recover from failures.
Proactive Monitoring: Track webhook success rates and response times to identify issues before they impact your integration.
Circuit Breaker
Catena automatically pauses webhooks when delivery performance drops below acceptable thresholds. This prevents wasted resources and signals that immediate attention is needed.
When a webhook is paused:
- Event delivery stops
- New events are queued but not delivered
- Webhook status changes to
stale
You can subscribe to webhook.staled events to be notified automatically when the circuit breaker trips.
Subscribe to webhook.* to also receive webhook.created, webhook.updated, webhook.deleted, and webhook.paused events — giving you full visibility into your webhook subscription lifecycle.
You can also query for paused webhooks directly:
The circuit breaker uses different evaluation strategies depending on delivery volume:
Grace Period: The circuit breaker will not evaluate a webhook for the first 15 minutes after it is created or updated. This prevents false positives during initial setup or after a configuration change.
Reactivation
After identifying and fixing the root cause of delivery failures, reactivate the webhook to resume event delivery:
Catena does not auto-reactivate paused webhooks. Only you know when the underlying issue has been resolved — reactivation must be triggered explicitly through the API.
Replay Missed Events
Replay events from the DLQ to recover any events that were queued while the webhook was paused. See Event Replay below.
Reactivation Warning: If the underlying issue isn’t resolved before reactivating, the circuit breaker may trip again shortly after. Monitor metrics closely in the first 15 minutes after reactivation.
Delivery Metrics
The Notifications API provides real-time and historical metrics to monitor webhook performance and reliability across four rolling time windows: 6h, 24h, 7d, and 14d.
Each time-windowed field returns values for four rolling windows: 6h, 24h, 7d, and 14d. Key fields to monitor:
success_rate— The percentage of messages successfully delivered after all retries. If any window drops below ~95%, investigate immediately.ewma_success_rate— The exponentially weighted moving average success rate. This is what the circuit breaker evaluates for high-volume webhooks — if it falls below0.95, the webhook will be markedstale.http_attemptsvsmessage_count— HTTP attempts includes retries; message count counts unique events. A high ratio of attempts to messages indicates frequent retries.avg_response_time_ms— Sustained values above 2500ms put you at risk of timeouts.dlq_count— Any non-zero value means events need to be replayed before the 14-day retention window expires.
Delivery Logs
Access detailed logs for every webhook delivery attempt. Logs are available for up to 14 days and include status codes, response times, error messages, and per-attempt detail.
Debugging Strategy: The error_message and status_code fields together usually pinpoint the root cause — a 504 with “endpoint timeout” suggests async processing isn’t working; 502/503 errors suggest infrastructure issues upstream of your handler.
Event Replay
Recover from delivery failures by replaying events from the Dead Letter Queue (DLQ). When events fail all automatic retry attempts, they’re stored in the DLQ for up to 14 days, giving you time to fix issues and replay them.
The replay functionality redelivers all DLQ events for a webhook subscription, allowing you to recover from temporary outages, application bugs, or configuration issues without losing data.
Common Replay Scenarios
How to Replay Events
14-Day Retention: Events are permanently deleted from the DLQ after 14 days. Replay critical events before they expire to avoid data loss.
Monitoring Best Practices
Troubleshooting
Low Success Rate
Common Causes:
- Endpoint responding too slowly or timing out
- Application errors causing failed responses
- Network connectivity or infrastructure issues
- Insufficient server resources to handle load
Solutions:
- Optimize endpoint performance with asynchronous processing
- Fix application bugs and handle errors gracefully
- Scale infrastructure to accommodate webhook volume
- Review logs to identify specific error patterns
High DLQ Count
Common Causes:
- Extended endpoint downtime or outages
- Persistent application errors
- Misconfigured webhook URL or authentication
Solutions:
- Verify endpoint accessibility and correct configuration
- Fix application issues preventing successful processing
- Replay DLQ events after resolving the root cause
Slow Response Times
Common Causes:
- Synchronous processing in the webhook handler
- Database operations or external API calls in the request path
- Insufficient server resources
Solutions:
- Return acknowledgment immediately and process asynchronously
- Move heavy operations to background jobs or queues
- Optimize database queries and reduce blocking operations
Webhook Deactivated
Common Causes:
- Delivery performance dropped below circuit breaker thresholds
- Persistent endpoint unavailability or misconfiguration
Solutions:
- Review metrics to identify when and why performance degraded
- Check logs for error patterns and failure modes
- Fix the underlying issues before reactivating
- Monitor closely after reactivation to ensure sustained health