whsec_, and each agent has its own.
Headers
The signature is computed over
{webhook-id}.{webhook-timestamp}.{body}, keyed with the base64-decoded part of the secret after whsec_.
With a library (recommended)
Standard Webhooks libraries check the signature and refuse requests more than 5 minutes old.By hand
Node.js
Common mistakes
- Verifying the parsed body. Use the raw request body, exactly as received. Re-serialised JSON won’t match.
- Using another agent’s secret. Each agent has its own.
- After rotating. Calls that start after you click Rotate secret use the new secret; calls already in progress keep the old one until they end. Accept both briefly while you update your servers.