X-Awardee-Signature header. Verify it on every request before parsing or acting on the body. A request that fails verification is either a misconfiguration or an attempt to impersonate Awardee.
Signing secret
The signing secret is shown on the webhook endpoint’s detail page in the dashboard. It looks like:Signature format
TheX-Awardee-Signature header is a comma-separated list of key/value pairs:
t— Unix seconds at signing time. Also sent inX-Awardee-Timestamp.v1— HMAC-SHA256, lowercase hex, of the string<t>.<raw_body>, signed with the endpoint’swhsec_…secret.
v1=) leaves room for a future hash upgrade. Match by prefix, not by position.
Verifying
The verification recipe is: rebuild the signed string, HMAC it, compare in constant time.Replay attacks
Thet= timestamp lets you reject deliveries that are stale. Compare it to your server clock and refuse anything older than five minutes:
X-Awardee-Delivery) is still recognized and ignored, while a captured-and-replayed request is rejected by the timestamp check.
Rotating the secret
Rotating the signing secret invalidates the old secret immediately on the next delivery. To rotate without dropping events:Generate a new secret
The dashboard offers “Rotate signing secret” on each endpoint. The old secret stays valid for a 24-hour grace window.
Update verification
Roll your service so it accepts either the old or the new secret. Return success if either validates.

