Registering
In the admin console: API & webhooks → Register webhook. Requiresapi:manage.
Give the endpoint URL and choose which of the nine events to subscribe to.
Webhook registration is an admin-console action. There is no public endpoint for a third party to self-register a webhook.
What a delivery looks like
Headers
string
The event type, e.g.
leave.approved.uuid
The delivery ID. Stable across every retry of the same delivery — this is your deduplication key.
string
sha256= followed by the hex HMAC-SHA256 of the raw request body, keyed with your signing secret.Payload
Verifying the signature
Compute HMAC-SHA256 over the raw request body — the exact bytes, before any JSON parsing — and compare in constant time.Deduplicate
Deliveries are at least once. Record theX-Ontime-Delivery value and ignore a repeat.
Retries, failure and replay
Operating a consumer
1
Monitor it yourself
The webhook’s status flips to
Failing on the first failed attempt, but the OnTime alert only fires after all eight retries — about 22 hours later. Do not rely on it to tell you your endpoint is down.2
Handle unknown event types gracefully
Return
2xx for an event you do not recognise rather than erroring. An unrecognised event that you reject will be retried eight times.3
Rotate the secret by re-registering
There is no rotate action. Register a second webhook, cut over, then delete the first.