Skip to main content
Every webhook delivery from Essal includes an X-Essal-Signature header. You must verify this signature before processing the payload to protect against spoofed requests.

Signature Format

The header value is a hex-encoded HMAC-SHA256 hash of the raw request body, prefixed with sha256=:

Verification

The HMAC is computed using the webhook secret returned when you created the webhook subscription.

Node.js

Python

Always use a constant-time comparison function (timingSafeEqual, hmac.compare_digest) to prevent timing attacks. A standard string equality check is not safe.

Idempotency

Essal may deliver the same event more than once (at-least-once delivery). Use the event id field to deduplicate events in your handler — store processed event IDs and skip events you have already handled.