Verify signatures
Every connection webhook delivery is signed so you can confirm it came from Zapier and was not modified in transit. Zapier follows the Standard Webhooks specification, so you can verify deliveries with any Standard Webhooks library or with a short amount of code. Always verify the signature before you act on a payload.What you need
- The signing
secret(whsec_…) returned when you created the webhook. If you did not store it, delete the webhook and create a new one to get a fresh secret. - The raw request body, exactly as received. Do not parse and re-serialize it before verifying: JSON re-serialization can change the bytes and break the signature.
Signature headers
Each delivery includes three headers:
The signed content is the string
{webhook-id}.{webhook-timestamp}.{raw-body}. The signature is the base64-encoded HMAC-SHA256 of that string, keyed by the secret with its whsec_ prefix removed and the remainder base64-decoded.
Verify with a library (recommended)
The official Standard Webhooks libraries handle signature construction, base64 decoding, and timestamp tolerance for you.Verify manually
If you cannot add a dependency, reconstruct and compare the signature yourself. This mirrors the official libraries: strip thewhsec_ prefix, base64-decode the key, build the signed content, and compare with a constant-time function.
Reject old deliveries
To limit replay attacks, reject a delivery whosewebhook-timestamp is too far from the current time. The Standard Webhooks libraries apply a five-minute tolerance by default. If you verify manually, apply the same check.
Respond to Zapier
- Return a
2xxstatus once you have verified and accepted the delivery. - Return a non-
2xxstatus if you cannot process the delivery. A429or5xxresponse triggers a retry. For retry andRetry-Afterbehavior, go to Error handling. - Deduplicate on
webhook-id: the same event can be delivered more than once, so make your handler idempotent.
Next steps
- Event payload reference: the fields inside a verified event.
- Error handling: API error codes and delivery behavior.