external_tracker.
Register an endpoint
Add an HTTPS endpoint in the dashboard under Integration → Webhooks. WePOST each event to that URL and show your signing secret once at registration — save it to verify signatures.
The event payload
Each event is a JSON body:The step that just happened (see the list below). Also sent as the
X-VerifyYou-Event header.The ordinal position of this stage in the happy path, when it has one.
ISO-8601 timestamp of the event.
The verification this event belongs to.
The
external_id linked at initialize, if any.The non-PII label you passed at initialize — correlate funnel events with your analytics.
The running trust score, when available.
Stages
| Stage | Meaning |
|---|---|
verification_initialized | Session created. |
verification_started | User opened the flow. |
account_created | An account was created for the user. |
consent_granted | User accepted consent. |
liveness_started | Camera / liveness step began. |
liveness_passed | Liveness succeeded. |
liveness_failed | Liveness failed. |
liveness_cancelled | User abandoned the liveness step. |
face_collision | Uniqueness check matched an existing human. |
verification_completed | Flow finished. |
liveness_failed, liveness_cancelled, face_collision) are where you’ll see funnel loss.
Verifying the signature
Every request carries two headers:X-VerifyYou-Signature—sha256=<hmac>, an HMAC-SHA256 of the raw request body (hex), keyed with your signing secret.X-VerifyYou-Event— thestage, for quick routing.
Node
Testing locally
Expose your local server with a tunnel, register the public URL, and use Send test event in the dashboard to deliver a signed sample.Aggregate funnel and drop-off analytics via a Stats API are on the roadmap.
Today, webhooks are the source of truth for per-step flow tracking.