n8n Form Trigger: какие HTML-теги пройдут санитизацию и как не сломать форму кастомной вёрсткой - Блог Папы Карло

Опубликовано: 4 месяца назад
Просмотров: 182

Привет. Я тут покопался в свежих доках n8n и в живых кейсах, и вывод простой: в Form Trigger нормально проходят многие базовые HTML-теги, но форму чаще ломают не они, а лишние атрибуты и попытки запихнуть в Custom HTML собственные поля ввода. Если коротко, живут <a>, <b>, <br>, <div>, <img>, <table>, заголовки, списки, видео и ещё несколько безопасных тегов. А вот <script>, <style>, <input>, <form>, <button>, а также style, class, id и почти любые «хитрые» атрибуты санитайзер срезает. Ниже покажу, что реально проходит, где ломается кастомная вёрстка и как сделать форму аккуратной, а не капризной.

Заодно оставлю внутренние маршруты по теме: защиту вебхуков, авто-КП после формы, контроль ошибок в n8n и готовые шаблоны n8n.

Содержание

Интерфейс формы n8n с блоком описания и кастомной разметкой на экране ноутбука

Какие HTML-теги в n8n Form Trigger проходят санитизацию

Раньше многие думали, что в n8n формам позволено почти ничего. Сейчас список уже приличный. Если тебе нужна нормальная подача текста, подсказки, картинки или компактная таблица, этого чаще всего хватает.

Что обычно проходит:

  • Текст и акценты: <b>, <em>, <i>, <u>, <sub>, <sup>, <code>, <pre>.
  • Структура: <div>, <p>, <span>, <br>, <h1><h6>.
  • Списки: <ul>, <ol>, <li>.
  • Ссылки и медиа: <a>, <img>, <iframe>, <video>, <source>.
  • Таблицы: <table>, <thead>, <tbody>, <tfoot>, <tr>, <th>, <td>.

То есть запросы вроде n8n form trigger allowed tags, custom html n8n form или n8n form description html уже не упираются в два абзаца текста. Можно собрать шапку формы, инструкцию, список шагов, FAQ, картинку или компактную таблицу.

Что срежется: <script>, <style>, <input>, <form>, <button> и другие элементы, которые могут влезть в логику самой формы или повести себя опасно. Так что строить внутри Form Trigger «свою отдельную форму» — идея мимо кассы.

Что вставляешь Что обычно выходит Вердикт
Абзацы, заголовки, списки Рендерятся стабильно Нормально
Ссылка, картинка, таблица Работают, если атрибуты допустимы Тоже годится
Свой input, form, button Удаляются Не использовать
HTML с inline-стилями и классами Теги могут остаться, оформление исчезает Макет плывёт

Почему кастомная вёрстка ломает форму чаще, чем сами теги

Самая частая ошибка — видеть поле Custom HTML как маленький конструктор лендинга. Человек кидает туда кусок привычной вёрстки, а потом удивляется, почему центрирование пропало, отступы стали кривыми, таблица съехала влево, а кнопка исчезла.

Обычно проблема одна из этих:

  • Inline-стили. Вроде <div style="text-align:center;margin-bottom:20px">. После санитизации от него остаётся просто <div>.
  • Ставка на class и id. В шаблоне всё красиво, а в итоговом DOM этих атрибутов уже нет.
  • Попытка вставить свои поля ввода. <input>, <button>, второй <form> — всё это конфликтует со штатной логикой n8n.
  • Путаница между Custom HTML и Custom Form Styling. Первый блок отвечает за контент, второй — за внешний вид формы через CSS.

Отсюда и частый вопрос n8n form trigger style attribute: люди хотят подкрасить или выровнять HTML прямо в разметке, а n8n режет почти всё лишнее. Моё правило простое: контент держим в HTML, вид держим в Custom Form Styling.

Какие атрибуты живут после санитизации

Тег может пройти, но вместе с ним останется только узкий набор атрибутов. Поэтому HTML формально жив, а макет уже не тот.

Что разрешено точечно:

  • Для ссылок: href, target, rel.
  • Для картинок: src, alt, width, height.
  • Для видео: controls, autoplay, loop, muted, poster, width, height.
  • Для iframe: src, width, height, frameborder, allow, allowfullscreen, referrerpolicy.
  • Для ячеек таблиц: colspan, rowspan, scope, headers.

Что лучше сразу не закладывать: style, class, id, data-*, обработчики событий и любые экзотические URL-схемы. Плюс ссылки и медиа лучше ставить на обычные http:// или https:// адреса.

Элемент Оставить можно Чаще всего слетает
<a> href, target, rel class, style
<img> src, alt, width, height class, style, лишние параметры
<div>, <p>, <span> сам тег и текст внутри почти любые атрибуты
<iframe> только ограниченный набор кастомное оформление

Как кастомизировать форму и не развалить UX

Я обычно собираю форму в три слоя.

  • Слой 1 — штатные поля n8n. Всё, что человек вводит: текст, выбор, файлы, textarea, hidden field.
  • Слой 2 — Custom HTML. Подсказки, пояснения, изображения, FAQ, таблицы, разделители.
  • Слой 3 — Custom Form Styling. Типографика, отступы, ширины, выравнивание, цвета, рамки и общая визуальная сетка.

Что у меня работает стабильно:

  • в Form Description — короткий заход и переносы через <br> или отдельные абзацы;
  • в Custom HTML — только read-only блоки;
  • весь визуал — через Custom Form Styling;
  • никаких своих кнопок отправки и самодельных полей ввода.

Когда понимаешь, что CSS живёт в отдельной опции, половина проблем с кастомной вёрсткой просто исчезает.

Рабочие примеры для Form Description и Custom HTML

Спокойный вариант для Form Description:

<p>Оставь заявку, и я соберу сценарий под твою задачу.</p>
<p>Ниже три шага: описание процесса, контакты, подтверждение.</p>
<p><b>Среднее время заполнения:</b> 2–3 минуты.</p>

Рабочий блок для Custom HTML:

<div>
  <h3>Что подготовить заранее</h3>
  <ul>
    <li>ссылку на текущий процесс</li>
    <li>пример входящих данных</li>
    <li>куда отправлять результат</li>
  </ul>
</div>

Такой фрагмент обычно проходит спокойно. А вот карточки, сетки, сложные колонки и декоративные блоки с кучей классов уже лучше собирать не в самом HTML, а оформлять стилями формы.

Если нужна картинка, ставь её просто:

<p><img src="https://example.com/form-preview.jpg" alt="Пример блока с подсказкой" width="960" height="540"></p>

Размеры задать можно. Выравнивание и внешний вид — уже задача CSS.

Когда лучше вынести кастомную страницу в Form Ending

Если задача — не украшать саму форму, а отдать после отправки отдельную итоговую страницу, используй Form Ending. Там удобнее показывать экран «спасибо», результат расчёта, дальнейшие шаги или более свободную HTML-разметку.

Особенно это полезно, когда форма запускает автоматизацию дальше: запись в таблицу, уведомление менеджера, формирование документа. Для таких связок полезно посмотреть обработку заявок в Google Sheets через n8n и ежедневные сводки по заказам.

Чек-лист перед публикацией

  • 1. Все поля ввода созданы штатными элементами n8n.
  • 2. В Custom HTML нет style, class, id и обработчиков событий.
  • 3. Переносы строк сделаны через <br> или отдельные абзацы.
  • 4. Ссылки и медиа проверены на Production URL.
  • 5. Весь визуал вынесен в Custom Form Styling.
  • 6. Финальный экран вынесен в Form Ending, если там нужна отдельная подача.

Итог: n8n Form Trigger уже даёт нормальную базу для кастомной подачи. Используй разрешённые теги для структуры и контента, держи интерактивность на штатных элементах, а оформление переноси в CSS формы. Тогда и запросы вроде какие HTML теги проходят в n8n form trigger, и проблема сломал custom html в n8n form закрываются вполне практично.

Метки: , , , , , , ,