Overview
Immutable signs all outgoing webhook payloads (from alert rules and log streams) with HMAC-SHA256. The signature is included in the X-Immutable-Signature header.
The HMAC is computed using your webhook’s signing secret as the key and the raw JSON request body as the message.
Verification
Always use constant-time comparison when verifying signatures to prevent timing attacks. Never use === or == for signature comparison.
Payload Types
Alert Webhooks
Sent when an alert rule triggers:
Log Stream Webhooks
Sent when a new event is ingested (via log streams):
Important Notes
- Raw body required — You must verify against the raw request body string, not a serialized/parsed version. Re-serializing parsed JSON may change key ordering or whitespace, invalidating the signature.
- Signing secret — Set your signing secret when creating or editing a webhook destination in the dashboard. Store it securely as an environment variable.
- Failed verification — Return a non-2xx status code if verification fails. Do not process unverified payloads.