Verifying a webhook is really from Veluril

Your endpoint's URL is public, so anyone could send a webhook to it. That's why every webhook we send is signed with your endpoint's own secret. Before your endpoint acts on a webhook, it can check the signature and verify the webhook really came from Veluril.

How the signature works

Every webhook includes an X-Veluril-Signature   header. It holds the time we sent the webhook, and a signature made from that time and the webhook's contents using your endpoint's signing secret. Only Veluril and you have the secret. So when your endpoint makes the same signature and it matches, the webhook is ours and nothing in it has changed on the way.

Our developer guide, Verifying webhook signatures, walks through the whole check with working code.

Keeping the secret safe

We show the signing secret once, when you add the endpoint. Keep it secured the way you would a password.

We keep only an encrypted copy of your signing secret. That's why we can't show it to you again, so copy it somewhere safe the moment you see it.

Rotating the secret

If you lose the secret, or think someone else has seen it, open the endpoint from your Webhooks page and click the "Rotate secret" button:

An endpoint's Signing and actions section, with the Rotate secret button highlighted

Once you confirm, the old secret stops working immediately and we show the new one, once. Update your endpoint with it straight away. Until you do, your endpoint will turn our webhooks away, and we keep retrying them while you update it.

Next

If your tool or script gets an error back when it creates a delivery, the code tells you what to fix.

Next → Fixing an error when creating a delivery