Вебхук в n8n: настройка и почему он не срабатывает
Чем тестовый URL вебхука отличается от боевого, полный список причин, по которым вебхук не приходит, как отвечать вызывающей стороне и как защитить публичный эндпоинт.
Все статьи гида n8n · 18
«Вебхук не приходит» - самый частый вопрос по n8n. Хорошая новость: причин конечное число, и они проверяются по порядку за несколько минут.
Тестовый и боевой URL
Это источник большинства недоразумений, поэтому начнём с него.
Тестовый URL живёт, только пока вы нажали в редакторе кнопку прослушивания. Он ждёт один запрос, показывает пришедшие данные и замолкает. Инструмент отладки: удобно один раз посмотреть, что реально шлёт сервис.
Боевой URL работает постоянно, но только у активированного воркфлоу. Не активировали - адрес отвечает ошибкой.
Практическое следствие: интеграция, настроенная на тестовый адрес, перестанет работать, как только вы закроете редактор. Перенос в прод - это не только включение тумблера, но и смена URL у вызывающей стороны.
Почему не приходит: порядок проверки
Идите сверху вниз, это быстрее, чем гадать.
- Воркфлоу активирован? Причина номер один.
- Тот ли URL? Тестовый вместо боевого - причина номер два.
- n8n знает свой публичный адрес? Если переменная публичного адреса не задана, интерфейс покажет
localhost, куда внешний сервис не достучится. См. установку. - HTTPS есть? Многие сервисы не отправляют вебхуки на http вовсе.
- Метод совпадает? Нода ждёт POST, сервис шлёт GET - запрос не найдёт обработчик.
- Путь совпадает? Лишний слэш в конце или изменённый путь в ноде дают 404.
- Прокси не режет? Слишком строгий таймаут или лимит размера тела на реверс-прокси обрывает запрос до n8n.
- Отправитель вообще шлёт? Посмотрите логи на его стороне: часто выясняется, что вебхук отключён или адрес сохранён неверно.
Самая полезная проверка: отправьте запрос обычным curl на боевой адрес. Если выполнение появилось в истории - n8n в порядке, проблема у отправителя. Если нет - дело в сети, адресе или активации.
Ответ вызывающей стороне
По умолчанию вебхук отвечает сразу, не дожидаясь конца воркфлоу. В большинстве случаев это правильно: отправитель получил подтверждение и не висит.
Иногда нужно вернуть результат работы - например, вы делаете API-эндпоинт. Тогда режим ответа переключается на возврат данных из указанной ноды, и появляется ограничение: вызывающая сторона ждёт. Если воркфлоу выполняется полминуты, отправитель полминуты держит соединение, и его собственный таймаут может сработать раньше вашего ответа.
Рабочее правило: длинная обработка - отвечайте сразу «принято», результат отдавайте отдельно колбэком, сообщением или записью в базу.
Отдельно: код ответа имеет значение. Многие сервисы повторяют доставку при неуспешном коде. Если вы отвечаете ошибкой на корректно принятый запрос, вы получите его копии.
Защита эндпоинта
Вебхук - это открытый адрес в интернете, и его найдут: сканеры перебирают пути постоянно.
Минимальный набор:
- Секрет в запросе. Заголовок или токен, который проверяется первой же нодой. Не совпал - выполнение обрывается.
- Проверка подписи, если сервис её присылает. Надёжнее токена, потому что подтверждает и содержимое.
- Ничего не делать до проверки. Валидация стоит раньше любых действий с внешним миром.
- Ограничение размера тела на реверс-прокси.
И важное: длинный случайный путь не является защитой. Это не секрет, а просто адрес; он утечёт в логи, в историю браузера и в настройки сервиса, который его вызывает.
Дубли и повторы
Отдельная тема, о которой вспоминают поздно: вызывающая сторона может прислать один и тот же вебхук дважды. Это нормальное поведение при повторной доставке, а не сбой.
Отсюда требование: обработка должна быть безопасна при повторе. Проверяйте идентификатор события и пропускайте уже обработанное - иначе получите два заказа, два письма и два списания.
Общая механика триггеров - триггеры и вебхуки. Разбор входящих данных - JSON в n8n. Обзор - гид по n8n.
Вопросы и ответы
Почему вебхук в n8n не срабатывает?
Три причины закрывают большинство случаев: воркфлоу не активирован, используется тестовый URL вместо боевого, и n8n не знает свой публичный адрес, поэтому выдаёт localhost. Проверять надо именно в этом порядке.
Чем тестовый URL вебхука отличается от боевого?
Тестовый ждёт один вызов и работает, только пока вы нажали кнопку прослушивания в редакторе. Боевой работает постоянно, но лишь у активированного воркфлоу. Это разные адреса, поэтому перенос в прод почти всегда означает смену URL у вызывающей стороны.
Как проверить, что вебхук вообще доходит до n8n?
Отправить запрос обычным curl на боевой адрес и посмотреть историю выполнений. Если выполнение появилось - проблема на стороне отправителя, если нет - на стороне сети или адреса. Одна эта проверка снимает половину гипотез.
Ещё по теме
- n8n: полный практический гид по автоматизации воркфлоуГид
- Установка n8n в Docker: self-hosted на своём сервереКак поднять n8n на своём сервере через Docker: docker compose, том для данных, ключ шифрования, HTTPS и вебхуки за реверс-прокси, переход на PostgreSQL и что бэкапить, чтобы не потерять доступы.
- Триггеры и вебхуки в n8n: как запускается воркфлоуВиды триггеров в n8n и работа с вебхуками: чем тестовый URL отличается от боевого, почему вебхук не приходит, ответ вызывающей стороне, расписание и таймзоны, защита публичного эндпоинта.
- Данные и выражения в n8n: элементы, $json и почему нода срабатывает много разКак устроены данные в n8n: массив элементов вместо объекта, выражения $json и $node, обращение к предыдущим нодам, работа с вложенным JSON, объединение и разбиение потоков и типичные ошибки с пустыми данными.
Сделаю под ключ
Соберу автоматизацию на n8n или кодом
Заявки, таблицы, CRM и Telegram связаны между собой, и никто больше не переносит данные руками.
от 300 $ · 3-7 дней
«Спасибо Павлу, поставленная задача выполнена. Всегда на связи, дал подробную инструкцию и руководство, буду обращаться, всем рекомендую.»