How Webhooks Work
- Event Occurs: A user completes a session, a document is processed, or a status changes
- Event Published: The event is published to our internal message queue
- Webhook Delivered: Your configured endpoint receives a signed HTTP POST request
- Acknowledgment: Your server responds with
2xxto confirm receipt
Webhook Categories
Session Webhooks
Real-time notifications for session lifecycle events: creation, completion, processing results, and status changes.
Watchlist Webhooks
Alerts when ongoing monitoring detects new matches or status changes for monitored subjects.
Webhook Security
All webhooks are signed using HMAC-SHA256 to ensure authenticity. See Signature Verification for implementation details.Security Headers
Every webhook request includes:| Header | Description |
|---|---|
X-Webhook-ID | Unique event ID for idempotency (evt_abc123...) |
X-Webhook-Timestamp | Unix timestamp when event was created |
X-Webhook-Signature | HMAC-SHA256 signature (sha256=...) |
User-Agent | KYC-Webhooks/1.0 |
Content-Type | application/json |
Configuration
Configure webhooks in your tenant settings via the API or dashboard:When you set a
webhook_url without providing a webhook_secret, a secure secret is automatically generated for you. The secret is returned masked in API responses (e.g., ****************************a1b2).Webhook Envelope
All webhooks share a common envelope structure:| Field | Type | Description |
|---|---|---|
id | string | Unique event ID - use for idempotency |
type | string | Event type (e.g., kyc.session.processed) |
created | integer | Unix timestamp of event creation |
data | object | Event-specific payload |
Best Practices
Respond Quickly
Respond Quickly
Return a
2xx response within 10 seconds. Process webhook data asynchronously if needed.Implement Idempotency
Implement Idempotency
Use the
X-Webhook-ID header to deduplicate events. Store processed event IDs to avoid reprocessing.Verify Signatures
Verify Signatures
Always verify the webhook signature before processing. See Signature Verification.
Handle Retries
Handle Retries
Webhooks may be retried if your server doesn’t respond with
2xx. Design your handlers to be idempotent.Use HTTPS
Use HTTPS
Always use HTTPS endpoints for production webhooks. HTTP endpoints are only allowed in development.
Retry Policy
For critical workflows, we recommend:- Monitoring your webhook endpoint uptime
- Using a queue-based architecture for processing
- Implementing fallback polling for missed events
Testing Webhooks
Local Development
Use tools like ngrok to expose your local server:Webhook Testing Endpoint
You can use the staging environment to test webhooks without affecting production data.Notification Channels
In addition to webhooks, you can configure:| Channel | Description |
|---|---|
| Webhook | HTTP POST to your endpoint with signed payloads |
| Email notifications to configured addresses | |
| Slack | Rich notifications to Slack channels via webhook |