--- title: "Event webhook | Veriff.com" slug: "event-webhook" description: "Set up Veriff's optional event webhook to track session status changes in identity verification." updated: 2025-07-23T08:34:15Z published: 2025-07-23T08:34:15Z canonical: "devdocs.veriff.com/event-webhook" --- > ## Documentation Index > Fetch the complete documentation index at: https://devdocs.veriff.com/llms.txt > Use this file to discover all available pages before exploring further. # Event webhook This webhook is **optional** and should be configured if you are interested in getting **info about the progress of the verification data gathering**. If you decide to configure the webhook, you need to set `Webhook events URL` up in the Veriff Customer Portal. → *See Webhooks Guide > [Set up webhooks](https://veriff-dev-documentation.document360.io/docs/webhooks-guide#set-up-webhooks) sub-section for detailed overview of the setup process* --- ## When is event webhook sent? Veriff uses the event webhook to pass data about the verification session status change from “started” to “submitted”. The payload is sent to `Webhook events URL` and it tracks the events happening in the identity verification process performed by the end-user. **It does not provide info about the decision of the verification**. --- ## Prerequisites 1. Make sure you **have access to the Veriff Customer Portal** 1. If you do not, see the Getting Started → [Sign up](https://devdocs.veriff.com/docs/signing-up) and [Log in](https://devdocs.veriff.com/docs/logging-in) articles 2. Set up webhook URL(s) **on your side** and have them at hand 1. Make sure they **match** the [Webhook URL](https://devdocs.veriff.com/docs/webhooks-guide#webhook-url-requirements) requirements 2. Make sure your system is **able to handle** [Webhooks receipt, delivery and resending](https://devdocs.veriff.com/docs/webhooks-guide#webhook-delivery-receipt-and-resending) requirements 3. Check the [Webhooks headers and payload](https://devdocs.veriff.com/docs/webhooks-guide#webhooks-headers-and-payload) section for info 3. Secure your communication, check the [HMAC Authentication and Endpoint Security](https://devdocs.veriff.com/docs/hmac-authentication-and-endpoint-security) article 4. Make sure your system is **able to handle** the [Backwards compatible changes](https://devdocs.veriff.com/docs/backwards-compatible-changes) 5.Proceed to [Decision webhook setup section below](/v1/docs/decision-webhook#decision-webhook-setup) --- ## Events webhook set up 1. Log in to the **Veriff Customer Portal** 2. Navigate to the **Integrations** page via the top menu and open the relevant integration 3. On the integration's page, select the **Settings** tab 4. Under the title **Integration settings** you see a list of webhooks 5. Fill in the `Webhook events URL` → *See Webhooks Guide > [Set up webhooks](https://veriff-dev-documentation.document360.io/docs/webhooks-guide#set-up-webhooks) sub-section for detailed overview of the setup process* --- ## Sample request ```json {  "id": "f04bdb47-d3be-4b28-b028-a652feb060b5",  "attemptId": "e30122d1-740b-4764-853f-470374a7abf4",  "feature": "selfid",  "code": 7002,  "action": "submitted",  "vendorData": "12345678",  "endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4" } ``` ## Request properties explained - `id`: `string`* UUID v4 which identifies the verification session - `attemptId`: `string`* UUID v4 which identifies session attempt - `feature`: `string`* Feature on which the event was triggered (`selfid` refers to the end-user flow) - `code`: `integer`* Event code, one of `7001`, `7002` - `action`: `string`* Name of the triggered event, one of `started`, `submitted`, `waiting_continued`, `waiting_complete`, `flow_finished`, `flow_cancelled`, `document_type_other_selected` - `vendorData`: `string | null`* The unique identifier that you created for your end-user. `null` if not specified - `endUserId`: `string | null`* The unique UUID that you created for your end-user. `null` if not specified - `context`: `object` Object containing info about possible reasons why the event was triggered. Optional, present only if the [additional end-user flow events](/v1/docs/event-webhook#additional-enduser-flow-events) tracking is enabled for the integration - `reason`: `string` Indicates the reason why the event was triggered - `state`: `string` Indicates the state of the end-user flow at the moment of flow stopping, i.e. when the event was triggered (e.g., because the flow was finished or abandoned) *Required field --- ## Possible events over the webhook > [!NOTE] > 7007-7010 events can be received only when you are using Veriff's web flow, and these require some additional configuration on Veriff side. > > Contact your **solutions engineer** for info and configuration. | Webhook code | `action` value aka event name aka webhook action | Description | Available | Configuration to receive events | "Waiting for decision" page enabled | | --- | --- | --- | --- | --- | --- | | 7001 | started | The end-user arrives to Veriff verification flow and **starts** the verification process | via API and SDK/Web | Not needed | Not needed | | 7002 | submitted | The end-user is done with the process and **submits** the attempt. This webhook is sent before the end-user is directed to the callback URL specified on session creation (if applicable). | via API and SDK/Web | Not needed | Not needed | | 7007 | waiting_complete | The end-user **gets the decision** on the "waiting for decision" page | Web only | Yes, required | Yes, required | | 7008 | waiting_continued | The end-user **clicks on the Continue** button on the "waiting for decision" page **before the decision is available**. This triggers the action that you have configured for the case when the end-user finishes the flow. | Web only | Yes, required | Yes, required | | 7009 | flow_finished | The end-user reached the final screen and **clicked** on the **Continue** button | Web only | Yes, required | Not needed | | 7010 | flow_cancelled | The end-user **abandons the verification** flow | Web only | Yes, required | Not needed | | 7011 | document_type_other_selected | The end-user indicates that they want to use another document type for verification | Web only | Yes, required | Not needed | There are also events which Veriff does not notify you about. Log in to your Veriff account and see the [Verification statuses and decisions meaning](https://help.veriff.com/en/articles/3250231-meanings-of-various-verification-statuses-and-decisions)[↗] article In Veriff Knowledge Base for more info. --- ## Additional end-user flow events If you are using Veriff’s web flow and the additional end-user flow events tracking has been enabled for your integration, events 7007-7010 may send additional info. The payload may include: - `action` string, naming the end-user flow event aka webhook action (see the table above) - a `context` object, containing the optional: - `reason` string, explaining why the event was triggered and giving some context to the `action` string - `state` string, indicating when the event was triggered by describing the state of the end-user flow at the moment of flow stopping (e.g., because the flow was finished or abandoned) > [!NOTE] > *→ See the* [*End-user flow events (table)*](/v1/docs/end-user-flow-events-table) *article for more detailed overview of possible* `reason` *and* `state` *values* #### Sample request when the end-user received the decision on the "waiting for decision" page ```json {  "id": "f04bdb47-d3be-4b28-b028-a652feb060b5",  "attemptId": "e30122d1-740b-4764-853f-470374a7abf4",  "feature": "selfid",  "code": 7007,  "action": "waiting_complete",  "context": {      "reason": "final_decision_received"  },  "vendorData": "QWE123",  "endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4" } ``` #### Sample request when the end-user finished the flow ```json {  "id": "f04bdb47-d3be-4b28-b028-a652feb060b5",  "attemptId": "e30122d1-740b-4764-853f-470374a7abf4",  "feature": "selfid",  "code": 7009,  "action": "flow_finished",  "context": {      "reason": "finished_screen_confirmed_clicked",      "state": "finished_screen_shown"  },  "vendorData": "QWE123",  "endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4" } ``` #### Sample request when the end-user abandoned the flow ```json {  "id": "f04bdb47-d3be-4b28-b028-a652feb060b5",  "attemptId": "e30122d1-740b-4764-853f-470374a7abf4",  "feature": "selfid",  "code": 7010,  "action": "flow_cancelled",  "context": {      "reason": "quit_session_confirmed",      "state": "camera_access_blocked_screen_shown"  },  "vendorData": "QWE123",  "endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4" } ``` --- ## Changelog | Date | Description | | --- | --- | | Jul 23, 2025 | Improvements to [Additional end-user flow events](/v1/docs/event-webhook#additional-enduser-flow-events) section | | Jun 6, 2025 | Heading “Article versioning” changed to “Changelog” | | May 7, 2025 | - Tables showing the possible values for `reason` and `state` strings in the event webhook payload have been moved to a separate new article: [End-user flow events (table)](/v1/docs/end-user-flow-events-table). The lists there have been updated with new values. - Updated the note about 7002 `submitted` webhook action | | Mar 12, 2025 | Documentation published | A session during which the end-user is verified. It starts when a session is created, it can contain several attempts (i.e. steps of uploading media, sending additional data etc.) and it ends when a conclusive decision (“approved”, “declined”, “expired”/”abandoned”) is granted. Each verification session receives an unique ID, aka the **session ID**, which can be added to the API URL when making API requests. Changes to the verification session status. **User of Veriff customer's solution**, the person who goes through the verification flow (aka "end-user flow"). This is returned after the end-user's data has been analysed and the system has reached a conclusion about the end-user's verification session. Can be `approved`, `declined`, `resubmission_requested`, `expired` or `abandoned`. Only if previously agreed with Veriff, you may also be receiving `review`. ## Related - [Webhooks Guide](/webhooks-guide.md)