Форма как настоящий trigger
Содержание курса
Типичные ошибки: потерянная отправка и пустые поля
Две ошибки здесь встречаются настолько часто, что стоит разобрать их отдельно — не как теорию, а как конкретные симптомы и способы исправления.
Отправка формы до нажатия «Listen for test event»
Если открыть Preview-ссылку, заполнить поля и нажать Submit раньше, чем редактор перешёл в режим ожидания, — данные просто уйдут в никуда. n8n не буферизует пропущенные отправки: он принимает только те, что пришли пока окно ожидания было открыто.
Признак прост: после отправки формы узел Form Trigger не окрасился в зелёный, панель Output пуста или показывает предыдущий результат. Решение — нажать «Listen for test event» ещё раз и повторно отправить форму. Повторная отправка безопасна: тестовый режим каждый раз ждёт ровно одну новую запись и перезаписывает Output.
Необязательное поле: отсутствующий ключ вместо пустой строки
Если поле не помечено как Required и пользователь оставил его пустым, поведение n8n неочевидно. Представим, что к форме добавили необязательное поле «Телефон» (тип text, без Required), а пользователь его не заполнил.
Многие ожидают увидеть в Output пустую строку для незаполненного поля:
{
"Имя": "Алексей",
"Email": "alex@example.com",
"Описание проблемы": "Не работает вход",
"Телефон": "" ← ожидаемое поведение
}
Но реальный Output выглядит иначе — ключа Телефон нет совсем:
{
"Имя": "Алексей",
"Email": "alex@example.com",
"Описание проблемы": "Не работает вход"
← ключа «Телефон» не существует
}
Это не пустая строка, а полное отсутствие ключа. Если в следующем узле написать {{ $json['Телефон'] }}, результатом будет undefined. Для большинства узлов это не вызовет видимой ошибки сразу, но если дальше по цепочке будет операция над этим значением (например, .trim() или числовое сравнение), workflow упадёт с ошибкой.
Защититься можно двумя способами: либо помечать поля как Required, если данные действительно нужны, либо в expression явно обрабатывать отсутствие ключа:
{{ $json['Телефон'] ?? 'не указан' }}
Оператор ?? вернёт правую часть, если левая — undefined или null. Это минимальная страховка для необязательных полей, которые всё же участвуют в дальнейшей обработке. В следующем уроке разберём нормализацию и валидацию данных из формы подробнее — там этот паттерн встретится снова.
