Webhook Retry Policy
When a webhook delivery fails, Kallglot automatically retries the request with exponential backoff.What Triggers a Retry
A webhook delivery is considered failed if:- Your endpoint returns a non-2xx HTTP status code
- Your endpoint doesn’t respond within 30 seconds
- The connection cannot be established
- SSL/TLS handshake fails
Retry Schedule
Kallglot uses exponential backoff with jitter:| Attempt | Delay | Total Time Elapsed |
|---|---|---|
| 1 | Immediate | 0 |
| 2 | ~1 minute | 1 minute |
| 3 | ~5 minutes | 6 minutes |
| 4 | ~30 minutes | 36 minutes |
| 5 | ~2 hours | 2.5 hours |
| 6 | ~5 hours | 7.5 hours |
| 7 | ~10 hours | 17.5 hours |
| 8 | ~24 hours | 41.5 hours |
Retry Headers
Retry attempts include additional headers:| Header | Description |
|---|---|
Kallglot-Webhook-Id | Unique ID for this delivery |
Kallglot-Retry-Count | Current retry attempt (0 for first attempt) |
Kallglot-Original-Timestamp | When the event was first created |
Idempotency
Because webhooks may be delivered multiple times, your handler must be idempotent. Use theid field to deduplicate:
Monitoring Deliveries
Developer Portal
View delivery status in the Developer Portal:- Go to Webhooks > select your endpoint
- Click Delivery History
- View status, response, and retry history for each event
Delivery Statuses
| Status | Description |
|---|---|
pending | Waiting to be sent |
delivered | Successfully delivered (2xx response) |
retrying | Failed, retry scheduled |
failed | All retries exhausted |
Webhook Events
Subscribe to meta-events about your webhooks:Automatic Disabling
Endpoints are automatically disabled after:- 100 consecutive failed deliveries, or
- 7 days of continuous failures
webhook_endpoint.disabled event (to other healthy endpoints).
To re-enable:
- Fix the underlying issue
- Go to Developer Portal > Webhooks
- Select the disabled endpoint
- Click Re-enable
Best Practices
Return 200 quickly
Return 200 quickly
Acknowledge receipt immediately and process asynchronously:
Use a message queue
Use a message queue
For reliability, push webhooks to a queue (Redis, SQS, RabbitMQ):
Handle out-of-order delivery
Handle out-of-order delivery
Events may arrive out of order. Use timestamps to handle this:
Set up alerting
Set up alerting
Monitor for failed webhooks and alert your team:
Manual Retry
You can manually retry failed events from the Developer Portal:- Go to Webhooks > select endpoint > Delivery History
- Find the failed event
- Click Retry
Event Expiration
Events are retained for 30 days. After that:- Events cannot be viewed in the Developer Portal
- Manual retries are no longer possible
- The event data is permanently deleted