For a quick reference of all webhook events and payload structures, see Webhooks Reference.
Setting Up Endpoints
Create an Endpoint
Go to Dashboard > Settings > Webhooks and click Add Endpoint. Enter your HTTPS URL and select the events you want to receive.
Copy the Signing Secret
After creating the endpoint, copy the Webhook Secret. You will need this to verify incoming payloads. The secret is shown once and can be rotated at any time.
Subscribe to Events
Select which events are delivered to this endpoint. You can subscribe to all events or choose specific ones.
All Events
Verilock emits the following 13 webhook events:| Event | Category | Trigger |
|---|---|---|
session.completed | KYC | Verification session finished processing |
session.approved | KYC | Session approved — identity verified |
session.declined | KYC | Session declined — failed checks |
session.expired | KYC | Session expired before completion |
aml.completed | AML | AML screening finished processing |
aml.match_found | AML | Potential watchlist or PEP match detected |
aml.monitoring.match | Monitoring | Continuous monitoring detected new matches |
transaction.flagged | Transactions | Transaction flagged for manual review |
transaction.blocked | Transactions | Transaction automatically blocked |
biometric.completed | Biometric | Biometric authentication completed |
database.validated | Database | Database validation completed |
face.duplicate_found | Face Search | Duplicate identity detected |
wallet.screened | Wallet | Wallet screening completed |
Signature Verification
Every webhook includes anX-Verilock-Signature header containing an HMAC-SHA256 signature of the raw request body.
- Read the raw request body (do not parse JSON first)
- Compute HMAC-SHA256 using your webhook secret
- Compare the computed value to the
X-Verilock-Signatureheader using a timing-safe comparison - Reject the request if they do not match
Payload Examples
- session.approved
- aml.match_found
- transaction.blocked
- wallet.screened
Retry Policy
Failed deliveries (non-2xx response or timeout after 10 seconds) are retried with exponential backoff:| Attempt | Delay | Total Elapsed |
|---|---|---|
| 1st retry | 10 seconds | ~10s |
| 2nd retry | 1 minute | ~1m 10s |
| 3rd retry | 5 minutes | ~6m 10s |
| 4th retry | 30 minutes | ~36m |
| 5th retry | 2 hours | ~2h 36m |
IP Allowlisting
If your infrastructure uses firewall rules, allowlist the following Verilock IP ranges:IP ranges are subject to change. Subscribe to the Verilock status page for notifications about infrastructure changes.
Multiple Endpoints
You can configure up to 10 webhook endpoints per account. Each endpoint can subscribe to different events, allowing you to route events to different services:| Endpoint | Events | Use Case |
|---|---|---|
https://api.yourapp.com/webhooks/verilock | session.* | Application logic |
https://compliance.internal/webhooks | aml.*, transaction.* | Compliance team |
| Zapier catch hook URL | session.approved | Automation |
Delivery Log
The webhook delivery log in your dashboard shows:- Event type and payload
- Response status code from your endpoint
- Response time in milliseconds
- Retry count and next retry time
- Delivery status:
delivered,retrying,failed
Best Practices
Respond Fast
Return
200 OK immediately. Queue the event for async processing to avoid timeouts.Deduplicate
Store processed
webhook_id values. Skip events you have already handled to ensure idempotent processing.Verify Signatures
Always validate
X-Verilock-Signature before processing. Reject unsigned or incorrectly signed payloads.Monitor Failures
Set up alerts for failed deliveries. Persistent failures may indicate endpoint issues or network problems.

