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.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 syntheticattestation.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
- Webhooks concepts — full event catalog, payload fields per event, and signature verification
- Webhook API Reference — list, create, update, and delete endpoints programmatically