Skip to main content
Zavu signs webhooks with HMAC-SHA256. There are two schemes, and each receiver is on one of them: v2 is the current scheme and covers more of the request. Webhooks created from now on use it. Anything created earlier stays on v1 until you move it, and there is no deadline.

Check where you are

In the dashboard, every sender webhook and its scheme is listed under Webhooks.

The three steps

Moving is deliberately not one switch. The middle step is where both signatures arrive at once, so you can deploy and confirm your new code before anything depends on it.

1. Turn on both

The header now carries both, sharing one timestamp:
Your current receiver reads v1 and is unaffected. Nothing about your deliveries changes.

2. Verify v2, and confirm it in your own logs

Prefer v2 when it is present, fall back to v1. The same code then works before, during, and after the move:
Full examples in five languages are in Security. Deploy it, then wait for real deliveries and confirm they are being accepted. This is the step that matters. Do not skip to step 3 on the strength of a test request: a receiver that returns 200 before it verifies looks identical to a working one from our side.

3. Turn v1 off

From the next delivery the header carries v2 only.
Going from v1 straight to v2 returns 400. Set v1+v2 first. The overlap costs nothing and can last as long as you want.

Rolling back

Set v1+v2 again. Both signatures return immediately, so a receiver that reads either one keeps working while you sort things out.

Several senders, one endpoint

If one endpoint serves more than one sender, move them one at a time and keep the tolerant verifier from step 2. It accepts both schemes, so senders on different settings can share a receiver for as long as you need. When you create a new sender that points at an endpoint still verifying v1, create it on v1+v2 explicitly:
Otherwise it defaults to v2 and that endpoint will reject its deliveries.

Next Steps