Overview
kurnl sends HTTP POST requests to yourwebhook_url after significant events. Configure your webhook URL in Dashboard → Settings → Integration.
All events share a common envelope structure with event-specific fields merged in at the top level.
Event reference
Payload structure
event, provider_document_id, and timestamp. Event-specific fields are merged in alongside them.
Verifying signatures
When you have awebhook_secret configured, kurnl signs every request body with HMAC-SHA256 and sends the signature in the X-Webhook-Signature header as sha256=<hex_digest>.
Always verify this signature before processing any event.
Delivery behaviour
- kurnl attempts delivery up to 3 times with exponential back-off (2s, then up to 30s between retries)
- Network errors and 5xx responses are retried; 4xx responses are not retried
- Timeout per attempt: 15 seconds
- Return any
2xxstatus to acknowledge — kurnl does not inspect the response body
Idempotency
kurnl may deliver the same event more than once after transient failures. Usejob_id or subscription_id as an idempotency key to deduplicate in your handler: