Skip to main content
Webhooks are available on Pro, Business, and Enterprise plans. Endpoint limits are 3 on Pro, 10 on Business, and unlimited on Enterprise.

1. Create an endpoint

In the dashboard, go to Webhooks under Configure and click Create Endpoint. Enter your endpoint URL — use HTTPS — give it a label, and tick the events you want: Grantiva generates a signing secret (whsec_...) and shows it once — save it now.

2. Handle webhook events

Sign the raw request body, not a re-serialized copy of the parsed JSON. Re-serializing can change key order or spacing and the signature will not match.
Inside data, every value is a string. risk_score arrives as "82", auto_renew as "true". Convert before comparing.
Dedupe on the X-Grantiva-Delivery header — a retry reuses the same delivery id.

3. Test your endpoint

From the webhook detail page in the dashboard, click Send Test Event. Grantiva synchronously delivers a synthetic attestation.completed payload, signed exactly like a real event, and shows you the HTTP status, response body, and latency it got back. attestation.completed is a test-only name — you cannot subscribe to it and it is never sent outside a test.

4. Verify it works

Check the delivery log in the dashboard. Each delivery shows:
  • HTTP status code
  • Response body (first 1000 characters)
  • Attempt count and error, if any
  • Delivery time

Retries

A delivery succeeds on any 2xx. Anything else — a non-2xx status or a connection error — is a failure, and Grantiva makes at most 3 attempts in total: After the third failure the delivery is marked permanently failed. You can re-drive it from the delivery log, which resets the attempt counter.

Next steps