<unix_timestamp>.<raw_request_body> with HMAC-SHA256 and sends NorthFond-Signature: t=<timestamp>,v1=<hex_digest>.
Verify a signature
1
Read the raw body
Do not parse and reserialize JSON before verification.
2
Check timestamp freshness
Reject events outside your replay window.
3
Compare signatures safely
Calculate HMAC-SHA256 with the endpoint secret and use a constant-time comparison.
4
Deduplicate the event ID
Persist processed event IDs before applying business side effects.
5
Return a 2xx response
Acknowledge promptly and process expensive work asynchronously.
Delivery contract
- Event IDs remain stable across retries and manual replays.
- Delivery order is not guaranteed. Use the transaction’s current state as the source of truth.
- Return a
2xxresponse after durable receipt, then process the event asynchronously. - Persist the event ID before applying side effects so a retry cannot duplicate work.
- Rotating an endpoint secret changes the credential used for subsequent deliveries.