Manage your signing secret in the Requesty Console.
What Gets Signed
Every webhook sent on behalf of your organization is signed with your organization’s signing secret:- Spending alerts, for every webhook type (JSON, Slack, and Teams)
- Sample requests, sent to the
webhook_urlin a request’ssampleconfiguration
Slack and Microsoft Teams ignore the signature headers, so signing changes nothing for those destinations. Verification matters for your own JSON endpoints and sample request receivers.
Getting Your Signing Secret
Only organization admins can view or rotate the signing secret.- Go to the Admin Panel and navigate to the Alerts tab
- Find the Webhook signing secret card
- Click the eye icon to reveal the secret, then the copy icon to copy it
whsec_. Store it like a password, for example in your secret manager or an environment variable such as REQUESTY_WEBHOOK_SECRET, and never commit it to source control.
Signature Headers
Each delivery includes these headers:
Requesty signs each attempt again, so a retry carries the same
webhook-id with a new webhook-timestamp and webhook-signature.
Verifying Signatures
With a Library
The Standard Webhooks libraries accept thewhsec_ secret as shown in the console. They check the signature and reject timestamps more than 5 minutes from the current time.
npm install standardwebhooks or pip install standardwebhooks. Libraries for other languages are listed on standardwebhooks.com. The Svix libraries verify the same signatures.
Manually
If you cannot use a library, compute the signature yourself:- Build the signed content by joining the
webhook-id, thewebhook-timestamp, and the raw body with periods:{webhook-id}.{webhook-timestamp}.{body} - Remove the
whsec_prefix from your secret and base64-decode the rest to get the signing key - Compute the HMAC-SHA256 of the signed content with that key and base64-encode the result
- Split
webhook-signatureon spaces. Each entry has the formv1,{signature}. Accept the delivery if anyv1signature matches yours, using a constant-time comparison - Reject the delivery if
webhook-timestampis more than 5 minutes from the current time, to protect against replayed requests
Handling Retries
Failed deliveries are retried, so your endpoint may receive the same message more than once. Usewebhook-id to detect duplicates: store the IDs you have processed and skip any you have already handled.
Rotating the Secret
Rotate the secret on a schedule, or immediately if it may have been exposed.- In the Webhook signing secret card, click the rotate icon
- Under Stop signing with the current secret, choose when the current secret is retired:
- Immediately, use this if the current secret was exposed
- After 1 hour, 2 hours, 4 hours, 8 hours, or 24 hours (the default)
- Click Rotate secret
webhook-signature, so your endpoint keeps verifying with either the old or the new secret. Update your endpoint to the new secret before the grace period ends.
An organization can have at most 5 active signing secrets at once, counting the current secret and any still in their grace period. If you reach the limit, wait for one to expire or rotate with Immediately.
Related Features
Spending Alerts
Configure spend thresholds and the webhook that receives alert notifications.
Sample Requests
Mirror a share of requests and responses to your webhook for analysis.