Webhook от внешнего сервиса не может попасть на обычный localhost напрямую. Для тестирования нужен публичный HTTPS-адрес или туннель.

Почему возникает проблема

Сервис отправляет запрос из интернета. Локальный сервер за NAT недоступен, а иногда дополнительно мешают HTTPS, firewall, неверный endpoint, подпись запроса или ответ не тем статусом.

Что проверяю

  • Какой URL указан в настройках webhook.
  • Доступен ли он из интернета.
  • Используется ли HTTPS.
  • Логируются ли входящие запросы.
  • Правильно ли сервер отвечает на проверочный запрос.

Как решаю задачу

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

  • Поднимаю локальный endpoint.
  • Настраиваю публичный туннель.
  • Подставляю HTTPS URL в сервис.
  • Проверяю подпись и формат события.
  • Добавляю логирование и обработку повторов.

Что будет на выходе

  • Webhook доходит до локального сервера.
  • Можно отлаживать интеграцию без деплоя на production.
  • Ошибки запроса видны сразу.
  • Переход на сервер проходит проще.

Что подготовить

  • Какой сервис отправляет webhook.
  • Локальный endpoint.
  • Формат ожидаемого события.
  • Нужна ли проверка подписи.

Вопросы и ответы

Можно ли использовать ngrok?

Да, это один из вариантов. Можно использовать и другие туннели или dev-сервер с HTTPS.

Почему сервис отключает webhook?

Если endpoint долго не отвечает или возвращает ошибки, сервис может временно остановить доставку.

Нужна похожая задача?

Опишите, что именно не работает и где это видно. Я быстро разберу симптомы, проверю техническую причину и предложу понятный план исправления без лишних созвонов и затяжки.