How signing works
Every webhook delivery includes these headers:
The signature is computed as:
secretis your webhook signing secret (returned when you create a webhook)- the timestamp is the value of the
X-Render-Timestampheader raw_bodyis the raw (unparsed) request body bytes
"{timestamp}.{raw_body}", hex-encode it, and
constant-time compare it against the hex digest after the sha256= prefix in the
X-Render-Signature header.
Verification example
Rotating the secret
webhook_url callback in the workspace. Update all of your verifiers
immediately after rotation — the old secret stops working as soon as the new one
is issued.
