Без уведомлений сбой сценария замечают поздно, когда клиент спрашивает, почему ему не ответили. После этой настройки n8n сам сообщает о каждой ошибке и присылает ссылку на запуск, где она случилась. Займёт 15–20 минут.
Что понадобится
- n8n на своём сервере с HTTPS. Как его поставить, описано в инструкции по установке.
- Бот в Telegram, его токен и ID чата для уведомлений. Как создать бота и узнать ID, описано в статье о согласовании в Telegram.
- Доступ к сценариям, которые нужно отслеживать.
Три уровня защиты
- Retry On Fail. Узел сам повторяет действие, если оно не удалось. Спасает от разовых сбоев сети и внешнего сервиса.
- On Error. Узел решает, остановить сценарий при ошибке или продолжить.
- Сценарий ошибок. Если сценарий всё же упал, n8n запускает отдельный сценарий с узлом Error Trigger, и тот присылает уведомление.
Начнём с третьего уровня, он нужен всегда.
Шаг 1. Создать сценарий ошибок
- Создайте новый сценарий и назовите его, например,
Уведомления об ошибках. - Первым узлом добавьте Error Trigger.
- Сохраните сценарий. Публиковать его не нужно, Error Trigger работает и без этого.
Когда другой сценарий падает, Error Trigger получает примерно такие данные:
{
"execution": {
"id": "231",
"url": "https://n8n.example.ru/workflow/1/executions/231",
"error": {
"message": "Текст ошибки",
"stack": "..."
},
"lastNodeExecuted": "HTTP Request",
"mode": "trigger"
},
"workflow": {
"id": "1",
"name": "Ответы на отзывы"
}
}
Если ошибка случилась в самом триггере, например сценарий не смог подключиться к источнику событий, структура другая. Ссылки на запуск в этом случае нет, подробности лежат в поле trigger.
Шаг 2. Собрать уведомление
Добавьте узел Telegram: ресурс Message, операция Send Message. Выберите учётные данные бота, укажите Chat ID и вставьте в поле Text шаблон:
Ошибка в сценарии «{{ $json.workflow.name }}»
Узел: {{ $json.execution ? $json.execution.lastNodeExecuted : 'триггер' }}
Время: {{ $now.toFormat('dd.MM.yyyy HH:mm') }}
Запуск: {{ $json.execution && $json.execution.url ? $json.execution.url : 'ссылки нет' }}
В Additional Fields добавьте Append n8n Attribution и выключите его. Иначе в конце каждого сообщения будет приписка о том, что оно отправлено через n8n.
В шаблоне намеренно нет текста ошибки. Серверы Telegram находятся за рубежом, а ответы CRM и маркетплейсов иногда повторяют содержимое запроса: имя, телефон, текст обращения. Название сценария, имя узла и ссылка безопасны, подробности вы откроете по ссылке в n8n на своём сервере. Правила передачи данных за рубеж разобраны в статье о 152-ФЗ и автоматизации.
Шаг 3. Назначить сценарий ошибок
Откройте сценарий, который нужно отслеживать. В меню Options (три точки справа вверху) выберите Settings. В поле Error Workflow выберите Уведомления об ошибках и сохраните.
Повторите это для каждого рабочего сценария. Один сценарий ошибок обслуживает любое их число.
Шаг 4. Включить повтор при сбое
Внешние API иногда отвечают ошибкой 429 или 503, а через секунду снова работают. Чтобы такие сбои не превращались в уведомления, включите повтор в узлах, которые обращаются к внешним системам:
- Откройте узел, например HTTP Request, и перейдите на вкладку Settings.
- Включите Retry On Fail.
- Задайте Max. Tries от 2 до 5 (по умолчанию 3) и Wait Between Tries (ms) до 5000 (по умолчанию 1000).
Пауза дольше пяти секунд в этой настройке недоступна. Если API требует ждать дольше, обрабатывайте элементы пачками через узлы Loop Over Items и Wait.
Повтор опасен для действий, которые что-то создают. Если CRM создала сделку, но ответ потерялся по таймауту, повтор создаст дубль. Для таких запросов сначала проверяйте, есть ли уже запись, или включайте повтор только на чтении данных.
Шаг 5. Настроить поведение узла при ошибке
На той же вкладке Settings есть параметр On Error:
- Stop Workflow. Значение по умолчанию. Сценарий останавливается, запуск получает статус ошибки, срабатывает сценарий ошибок.
- Continue. Ошибка уходит дальше как обычный элемент, сценарий продолжается.
- Continue (using error output). У узла появляется второй выход, куда попадают элементы с ошибкой. Остальные идут по основному пути.
Третий вариант удобен для пачек. Допустим, сценарий публикует ответы на 40 отзывов, и один ответ не прошёл. Останавливать из-за него весь сценарий незачем, но узнать о нём нужно.
При Continue и Continue (using error output) запуск считается успешным, и сценарий ошибок не сработает. Ветку ошибок доведите до уведомления сами: соберите неудачные элементы и отправьте одно сообщение. Другой вариант: поставьте в конце ветки узел Stop And Error, тогда запуск завершится ошибкой и сработает общий сценарий ошибок.
Шаг 6. Проверить
Error Trigger не реагирует на ручные запуски из редактора. Чтобы проверить связку:
- Создайте тестовый сценарий из узла Schedule Trigger с запуском раз в минуту и узла Stop And Error с текстом
Проверка уведомлений. - Назначьте ему сценарий ошибок, как в шаге 3.
- Опубликуйте тестовый сценарий и дождитесь уведомления.
- Снимите тестовый сценарий с публикации.
Где смотреть запуски
Запуски одного сценария видны на вкладке Executions внутри него. Запуски всех сценариев собраны на странице Overview, тоже на вкладке Executions. В фильтре по статусу выберите Failed, чтобы оставить только ошибки.
Упавший запуск можно повторить с теми же входными данными. Вариант Retry with currently saved workflow запускает исправленную версию сценария, Retry with original workflow запускает ту версию, которая работала в момент ошибки.
Ссылка из уведомления открывается, только если запуск сохранён. Проверьте в настройках сценария, что для Save failed production executions выбрано сохранение. По умолчанию n8n удаляет запуски старше 336 часов (14 дней) и хранит не больше 10 000 записей. Эти значения меняются переменными EXECUTIONS_DATA_MAX_AGE и EXECUTIONS_DATA_PRUNE_MAX_COUNT. В запусках лежат данные клиентов, поэтому храните их не дольше, чем нужно для разбора ошибок.
Частые ошибки
- После ручного запуска уведомления нет. Так и задумано, проверяйте по шагу 6.
- Сценарий падает, уведомлений нет. Проверьте поле Error Workflow в настройках сценария и параметр On Error у узлов. При Continue запуск не считается упавшим.
- Ссылка ведёт на
localhost:5678. n8n не знает свой публичный адрес. Задайте его в переменнойN8N_EDITOR_BASE_URLилиN8N_WEBHOOK_URL. С версии 2.35 переменная называетсяN8N_WEBHOOK_URL, старое имяWEBHOOK_URLпока работает. - Уведомления приходят с перебоями. Работа Telegram в России ограничивается, и сервер не всегда может до него достучаться. Добавьте в сценарий ошибок второй канал: письмо через узел Send Email или сообщение боту в MAX через HTTP Request.
- Повтор создаёт дубли. Отключите Retry On Fail у узлов, которые создают записи, или добавьте проверку на существующую запись.
Подробнее о настройке узлов в документации n8n: Error Trigger и обработка ошибок.
Частые вопросы
Почему сценарий ошибок не срабатывает при ручном запуске?
Так устроен Error Trigger. Он реагирует только на ошибки автоматических запусков, например по расписанию или по вебхуку. Для проверки опубликуйте тестовый сценарий с узлом Stop And Error.
Нужен ли отдельный сценарий ошибок для каждого сценария?
Нет. Один сценарий с Error Trigger можно назначить любому числу сценариев. В уведомлении всё равно видно, какой из них упал.
Можно ли присылать в Telegram текст ошибки?
Только если вы уверены, что в нём нет данных клиентов. Ответы внешних систем иногда повторяют содержимое запроса. Надёжнее прислать ссылку на запуск и смотреть подробности в n8n на своём сервере.