Configure a destination
App dashboard → Settings → Webhooks → Add endpoint.- URL — your HTTPS endpoint
- Signing secret — copy this; you cannot view it again
- Events — pick
approval.granted,approval.denied,audit.export.completed, etc.
Payload shape
Headers
| Header | Description |
|---|---|
inviolet-event | Event type, e.g. approval.granted |
inviolet-delivery-id | Unique delivery UUID — use for idempotency |
inviolet-timestamp | Unix ms — reject if > 5 min skew |
inviolet-signature | sha256=<hex> HMAC of ${timestamp}.${body} |
Verify with the Node SDK
The Node SDK ships a constant-time signature verifier:Verify by hand
signature = sha256=hex(HMAC-SHA256(secret, timestamp + "." + body)).
Compare with constant-time equality. The SDK verifyWebhookSignature
function exposes this primitive directly if you need to verify
without constructing the full event object.
Retries
Inviolet retries 4xx and 5xx responses with exponential backoff for 24 hours. After that, the event is moved to a dead-letter queue visible in the dashboard.Read next
- Intent Events — the API surface that mints the tokens these webhooks deliver
- Purposes