# Получение результатов верификации через webhooks

Source: https://help.didit.me/ru/integration/webhooks-basics
Updated: 2026-10-12

Didit не присылает email при смене статуса: настройте webhook, чтобы бэкенд узнавал о событии сразу. Проверяйте подпись перед обработкой.

Webhook - это HTTP-запрос, который Didit отправляет на ваш URL при изменении.
Добавьте назначение в разделе **Разработчики → Вебхуки**, подпишитесь на нужные
события - подстановочного знака **нет**, перечислите каждое - сохраните
секрет подписи и проверяйте подпись, прежде чем что-либо обрабатывать.

[Video: Обзор вебхуков - Didit Academy](https://www.youtube.com/watch?v=fX03-WEu_EI&t=192)

Didit не отправляет вам email, когда сессия переходит в **In Review** или **Declined**. Чтобы узнавать об изменении статуса в момент, когда оно происходит, не обновляя консоль вручную, настройте webhook - URL на вашем сервере, на который Didit автоматически отправляет обновление.

Webhooks - это **рекомендуемый** способ интеграции. Опрос endpoint решений работает как запасной вариант, но он медленнее, требует больше запросов и пропускает события, которые доставляются только через webhook, - правки данных, внесённые ревьюером, изменения статуса транзакций и изменения на уровне сущностей.

## Настройка

1. **Разработчики → Вебхуки**

   Откройте нужное приложение и среду Live или Sandbox, затем Разработчики и Вебхуки.

2. **Добавьте конечную точку**

   Нажмите Добавить конечную точку, укажите HTTPS URL, название и события. Используйте рекомендуемую v3, кроме случаев поддержки старой интеграции. Проверьте и подтвердите.

3. **Сохраните секрет подписи**

   У каждой точки свой скрытый секрет подписи. Нажмите Показать и подтвердите личность; через 60 секунд секрет снова скрывается. Сохраните его в настройках сервера. Если кнопка недоступна, обратитесь в поддержку. [Разработчики → Вебхуки](https://docs.didit.me/integration/webhooks#signature-verification).

4. **Отправьте тестовое событие**

   Подписанное тестовое событие позволяет проверить адрес, подпись и обработку без реальной верификации.

![Назначения webhook в консоли Didit с подписанными событиями и историей доставки](https://help.didit.me/screenshots/webhooks-light.webp)

*У каждого назначения свои подписанные события, секрет подписи и лог доставки.*

## На какие события можно подписаться

Подстановочного знака **нет** - перечисляйте каждое нужное семейство событий. Разнести их по нескольким назначениям - это нормально и часто даже удобнее.

| Событие | Срабатывает, когда |
|---|---|
| `status.updated` | Меняется статус сессии KYC или KYB. То, что вам почти наверняка нужно |
| `data.updated` | Данные верификации редактируются после создания - например, ревьюер исправляет поле |
| `user.status.updated` | Консолидированный пользователь переходит между ACTIVE, FLAGGED и BLOCKED |
| `user.data.updated` | Меняется профиль, счётчики или идентификаторы консолидированного пользователя |
| `business.status.updated` | Меняется статус консолидированной компании |
| `business.data.updated` | Меняются данные консолидированной компании |
| `transaction.created` | Транзакция создана, и по ней готов первоначальный вердикт |
| `transaction.status.updated` | Статус транзакции меняется впоследствии |
| `travel_rule.status.updated` | Меняется статус обмена по Travel Rule |

> **Note:** Событий `session.status.updated` или `kyc.completed` не существует. Если вы
> подписались на название, которого нет в этом списке, вы не получите ничего - и
> это будет выглядеть в точности как сбой доставки. Сначала проверьте название.

## Что должен делать ваш эндпоинт

- **Проверять подпись раньше всего остального.** Считайте HMAC от **сырого** тела запроса - никогда от пересериализованной версии разобранного JSON, потому что повторная сериализация меняет байты, и подпись перестаёт совпадать. Используйте сравнение за постоянное время.
- **Быстро возвращать 2xx.** Тяжёлую работу выполняйте асинхронно, уже после ответа.
- **Быть идемпотентным.** Ключом должен быть id события либо связка id сессии + статус + тип webhook. Повторы и дубликаты случаются.
- **Обрабатывать каждый статус, который для вас важен**, включая те, что приходят намного позже онбординга - одобренная сессия может позже перейти в In Review из-за [постоянного AML-мониторинга](https://help.didit.me/ru/aml-screening/ongoing-monitoring).
- **Только HTTPS.** Обычные HTTP-эндпоинты не поддерживаются.

## Повторы

При ответах 5xx или 404 Didit повторяет доставку дважды: примерно через минуту, затем через четыре. Тайм-аут после 5 секунд и ошибка соединения не повторяются автоматически. После исправления используйте Повторить в списке доставок. Окончательный сбой вызывает уведомление.

> **Warning:** Не рассчитывайте на гарантированную доставку каждого вебхука. После сбоя повторите отправку или запросите решение по сессиям, результат которых вы не получили.

## За файрволом или WAF

Didit доставляет события со статического IP **18.203.201.92** с user agent `DiditWebhook/2.0`. Если ваш периметр блокирует неизвестных клиентов - как, например, поведение Cloudflare по умолчанию, - разрешите этот IP для принимающего хоста, иначе доставки будут падать, не доходя до вашего кода.

## Ещё нет бэкенда?

Вы всё ещё можете вручную следить за результатами в разделе **Verifications** консоли, пока не построите его, или использовать [ссылку для верификации без кода](https://help.didit.me/ru/integration/integration-options) тем временем.

## Дальнейшие шаги

- Когда webhook так и не приходит: [когда webhook так и не приходит](https://help.didit.me/ru/integration/webhook-troubleshooting)
- Разобраться, что означает каждый статус после его получения: [что означает каждый статус сессии](https://help.didit.me/ru/verification-sessions/session-statuses)
- Полная техническая документация, включая примеры кода для проверки подписи: [Webhooks](https://docs.didit.me/integration/webhooks)
