Skip to main content

Webhooks

Sync verify() is enough for most apps. Use webhooks to push the same decision JSON to another service.

Setup

  1. Dashboard → Integrate → Webhooks
  2. Add an HTTPS URL (test or live)
  3. Copy the signing secret (whsec_…) once
  4. Subscribe to verification.completed
Fires after a successful server POST /v2/verify for matching environment keys.

Request your endpoint receives

Body (JSON)

data.object is the same shape as the verify response.

Signature

Also sent: X-Keverd-Event, X-Keverd-Delivery. Signed string: {t}.{raw_request_body}
HMAC-SHA256 with whsec_…, hex digest. Reject if timestamp older than 300 seconds.
Verify the signature against the raw body. Do not parse JSON before verifying.
Use constructEvent / construct_event in the Node, Python, or PHP SDKs. Failed verification throws KeverdSignatureError (Node / Python) or Keverd\KeverdSignatureError (PHP). Return 400 and do not process the payload.