Webhook Lifecycle Guide
Last updated 2026-02-12
Lifecycle
- Rooaak event is emitted (
message.responded,agent.error, etc.). - Matching project webhooks are loaded from
webhooks. - Delivery attempt is made and logged in
webhook_deliveries. - Retryable failures are queued in
webhook_queue. /api/cron/webhooksprocesses pending retries with exponential backoff.
Signature verification
Rooaak signs every webhook payload:
X-Rooaak-DeliveryX-Rooaak-EventX-Rooaak-Signature: sha256=<hex>
Always verify HMAC on raw request body using your webhook secret.
Retry/backoff policy
Current backoff sequence:
- 30 seconds
- 2 minutes
- 8 minutes
- 32 minutes
- 2 hours
Retry budget: max 5 attempts.
Retryability rules
Retryable:
- network errors/timeouts
- HTTP
429 - HTTP
5xx
Non-retryable:
- invalid URL
- redirect responses
- most HTTP
4xxerrors
Scheduler ownership
For Rooaak-hosted deployments:
- Rooaak infrastructure owns cron execution for
/api/cron/webhooks.
For self-hosted Rooaak:
- operators must schedule authenticated calls to
/api/cron/webhooks.
Customers integrating via adapters do not run Rooaak cron jobs.
Console operator notes
- Webhook secrets are shown once on create/rotation in
Console > Webhooks(/console/webhooks). - Delivery history is available in the Delivery Logs panel (filter by webhook, event, and success/failed status).
- Retry state is available in the Retry Queue panel (
pending,processing,failedwith attempt counters and next-attempt timestamps). - If retry queues stall, verify cron execution and auth for
/api/cron/webhooksfirst.