- Open Dashboard, Webhooks and register the endpoint you want called.
- Copy the
whsec_value from the dialog that confirms it.
How to verify
string
required
HMAC-SHA256(secret, "{timestamp}.{rawBody}"), hex encoded.string
required
Unix seconds at the moment the delivery was signed.
Why verify
Anyone who learns your endpoint URL can post a body to it that looks like ours. The signature is what separates the two, because it can only be produced by a party holding that endpoint’s secret. A genuine delivery can also be captured and sent again later. The timestamp is what closes that door: it is covered by the signature, so refusing anything older than a few minutes costs an attacker the whole replay. Compare in constant time. A comparison that returns on the first differing byte tells a caller how much of the expected value a guess got right. A request that fails any of these checks is not from us. Return400 and leave
the body alone.
Rotate the signing secret
Issue a new secret and read it once.
Send a test event
Exercise your handler on the real signed path.