Изменение объекта
Новая сделка, смена статуса, готовый документ, оплата или другое поддерживаемое событие запускает обработку.
Используем webhooks, когда система может сама сообщить о создании, изменении или результате операции. Это позволяет не опрашивать API без необходимости, но требует отдельной логики проверки источника, повторных событий, порядка обработки и связи события с конкретным объектом бизнеса.
Когда использовать
Если нужно узнать о конкретном изменении сразу после него, webhook обычно удобнее постоянного опроса. Для сверки больших наборов данных и восстановления состояния может дополнительно потребоваться обычный API.
Новая сделка, смена статуса, готовый документ, оплата или другое поддерживаемое событие запускает обработку.
Внешний сервис сообщает, что ранее созданная операция завершилась или перешла в новое состояние.
Полученное событие сопоставляется с конкретной сделкой, заказом, документом или другим объектом.
После подтверждённого события можно поставить задачу, изменить поле, отправить уведомление или запустить следующий этап.
Обработка
Endpoint должен быстро проверить и принять событие, а тяжёлую обработку при необходимости можно вынести в очередь.
Контракт события
Без этого повторная доставка или изменение порядка событий превращается в дубли и неверные статусы.
Если поставщик передаёт стабильный event ID, используем его для контроля повторной обработки.
Заказ, сделка, документ или внешний номер должны сопоставляться однозначно.
Разные состояния обрабатываем отдельными правилами, а неизвестные типы не трактуем как успешный результат.
Когда порядок событий важен, учитываем доступные признаки версии или времени и не перезаписываем новое состояние старым без проверки.
Храним достаточный журнал входящего события и результата обработки для диагностики, не дублируя лишние персональные данные.
Безопасность
Способ проверки зависит от поставщика: подпись, секрет, токен, allowlist или другая поддерживаемая схема. Если сервис не даёт криптографической подписи, компенсируем это ограничениями сценария и дополнительными проверками.
Используем механизм аутентификации или подписи, который реально поддерживает отправитель.
Webhook не получает больше возможностей, чем требуется конкретному сценарию.
Повтор одного события не создаёт второй документ, заказ или исходящее сообщение.
Отделяем временную ошибку внешней системы от некорректного события и сохраняем понятную причину.
Очереди и повторы
Получатель может получить одно событие несколько раз, а внешний API может временно не отвечать. Эти ситуации обрабатываются независимо.
Проверяем формат и источник.
Смотрим уникальный ключ и ранее сохранённый результат.
Для важной операции сохраняем её до внешнего вызова.
С контролируемым timeout и правилами безопасного повтора.
Статус виден сотруднику и доступен для повторной сверки.
Webhook + API
Не требуем от события содержать весь объект, если после него можно запросить нужные данные по стабильному идентификатору.
Архитектура
Так интеграция меньше зависит от состава payload конкретного webhook и проще восстанавливается после пропущенного или повторного события.
Вопросы
Нет. Webhook обычно доставляет событие от системы к нашему endpoint, а API используется, когда наш сервис сам запрашивает данные или выполняет операцию. В одном процессе часто используются оба механизма.
Многие системы повторяют доставку, если не получили ожидаемый ответ или не уверены в результате. Поэтому обработчик должен безопасно распознавать уже обработанное событие.
Не всегда. Для тяжёлых операций надёжнее быстро принять проверенное событие, сохранить задание и продолжить обработку отдельно, если контракт поставщика это допускает.
Используем поддерживаемую отправителем схему: подпись запроса, секрет, токен, ограничения источника или их комбинацию. Универсального метода для всех сервисов нет.
Если порядок влияет на бизнес-статус, используем доступные версии, время, текущий статус объекта и дополнительные запросы к API, чтобы старое событие не откатило новое состояние.
Только если поставщик гарантирует все необходимые события и процесс не требует периодической сверки. Для критичных интеграций иногда оставляем редкий контроль состояния как отдельный механизм восстановления.
Покажите источник, пример события и нужное действие после него. Определим контракт webhook, защиту от повторов и способ восстановления при ошибке.