Skip to main content
Every outbound webhook is HMAC-signed. Verify before processing to prevent spoofed callbacks.

Headers

Canonical string

Same algorithm as inbound API signing, but the path is your webhook URL path:
HMAC-SHA256 with your enc_* encryption key.

Node.js verification

Express handler pattern

Timestamp validation

Reject requests with timestamps outside a reasonable window (e.g. ±5 minutes) to limit replay attacks.

Common failures

  • Parsing JSON before verification (body must be raw bytes)
  • Wrong path (must match registered webhook_url pathname exactly)
  • Using sk_* instead of enc_* for HMAC