Event catalog
| Event | Trigger |
|---|---|
user.status.updated | A User entity’s status changes (ACTIVE ↔ FLAGGED ↔ BLOCKED) |
user.data.updated | A User entity’s profile fields change (name, DOB, portrait, aggregate counters, metadata) |
business.status.updated | A Business entity’s status changes |
business.data.updated | A Business entity’s profile fields change (legal name, registration number, country, counters) |
activity.created | A new activity is logged against an entity (manual action, automated check, note) |
- KYB webhooks — business session events
- Transaction Monitoring webhooks — transaction events
- Webhooks reference — signature verification, retries, destinations
Payload shapes
All entity webhooks share a common envelope:user.status.updated / business.status.updated
Fires on every status change. The reason field tells you why the change happened:
| Reason | Description |
|---|---|
manual | An analyst changed the status from the console |
api | The status was changed via PATCH /v3/users/{vendor_data}/update-status/ |
session_declined | Linked session was declined and auto-block is enabled |
blocklist_match | Entity matched a blocklist entry (face, document, email, phone) |
transaction_rule | A transaction rule action moved the entity to FLAGGED or BLOCKED |
ongoing_monitoring | Periodic AML rescan surfaced a new hit |
user.data.updated / business.data.updated
Fires when profile fields change. The payload includes the full updated entity:
changed_fields to efficiently sync only the fields that changed.
activity.created
Fires whenever an activity record is created about a User or Business entity. Activities form the entity’s timeline — the backend writes one for every material event, across five source categories:
| Source | Examples |
|---|---|
CUSTOMER | End-user actions (profile edits, Key People submissions) |
SYSTEM | Backend automation (status transitions, ongoing-monitoring rescans, threshold triggers) |
VERIFICATION | KYC / KYB session lifecycle (session created, feature finished, decision rendered) |
TRANSACTION | Transaction monitoring events (rule triggers, severity shifts, case openings) |
REVIEW | Console reviewer actions (notes, tag changes, status overrides) |
subject_kind—USER,BUSINESS, orEXTERNAL(a counterparty not registered as one of your entities).subject_vendor_data— the entity’svendor_datawhen applicable.source— one of the five categories above.activity_type— machine-readable type tag (e.g.note_added,status_changed,session_completed,rule_triggered).title/description— human-readable summary; safe to render in your timeline UI.session_id,business_session_id,transaction_id— FK identifiers when the activity is tied to a specific session or transaction.
activity.created to mirror the Didit timeline into your own audit / compliance log, trigger follow-up workflows on specific activity types, or power a customer-facing timeline view.
Delivery, retries, and signing
All entity webhooks follow the standard delivery contract:- Signed with HMAC-SHA256 via the
X-Didit-Signatureheader (secret shared key on your destination). - Retried with exponential backoff on non-2xx responses (1s → 2s → 4s → … up to 5 retries over ~24 hours).
- Idempotent — every webhook has a unique
event_idin the payload; de-dupe on your side.
Subscribing
Subscribe to entity events on a webhook destination via the Management API or Business Console:Next steps
Webhooks reference
Destinations, signatures, retries, and verification.
Create destination
Register a new webhook endpoint.
User operations
Changes that trigger user webhooks.