Webhook нужен, когда внешний сервис сам сообщает сайту о событии: оплата прошла, заказ изменился, лид создан, сообщение пришло, доставка обновилась.

Хороший webhook-обработчик не просто принимает JSON. Он проверяет подпись, логирует событие, отвечает правильным статусом и не теряет данные при ошибке.

Почему это влияет на заявки и деньги

Если webhook работает плохо, сайт может не узнать об оплате, не создать заявку, не поменять статус заказа или не отправить уведомление менеджеру.

  • платеж прошел, а заказ не обновился
  • CRM отправляет событие, но сайт молчит
  • Telegram-бот не получает updates
  • нужно принять данные из внешнего сервиса
  • сервис требует URL для webhook

Где обычно прячется проблема

Нет проверки подписи

Без проверки можно принять поддельное событие или мусорный запрос.

Сайт отвечает неправильным статусом

Некоторые сервисы повторяют webhook, если не получили 200 OK или ожидаемый ответ.

Нет логов тела запроса

При отладке важно видеть, что реально отправил внешний сервис.

Нет идемпотентности

Один webhook может прийти повторно, и обработчик не должен создавать дубли.

Что проверить перед доработкой

  • документация сервиса
  • пример payload
  • нужна ли проверка подписи
  • какой ответ ожидает сервис
  • что делать при повторном событии

Как выглядит нормальное решение

Нормальный webhook принимает событие, валидирует источник, записывает лог, выполняет действие и корректно отвечает сервису. Для важных операций нужна защита от дублей.

  1. Фиксируем текущую проблему и ожидаемый результат.
  2. Проверяем сайт, сервер, логи, админку или внешний сервис.
  3. Делаем минимальную рабочую правку без лишней переделки.
  4. Тестируем сценарий и оставляем понятный результат: что изменено и как этим пользоваться.

Типичные ошибки

  • обрабатывать webhook без проверки подписи
  • не логировать ошибки
  • создавать дубль при повторном событии
  • делать долгую обработку прямо в ответе webhook

Оценка сроков

Простой webhook2-4 часа
Webhook с подписью и логами1 день
Сложная обработка статусовиндивидуально

Что еще может пригодиться

Вопрос-ответ

Чем webhook отличается от API-запроса?

API обычно вызывает ваш сайт, а webhook вызывает внешний сервис, когда у него произошло событие.

Нужно ли хранить все webhook-события?

Для важных интеграций полезно хранить хотя бы технический лог, чтобы разбирать ошибки.

Что такое идемпотентность?

Это защита от повторной обработки одного и того же события.

Итог

Webhook должен быть безопасным, логируемым и устойчивым к повторным событиям, иначе интеграция будет работать непредсказуемо.

Если у вас похожая задача, напишите в Telegram: @rabotator_support. Я посмотрю ситуацию, уточню риски и предложу решение без лишней бюрократии.