Skip to main content

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.

Signature Format

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.