Skip to main content

At a glance

Send your Flinks contact the HTTPS URL that will receive the events. Provide one per environment (sandbox and production). In return you receive a webhook secret, used to verify every event. Store it like a password, for example in a secrets manager or environment variable, never in source control. Keep sandbox and production secrets separate.

2. Verify the signature

Every request carries X-Webhook-Signature: sha256=<HEX>. Check it before trusting the body.
  • Compute HMAC-SHA256 over the raw request body bytes, keyed with your secret (UTF-8). Do not parse and re-serialize the JSON first: the bytes must match exactly.
  • The hex in the header is uppercase. Compare case-insensitively and in constant time.
  • Respond 401 if it does not match.
  • Optional replay protection: when is part of the signed body, so you can reject events older than a few minutes.

Example: Node.js (Express)