Signature header containing an HMAC-SHA256 hash. You should verify this signature to ensure the request genuinely came from RMZ and was not tampered with in transit.
How Signing Works
- RMZ serializes the webhook payload to JSON
- The JSON string is signed using HMAC-SHA256 with your webhook’s secret key
- The resulting hex-encoded hash is sent in the
Signatureheader - Your server recomputes the hash and compares it to the header value
Verification Steps
Get the raw request body
Read the raw request body as a string. Do not parse it to JSON first — the signature is computed on the raw JSON string.
Compute the expected signature
Calculate HMAC-SHA256 of the raw body using your webhook’s secret key.
Code Examples
Important Notes
Why use the raw body, not parsed JSON?
Why use the raw body, not parsed JSON?
The signature is computed on the exact JSON string that RMZ sends. If you parse the JSON and re-serialize it, whitespace or key ordering differences could produce a different hash. Always verify against the raw request body.
What if signing is disabled?
What if signing is disabled?
If signing is not enabled for your webhook, the
Signature header will not be present. The is_signed flag in the webhook configuration controls this. By default, webhooks created through the dashboard do not have signing enabled. You can still use the X-RMZ-REQUEST-ID header for tracking purposes.Can I rotate the secret key?
Can I rotate the secret key?
Currently, the secret key is generated when the webhook is created and cannot be rotated independently. To get a new key, delete the webhook and create a new one. The new webhook will receive a fresh 28-character secret key.

