Вчера сообщение пришло в n8n, и слово «Привет» было видно в редакторе. Сегодня отправляете на тот же адрес — в ответ 404. Узел стоит на месте, стрелки тоже, никто ничего не разбирал. Словно вчера в дом доставили письмо, а сегодня почтальон вернулся и обнаружил вместо калитки сплошной забор.
У Робинзона в частоколе не было двери: он входил по приставной лестнице. Вообразите доставку письма в такое жильё. Посыльный обошёл ограду, заглянул между кольями и уже примеряется перекинуть сумку через верх — хотя ему просто забыли поставить лестницу. Для тестового адреса перед посылкой тоже включают вход: ожидание события. Рабочий адрес связан с опубликованной схемой и ручного ожидания не требует. Пройдём оба на одной маленькой доставке.
Соберём путь запрос → приём данных → выбор полей → ответ. На вход придут метка demo-1 и слово «Привет». Эти две приметы позволят найти свою посылку. На выходе зададим короткое подтверждение; по нему отправитель поймёт, что схема дошла до нужного шага. Затем отдельно увидим полученные поля в запуске.
Начнём в своей уже работающей среде
Понадобится собственная доступная n8n, где вы можете создавать и публиковать схемы, и компьютер, с которого её адрес открывается по сети. Это может быть уже заведённая облачная среда или свой сервер; доступ и возможная оплата оформляются отдельно. Начинаем в открытом редакторе. Наш сегодняшний финиш — одна принятая посылка и ответ на неё.
Если вы пока только разбираете устройство схем, можно сначала посмотреть пример импорта и правки workflow. Нам сейчас нужна пустая новая схема, чтобы случайно не запустить уже подключённые действия. Назовите её, например, «Учебное приветствие».
Оставим в первой схеме только приём и ответ. Пока она не пишет в таблицы и не отправляет письма, легко проследить путь одной посылки. Когда на экране появятся ваши event_id и message, вы сможете указать место, до которого данные уже дошли.
Куда стучать: создайте вход для POST
Добавьте первым узлом Webhook. В его настройках HTTP Method выберите POST. Это способ отправки запроса с данными. В поле Path оставьте уникальное сгенерированное значение или задайте свой свободный путь, например demo-greeting. В готовый URL n8n сама включит этот путь.
Для доступного по сети входа выберите Authentication → Header Auth и создайте учётные данные этого типа. В них Name — имя заголовка, пусть будет X-Demo-Key, а Value — ваша длинная случайная строка из латинских букв и цифр. Она будет ключом для этого входа. Сохраните её у себя: то же значение понадобится отправителю. Поля подтверждены в справке Webhook credentials.
На первом приёме в поле Respond выберите Immediately: узел сразу подтвердит запуск стандартным сообщением. Это короткая проба одного входа. Когда увидим данные, добавим два следующих узла и поменяем режим ответа. Так каждое изменение будет опираться на уже замеченный результат.

Схема интерфейса: проверьте POST, выберите Test URL и включите Listen for Test Event.
Вверху панели находятся Test URL и Production URL. Сейчас выберите Test URL и скопируйте адрес. Кнопка Listen for Test Event включает ожидание; нажмём её непосредственно перед отправкой. По официальному описанию тестового режима оно длится 120 секунд. Сначала спокойно подготовим команду, затем откроем вход для посылки.
Если непонятно, куда вставить запрос
Помощник может провести по незнакомому шагу. Откройте DeepSeek и опишите, где остановились. Не передавайте ему значение секрета; в описании замените его на YOUR_HEADER_SECRET, а закрытый адрес — на YOUR_TEST_URL.
Я делаю свою учебную схему в n8n: Webhook должен принять JSON с event_id и message. Помоги пройти только следующий шаг. Сначала уточни мою операционную систему, версию n8n и что уже открыто. Давай по одному действию: что открыть → куда вставить или что нажать → какой результат увидеть. Жди моего ответа. Если названия отличаются, сверь официальную документацию при наличии поиска или попроси нужный фрагмент. Не считай, что видишь мой экран. В примерах используй только YOUR_TEST_URL и YOUR_HEADER_SECRET; настоящих секретов я не отправляю.
Ниже готовая команда для macOS или Linux. На Mac откройте приложение «Терминал» через поиск приложений. В его окно вставляется команда, которая отправит один запрос на ваш тестовый адрес. Сначала замените две заглушки своими значениями, сохранив кавычки.
curl -i -X POST 'YOUR_TEST_URL' \
-H 'Content-Type: application/json' \
-H 'X-Demo-Key: YOUR_HEADER_SECRET' \
--data '{"event_id":"demo-1","message":"Привет"}'
YOUR_TEST_URL замените адресом из вкладки Test URL, YOUR_HEADER_SECRET — значением из Header Auth. Первое -H сообщает формат: JSON, то есть небольшой объект с именованными полями. Второе передаёт ключ. Часть после --data — само содержимое посылки: узнаваемая метка demo-1 и наше приветствие. На этой пробе оставьте их прежними, чтобы сравнивать одинаковые данные.
На Windows попросите помощника адаптировать этот же запрос для своего терминала; ему важны система и программа, а не настоящий ключ. Сам образец данных сохраните: пока мы проверяем один и тот же маленький маршрут.
Посылка дошла: найдите «Привет» в body
Когда команда подготовлена, вернитесь в n8n и нажмите Listen for Test Event, затем в терминале — Enter. При режиме Immediately ожидается стандартный ответ об успешном старте. В редакторе откройте данные узла Webhook и найдите объект body. Внутри должны быть event_id: demo-1 и message: Привет. Если отвлеклись и ожидание закончилось, снова включите его перед отправкой.
У посылки есть адресные сведения и содержимое. Во входящих данных n8n заголовки лежат отдельно от объекта body — тела запроса. В нём и находятся наши два значения. Следующий узел возьмёт body.event_id и body.message. Теперь слово «тело» обозначает знакомую вещь: тот самый маленький объект с приветствием.
Если нужные поля появились, первый участок пройден. Сверьте слово и метку, затем посмотрите, куда будете их передавать. Ответ отправителю и содержимое узла — две доступные проверки. Они помогут позже понять, что изменилось: доставка до входа, выбор значений или подготовка ответа.
Выберите поля и верните своё подтверждение
После Webhook добавьте Edit Fields (Set), а за ним — Respond to Webhook. Соедините три узла в одну цепочку. В Edit Fields выберите Manual Mapping и добавьте два строковых поля:
| Имя поля | Значение в режиме Expression | Что ожидаем после узла |
|---|---|---|
event_id |
{{ $json.body.event_id }} |
demo-1 |
message |
{{ $json.body.message }} |
Привет |
Выражение берёт значение из входных данных. Его можно ввести в поле или перетащить нужное значение из INPUT, как показано в документации Edit Fields. Включите Keep Only Set Fields, чтобы дальше шли только заданные поля. В редакции с выбором Include in Output укажите вывод только заданных данных. Заголовки авторизации в ответ нам не нужны.

Схема данных: получаем тело запроса, оставляем два поля и отправляем явное подтверждение.
В Respond to Webhook выберите Respond With → JSON. В Response Body вставьте:
{"ok":true}
Через Add Option → Response Code задайте 200. Это код успешного ответа для нашей пробы. Затем вернитесь в Webhook и поменяйте Respond с Immediately на Using ‘Respond to Webhook’ Node. Теперь ответ задаёт последний узел, как описано в официальной инструкции.
Снова включите Listen for Test Event и отправьте тот же учебный POST. В терминале ожидаются код 200 и тело {"ok":true}. Посмотрите оба: успешный код может сопровождать и стандартное сообщение. В запуске проверьте три результата: Webhook получил данные в body, Edit Fields оставил event_id и message, Respond to Webhook выполнился. Это наша короткая обратная открытка: посылка прошла выбранную цепочку, ответ вернулся отправителю.
Тестовая лестница и постоянный адрес
Чтобы Webhook в n8n принимал сообщения без ручного Listen, сохраните готовую схему и опубликуйте её через Publish в своей текущей версии. Затем в узле выберите Production URL и скопируйте показанный рабочий адрес. У отправителя замените тестовый URL на него; метод POST, JSON и ключ остаются согласованными с настройками.
Тестовый адрес остаётся отдельным входом для разработки. Пока у отправителя сохранён он, опубликованная схема не превратит эту строку в Production URL. Поэтому после публикации меняем именно адрес в команде. В старых уроках встречается переключатель Active; действующая документация описывает публикацию workflow. При отличии интерфейса назовите помощнику свою версию и найдите соответствующий шаг по её справке.

Схема режимов: для теста включают ожидание, для рабочего адреса публикуют схему и смотрят Executions.
Отправьте один учебный запрос на Production URL и откройте вкладку Executions. Найдите свежий запуск, откройте его и посмотрите данные узлов. Проверяйте, дошли ли demo-1 и «Привет». При рабочем URL эти данные не обязаны появляться на полотне редактора: для них мы и открыли отдельный журнал.
После этой проверки у вас есть обе стороны пути: запрос приходит в опубликованную схему, отправитель получает выбранное подтверждение, а вы находите запуск в журнале. Это уже понятная основа для следующего действия внутри своей автоматизации.
Что проверить, если снова 404
Прочитайте строку адреса в команде и сравните с выбранной вкладкой узла. Для Test заново включите ожидание, для Production проверьте публикацию схемы. Затем сверяйте метод POST и Path. Четыре приметы одной доставки — адрес, состояние входа, способ отправки и путь — помогают найти место сбоя. Простой переход по ссылке в браузере обычно даёт GET, хотя наш вход ждёт POST.
В обсуждении n8n Community человек столкнулся именно с незарегистрированным адресом и путаницей тестового и рабочего входа. После замены URL на стороне отправителя доставка заработала. Это старая версия интерфейса, но различие двух адресов осталось полезным для проверки.
Если ответ сообщает об ошибке авторизации, сравните имя X-Demo-Key и значение ключа в двух местах: в команде и учётных данных. Если запрос дошёл, но дальше потерялось «Привет», вернитесь к body и выражению следующего узла. При иной ошибке дайте помощнику её обезличенный текст и последнее выполненное действие. Он сможет предложить проверку в том месте, где вы остановились.
Частые вопросы
Можно просто открыть ссылку в браузере?
Для нашего POST-примера этого недостаточно: обычный переход по адресу использует GET и не передаёт заданное тело JSON. Отправьте сохранённую команду или другой запрос с тем же методом, заголовками и данными.
Почему пришёл стандартный ответ вместо моего JSON?
Проверьте режим Respond в Webhook и выполнение Respond to Webhook. Мы выбрали отдельный узел, поэтому в Webhook должен стоять Using ‘Respond to Webhook’ Node. Не оставляйте Immediately после перехода на явный ответ.
Метка event_id сама предотвращает повторную обработку?
Нет, это только значение в данных. В нашем учебном пути повтор даст ещё один запуск. Когда вы позже добавляете действие, которое должно выполняться один раз, хранение и проверку уже обработанных меток проектируют отдельным шагом.
Что сделать после успешного приёма?
Сохраните обезличенный образец запроса и настройки трёх узлов, затем выберите одно следующее действие. Если оно связано с помощником, посмотрите как устроить понятную цепочку n8n с ИИ. Теперь вы знаете, где пришло «Привет» и откуда вернулось подтверждение. Посыльному больше не нужно обходить частокол с сумкой: адрес, вход и обратный путь у него уже есть.