Предзаполнение и скрытые поля: короткая форма без потери данных
Короткая форма не обязана означать бедные данные. Чем предзаполнение отличается от скрытого поля, что стоит нести в каждом из них и где скрытое поле заканчивается.
Вторник, 09:20. Руководитель маркетинга сократил форму запроса коммерческого предложения с одиннадцати полей до четырёх, и за две недели число заявок заметно выросло. К обеду того же дня приходит первая претензия от отдела продаж: непонятно, из какой рекламы, с какой посадочной страницы и из какой кампании пришли новые заявки. Из семи убранных полей только три были настоящими вопросами к посетителю. Остальные четыре содержали то, что система и так знала. В спешке все семь отправились в одну корзину, а вместе с ними исчезла и атрибуция.
В этой статье разбираются два механизма, которые позволяют сократить форму, не потеряв данные: предзаполнение и скрытые поля. Сначала мы разведём эти два понятия, затем разберём, как параметры кампании попадают в скрытое поле, где ломаются ссылки с предзаполнением, какие поля остаются на экране, а какие уходят из виду, что нельзя класть в скрытое поле, куда собранные значения попадают в CRM, что должно происходить при повторной заявке действующего клиента и как измерить, дала ли вся эта конструкция результат.
Что вы уже знаете, не спрашивая посетителя?
Разговор о сокращении формы обычно начинается с неверного вопроса: какое поле убрать? Правильный вопрос звучит иначе: какой ответ у нас уже есть? В момент отправки формы наготове три источника данных, и ни один из них не тратит время посетителя.
Первый — сама ссылка. Переход из рекламы, рассылки или с партнёрского сайта обычно несёт в адресе параметры источника, канала и кампании. Второй — контекст браузера: страница, с которой пришёл посетитель, адрес посадочной страницы, тип устройства, язык. Третий — ваша собственная система: отправляя письмо, вы уже знаете, кому пишете, какое предложение обсуждается и есть ли у этого человека карточка клиента.
Пока эти три источника не подключены к форме, вы вынуждены спрашивать у посетителя то, что могли записать молча, — и полученный ответ будет менее надёжным, чем ваши собственные данные. Когда команда сравнивает ответы на вопрос «откуда вы о нас узнали» с исходными данными об источнике, которые приходят через связку веб-формы с CRM, разрыв обычно оказывается неожиданно большим. Посетитель пишет то, что помнит; система записывает то, что было.
Чем предзаполнение отличается от скрытого поля?
Технически это близкие родственники, но задачи у них разные. Предзаполнение открывает видимое поле с готовым значением: посетитель видит в поле свой адрес почты, при необходимости исправляет его и идёт дальше. Скрытое поле не появляется на экране вовсе — значение записывается при загрузке страницы и уходит вместе с заявкой.
Правило выбора укладывается в одну фразу. Если значение — это утверждение о человеке, оно должно быть видимым и редактируемым. Если это данные сессии или атрибуции, показывать их не нужно. Имя, почта, телефон, компания и отрасль относятся к первой группе: когда данные устарели, посетитель обязан иметь возможность вас поправить. Название кампании, страница-источник, посадочная страница, версия формы и внутренний идентификатор записи — ко второй; посетителю они ничего не дают, а возможность их изменить только портит запись.
Без этого различия сокращение формы превращается в прогрессивное профилирование наоборот: вопросы вы убрали, а ответы на них нигде не сохранили. Смысл же упражнения в том, чтобы облегчить работу посетителю и при этом сохранить полноту карточки.
Как параметры кампании попадают в скрытое поле?
Цепочка состоит из четырёх звеньев. К ссылке в рекламе или рассылке добавляются параметры источника, канала и кампании. Посетитель попадает на посадочную страницу, параметры остаются в адресной строке. Встроенная форма читает их и записывает в соответствующие скрытые поля. При отправке значения сохраняются вместе с тем, что человек ввёл руками.
В Rocketly за это отвечает возможность Предзаполнение и скрытые поля: она прикрепляет к каждой заявке источник, кампанию или идентификатор клиента, то есть фиксирует атрибуцию, не задавая ни одного лишнего вопроса. Дальше данные читаются в разрезе Источники и устройства, где видно, сколько заявок принесла каждая кампания и с каких устройств форму действительно доводят до конца.
Самое хрупкое звено — третье. Если посетитель походил по сайту и отправил форму уже на другой странице, параметры из адресной строки к этому моменту пропали. Значит, данные первого касания должны переживать переходы между страницами: обычно их сохраняют в браузере при первом входе и оттуда подставляют в форму. Вторая типичная поломка — перезапись: если каждое новое посещение пишет в то же поле, последний клик стирает первый, и в длинном цикле сделки канал, который начал разговор, становится невидимым. Решение простое — держать два поля: первое касание и последнее.
Где ломается ссылка с предзаполнением?
Частый приём в рассылках — сгенерировать персональную ссылку, открывающую форму уже заполненной. Приём рабочий, но ломается он в трёх местах.
Первое — формат. Когда в адрес кладут сырые значения, всё портят пробелы, кавычки, кириллица и ограничение на длину: поле приходит искажённым либо ссылка вовсе не открывается. Второе — пересылка. Персональную ссылку отправляют в общий чат, и каждый, кто её открыл, видит чужое имя и чужую почту, готовые к отправке; отправив форму, он обновит чужую карточку. Третье — предсказуемость: если идентификатор в ссылке представляет собой порядковый номер, увеличив его на единицу можно открыть данные другого человека.
Надёжная схема выглядит так: в адресе передаётся не персональные данные, а короткоживущий и непредсказуемый токен; значения полей подставляются на стороне сервера по этому токену; срок жизни токена не превышает срок кампании. Та же дисциплина нужна и для ссылок возврата, которыми возвращают тех, кто бросил форму на середине: человек должен продолжить с того места, где остановился, но пересланная ссылка не должна открывать ничьи данные.
Какие поля оставить на экране, а какие скрыть?
Таблица ниже — рамка для быстрого решения. Три проверки: кто знает значение, кто должен его исправлять при ошибке и кто будет читать его после отправки.
| Значение | Источник | Место в форме | Обоснование |
|---|---|---|---|
| Почта, телефон | Посетитель | Видимое, предзаполненное | Должно исправляться: по нему вы свяжетесь |
| Компания, отрасль | Известная запись | Видимое, предзаполненное | Могло измениться, правка обновит карточку |
| Кампания, источник, канал | Ссылка | Скрытое | Посетителю бесполезно, правка только портит |
| Посадочная страница, реферер | Браузер | Скрытое | Нужно для атрибуции и оценки контента |
| Версия формы, код варианта | Система | Скрытое | Без него невозможно сравнивать варианты |
| Цена, скидка, внутренний балл | Система | Ни то, ни другое | Нельзя держать на клиенте, считается на сервере |
Последняя строка пропускается чаще всех — ей и посвящён следующий раздел.
Действительно ли скрытое поле скрыто?
Нет. Скрытое поле невидимо только на экране: оно есть в исходном коде страницы, читается обычными инструментами браузера, а его значение можно изменить перед отправкой. Скрытое поле — это механизм переноса, а не средство защиты.
Отсюда практический вывод: туда кладут только то, что не навредит вам, придя в искажённом виде. Подменённое название кампании испортит отчёт — риск терпимый, к тому же странное повторяющееся значение обычно заметно. А вот цена, размер скидки, уровень тарифа или признак доступа в скрытом поле — совсем другое дело, потому что на присланном значении может строиться решение. Такие величины определяются на сервере независимо от того, что пришло из браузера; всё, что приходит из формы, следует считать предложением, пока оно не проверено.
У скрытых полей есть и защитная сторона. Невидимую ловушку человек не заполняет, потому что заполнять нечего; программы-роботы обычно вносят значение в каждое найденное поле, поэтому заполненная ловушка сама по себе является основанием для отсева. В Rocketly этот слой работает как Ловушка для ботов и лимит частоты: ловушка снимает первую волну, лимит заявок с одного адреса гасит быстрые повторы, а всё остальное подозрительное уходит в спам-корзину и лид из него не создаётся. Такой учёт полезен и вне маркетинга: отвечая на анкету безопасности поставщика, на вопрос о данных, которые страница держит на стороне клиента, вы ответите спокойно, если точно знаете свой перечень скрытых полей.
Куда скрытые значения попадают в CRM?
Собранные данные ничего не стоят, пока не окажутся в поле, по которому можно фильтровать. Название кампании, лежащее свободным текстом в примечании, не даёт ни отчёта, ни сегмента. Поэтому у каждого скрытого поля должен быть адресат на стороне CRM.
В Rocketly эту связь задаёт Сопоставление полей CRM: каждое поле формы привязывается к полю CRM, и заявка открывается структурированной записью, а не куском текста. Автоматическое создание лида превращает каждую не помеченную спамом заявку в лид и контакт — и если сопоставление сделано верно, менеджер при открытии карточки уже видит источник, кампанию и посадочную страницу.
Если целевого поля ещё нет, начинать нужно с него. Продуманная настройка полей, этапов и представлений обходится дешевле, чем ручная правка сотен карточек потом. Тип поля выбирайте сразу: название кампании, выбранное из списка, а не набранное вручную, не разобьёт отчёт на четыре написания одного и того же.
Когда данные ходят между системами, дисциплина нужна ещё строже. Корректное сопоставление полей двух систем означает, что наименования на стороне формы и на стороне CRM закреплены друг за другом, и спор о соответствиях не начинается заново при каждой новой интеграции.
Что делать, когда форму заполняет действующий клиент?
Один из главных источников беспорядка в базе — действующий клиент, заполнивший новую кампанийную форму. Появляется вторая карточка, обе живут своей жизнью, и к одному человеку двое сотрудников заходят по двум каналам.
Половина решения — скрытое поле: если письмо несёт персональный идентификатор получателя, заявка приходит с указанием, к какой записи она относится. Вторая половина — объединение. Фильтр дублей в Rocketly сводит повторные заявки с той же почтой или телефоном к одному человеку, поэтому вторая карточка не создаётся. Повторная заявка становится новым касанием существующего контакта.
Выгода видна там, где собирается единый профиль из разрозненных данных: форма, заполненная три года назад, скачанный в прошлом месяце документ и вчерашний запрос предложения читаются на одной ленте.
Есть и польза для цифр. Если вы не отличаете заявку действующего клиента от заявки нового человека, отчёт по кампании завышает привлечение. То же разделение нужно при расчёте частоты повторных покупок: вторая сделка лояльного клиента, записанная в привлечение, портит сразу две метрики.
Как понять, что предзаполнение сработало?
Отдача от этой работы видна из сравнения, а не из ощущений. Достаточно трёх измерений: какая доля увидевших форму её отправила, какая доля заявок пришла с пригодным контекстом и сколько полей менеджеру всё ещё приходится заполнять руками, прежде чем с карточкой можно работать.
Для первого хватает экрана Отслеживание заявок: просмотры, отправки и конверсия лежат на одной панели, и рабочая форма отделяется от той, которую открывают и бросают. Для второго смотрите на заполняемость скрытых полей: если поле кампании пустует у небольшой доли заявок, где-то рвётся звено цепочки; если у большинства — цепочка не собрана вовсе. Третье измерение качественное, и получить его можно только у продавцов: какую информацию им по-прежнему приходится разыскивать самим.
Сравнивая, меняйте по одному параметру за раз. Если на одной неделе вы и сократили число полей, и включили предзаполнение, отнести результат к чему-то одному уже не выйдет. Именно поэтому версию формы полезно передавать скрытым полем: каждая заявка сама сообщает, из какой раскладки она пришла. Если хотите разбираться с сырыми цифрами вне CRM, сделайте импорт и экспорт данных регулярной привычкой: выгрузка заявок за период в таблицу закрывает большую часть вопросов за один присест.
Как удержать эту схему в рабочем состоянии?
Связка предзаполнения и скрытых полей безупречно работает в день сборки и разваливается за полгода. Причина обычно не техническая: новая кампания использует другое имя параметра, кто-то удаляет поле при правке формы, кто-то меняет посадочную страницу, и параметры теряются на редиректе.
Помогают три привычки. Первая — словарь наименований: имена параметров и соответствующие им поля CRM записаны в одном месте, и каждая новая кампания собирается по этому списку. Вторая — след изменений. История версий в Rocketly хранит каждую сохранённую конфигурацию формы как версию, показывает разницу и позволяет вернуться на шаг назад одним нажатием, а спор «вчера же работало» заканчивается за минуту. Третья — политика хранения: Хранение и обезличивание позволяет задать срок жизни данных заявки, после которого персональные поля обезличиваются автоматически, а количественная статистика остаётся на месте.
Продумайте заодно уведомления. Письмо всей команде по каждой заявке за пару недель превращается в поток, который никто не читает; порядок, при котором входящие остаются под контролем, означает адресные оповещения и только по тем заявкам, которые требуют действия.
Если хотите собрать такую схему на своих страницах, откройте бесплатный аккаунт Rocketly и соберите первую форму.
Частые вопросы
Создают ли скрытые поля проблему с персональными данными?
Проблему создаёт не скрытость поля, а то, какие значения вы храните, как долго и как описали это в политике обработки. Кампания и источник сами по себе обычно никого не идентифицируют, а вот персональный идентификатор получателя относится к персональным данным, и для него нужны срок хранения и правило удаления.
Стоит ли блокировать предзаполненное поле?
Как правило, нет. Заблокированное поле мешает посетителю поправить вас, когда данные устарели, и закрепляет ошибку. Если значение действительно не должно меняться, честнее передать его скрытым полем, чем показывать в недоступном для правки виде.
Сколько скрытых полей считается лишним?
Дело не в количестве, а в том, есть ли у каждого поля читатель. Скрытое поле, которое не попадает ни в отчёт, ни в фильтр, ни в автоматизацию, через полгода становится колонкой, назначение которой никто не помнит. На каждое новое поле отвечайте на один вопрос: кто и в каком решении будет это читать?
Пропадают ли параметры из-за блокировщиков рекламы?
Параметры в адресной строке блокировщики не трогают. Потери случаются на редиректах, в сокращённых ссылках и при переходах, которые пересобирают адрес. Поэтому сохранять значение первого касания так, чтобы оно пережило навигацию, надёжнее, чем полагаться на сторонние скрипты аналитики.