Что Мы Делаем
Пошаговая инструкция на примере формы регистрации в программе лояльности: вместо того чтобы задавать пользователю несколько вопросов подряд в диалоге с ботом, соберём все данные одной веб-формой — Имя, Email, Дата рождения, Пол и согласие на получение рассылок — и передадим их в сценарий бота.
Общая логика работы с веб-формами (все вкладки, типы полей, скоринг, интеграции) подробно разобрана в справочнике «Как работать с веб-формами» — здесь мы пройдём по ней на конкретном рабочем примере, без лишнего функционала.
Шаг 1. Создаём форму
Переходим в Маркетинг → Лидогенерация → Веб-формы для бота и нажимаем кнопку «Форма для бота».

Заполняем:
- Название — например,
Регистрация в ПЛ - Короткое описание — например,
Форма регистрации в программе лояльности - Уникальный идентификатор — например,
registraciya_v_pl
Шаг 2. Собираем поля в конструкторе
Переходим на вкладку «Конструктор» и добавляем поля. Для каждого поля сразу задаём техническое имя переменной — под этим именем значение будет доступно в сценарии бота дальше:

| Поле формы | Тип | Имя переменной | Комментарий |
|---|---|---|---|
| Имя | Строка | name | обязательное |
| Почта | email | обязательное, встроенная валидация email | |
| Дата рождения | Дата | birthdate | формат DD.MM.yyyy |
| Пол | Список (радиокнопки) | sex | варианты «Мужской» / «Женский» |
| Хотите получать рассылки? | Список (радиокнопки) | newsletter | варианты «Хочу» / «Не хочу»; подсказка поля — «За подписку на рассылку дарим 1000 бонусов на следующую покупку» |

Про Поле «Дата Рождения»
У типа поля «Дата» есть обязательное поле «Формат даты» — именно в нём задаётся формат ввода, в нашем случае DD.MM.yyyy. Дополнительно можно ограничить «Доступные даты»: без ограничений, только определённые даты или период — например, чтобы отсечь заведомо невозможные значения даты рождения.

Поле «Пол» — тип «Список» с видом ответа «Один вариант (радиокнопки)», варианты «Мужской» / «Женский».

Поле «Хотите получать рассылки?» устроено так же — «Список» с радиокнопками «Хочу» / «Не хочу». Именно оно и служит согласием на рассылку в этом сценарии.
Текстовый Блок С Дисклеймером
Под полями формы можно добавить отдельный блок «Текст» со стандартной фразой согласия — например: «Отправляя свои данные вы соглашаетесь с условиями пользовательского соглашения и правилами обработки персональных данных».

В редакторе текста сразу же можно оформить нужные слова гиперссылками на документы — например, сослаться прямо на пользовательское соглашение и политику обработки персональных данных, не вынося ссылки отдельным блоком.
Шаг 3. Настраиваем посадочные узлы
Переходим на вкладку «Настройки» и указываем посадочные узлы (они должны быть заранее созданы в сценарии бота):
- Посадочный узел если форма заполнена →
Регистрация - выход из формы - Посадочный узел для закрытия страницы без сохранения формы →
Регистрация - форма не заполнена

Шаг 4. Добавляем блок «Переход в мессенджер»
Возвращаемся в «Конструктор» и в конец формы добавляем блок «Переход в мессенджер».

Обязательный Шаг
Без блока «Переход в мессенджер» форма не сможет отправить данные обратно в бота — пользователь просто останется на странице формы, посадочные узлы не сработают.
У этого блока есть собственные настройки согласия с документами:
- Название и ссылка — до двух документов (например, пользовательское соглашение и политика обработки персональных данных)
- Согласие с документами — «Требуется» (пользователь должен поставить галочку, чтобы продолжить; можно включить «Согласен по умолчанию») или «Не требуется»
Можно Заменить Текстовый Блок Из Шага 2
Текстовый блок-дисклеймер, который мы добавляли в шаге 2, — это просто текст со ссылками, а не настоящий чекбокс. Если нужно, чтобы пользователь явно поставил галочку согласия, лучше отказаться от текстового блока и оформить согласие именно здесь: указать документы в этих полях и включить «Требуется» — тогда это будет полноценный обязательный чекбокс, а не просто текст под полями формы.
Шаг 5. Публикуем форму
Нажимаем «Опубликовать» в правом верхнем углу карточки формы — пока это не сделано, пользователи бота увидят старую (пустую) версию формы.
Шаг 6. Добавляем кнопку в сценарий бота
В узле отправки формы добавляем кнопку с типом «Форма» и выбираем Регистрация в ПЛ — для этого сценария дополнительные параметры не нужны, так как скрытых полей в форме нет.
Альтернативный вариант — тип кнопки «Ссылка» с тегом:
{% form_url "registraciya_v_pl" %}
Он даёт больше контроля над оформлением кнопки, но в этом сценарии не обязателен.
Шаг 7. Забираем данные в посадочном узле
В посадочном узле «Регистрация — выход из формы» получаем данные тегом form_data и сохраняем нужные поля в атрибуты профиля:
{% form_data "registraciya_v_pl" as form %}
{% with data=form.data %}
{% set_attribute "profile_full_name" data.name %}
{% set_attribute "profile_email" data.email %}
{% set_attribute "profile_birth_date" data.birthdate %}
{% set_attribute "profile_gender" data.sex %}
{% set_attribute "profile_marketing_consent" data.newsletter %}
{% endwith %}
{% switch "Регистрация - создание клиента" %}
Подробнее Про Атрибуты Профиля
Что такое атрибуты профиля, зачем они нужны и как с ними работать в сценариях бота — разберём отдельно в статье «Как работать с атрибутами профиля» (статья ещё в разработке).
Дальше сценарий бота продолжает работу как обычно — например, отправляет приветственное сообщение, уже зная имя пользователя.
Если Форма Не Заполнена
В узле «Регистрация — форма не заполнена» данные из формы недоступны — здесь можно, например, повторно предложить пройти регистрацию или просто вернуть пользователя в основной сценарий бота.
Итог
Вот как в итоге выглядит опубликованная и заполненная форма для пользователя:

Мы создали форму из пяти полей, настроили посадочные узлы для обоих исходов (успех / отмена), добавили кнопку в сценарий бота и забрали данные в атрибуты профиля через form_data — никакого скоринга, вебхуков и внешних интеграций для этой задачи не понадобилось.
Подробнее про каждую вкладку конструктора, типы полей и остальные возможности веб-форм — в документации «Как работать с веб-формами»