S-WEBS24

Битрикс24

CRM, процессы и приложения для вашей компании

Вернуться к списку Вернуться к статьям
Статьи

UTM-кампания есть в адресе, но не попадает в CRM: как проверить путь от формы до поля

Потерю UTM-кампании нужно проверять по всей цепочке одного поля: адрес входа, сохранение значения, форма, сервер и поле CRM. Наличие метки в адресной строке не доказывает, что форма отправляет её. Успешное создание заявки тоже не доказывает правильность сопоставления. Для диагностики используют синтетическую кампанию и сравнивают значение на каждом переходе.

Кампания в CRM
Учебная схема по шагам статьи; реальные клиентские данные не использованы.
Метка кампании прослеживается до записи Учебная сцена. Синтетическая utm_campaign=demo-a сравнивается в форме, принятом запросе и CRM.

Сначала определить, какую кампанию нужно сохранить

Учебный посетитель приходит на страницу с параметром utm_campaign=workshop_demo. Затем открывает товар и отправляет форму запроса. В CRM поле кампании пустое. В этом сценарии проверяют именно передачу одной метки, а не всю систему сквозной аналитики. Такой узкий опыт помогает найти разрыв, прежде чем расширять задачу до перечня всех форм и рекламных каналов.

Пять меток в локальном объекте заявки
Скриншот собственного учебного стенда: пять меток в локальном объекте заявки. Синтетические данные; это не интерфейс клиента или админка 1С-Битрикс.

До изменения кода договариваются о модели атрибуции. Нужна первая кампания визита, последняя непустая метка или набор отдельных значений? Эти варианты отвечают на разные вопросы. Если браузер хранит первую метку, а сервер перезаписывает её последним входом, внешне получится случайная потеря или подмена. Правило должно быть одинаково понятно маркетологу, разработчику и сотруднику, который смотрит поле в CRM.

Пустой параметр тоже требует решения. Переход без меток внутри сайта обычно не должен автоматически стирать сохранённую кампанию, если выбран режим сохранения источника. Но новый рекламный вход может изменить значение по согласованному правилу. Не стоит объявлять одну политику универсально правильной. Статья показывает, как проверить соответствие принятой политике на одном воспроизводимом примере.

От адреса к значению без ручного разрезания строки

Для разбора параметров используют штатный механизм работы с URL. В браузере URLSearchParams позволяет получить значение по имени и правильно обработать кодирование. Ручное разрезание по амперсанду и знаку равенства часто ломается на закодированных символах, повторяющихся параметрах и пустых значениях. При этом сам выбор функции не определяет политику атрибуции: он только корректно читает вход.

В учебном наборе полезны короткая кампания, значение с пробелом после декодирования, кириллица и повтор одного параметра. Нужно заранее определить, какой из повторов принимается. Не следует молча склеивать несколько значений в строку, если поле CRM ожидает одно. Для подозрительно длинных или неподдерживаемых значений устанавливают проверяемый предел и понятное поведение без скрытого обрезания коммерчески значимой метки.

Проверяемый переходЧто сравнитьПризнак разрыва
Адрес входа → разборЗначение после декодированияУже прочитано неверно
Разбор → хранениеПринятое правило первой/последней меткиСохранена пустая или другая кампания
Хранение → формаПоле конкретной отправкиФорма открылась без контекста
Форма → серверПринятое сервером значениеНеверное имя или формат поля
Сервер →CRMСопоставление и сохранённое полеПередано не в тот реквизит

В диагностике сравнивают значения, а не только факт существования свойства. Поле может присутствовать в запросе с пустой строкой или содержать старую кампанию предыдущего теста. Поэтому каждый опыт получает новое учебное значение. Это позволяет отличить актуальную передачу от случайно сохранившихся данных и не раскрывает реальные рекламные параметры клиента.

Как пережить переход на другую страницу

После внутреннего перехода исходная метка часто исчезает из адреса. Если форма читает только текущую строку URL, она уже не увидит кампанию входа. Нужен согласованный способ сохранения контекста между страницами. Это может быть серверная сессия или допустимое клиентское хранение, но выбор зависит от архитектуры и требований к данным. Не следует добавлять длительное хранение без понимания срока и назначения.

Для учебной проверки выполняют три маршрута: отправка на странице входа, отправка после одной внутренней ссылки и отправка после возврата назад. Затем повторяют в новой сессии. Если значение сохраняется только в первой вкладке или только до перезагрузки, это должно соответствовать договорённости. Иначе поддержка будет видеть непостоянный дефект, который трудно повторить одним быстрым тестом.

Сохранённую метку не следует показывать как доверенное системное значение без проверки. Пользователь может изменить параметр URL или содержимое клиентского хранилища. Для аналитического поля это обычно означает необходимость ограничения формата и длины, а не подтверждение происхождения рекламы. Метка помогает классифицировать обращение, но не является доказательством оплаты рекламного клика или личности посетителя.

Модальная форма может читать данные в другой момент

У страницы может быть несколько экземпляров одной формы: в шапке, карточке и модальном окне. Если скрытое поле заполняется только при первоначальной загрузке документа, поздно созданное окно останется пустым. Обратная ситуация возникает при повторном открытии: окно сохраняет старое значение, хотя пользователь пришёл по новой кампании. Поэтому нужно знать момент инициализации конкретной формы.

Лучше передавать согласованный контекст в операцию отправки, а не полагаться только на однажды заполненный скрытый input. Скрытое поле остаётся частью интерфейсного механизма, но сервер всё равно проверяет значение. Если контекст хранится на сервере, важно не создать конфликт между ним и присланным полем. Приоритет источников задают явно и отражают в диагностике.

Тест формы проводят после первого открытия, закрытия, повторного открытия и перехода между карточками без полной перезагрузки, если сайт так работает. В каждом случае отправляют одну учебную заявку и сверяют кампанию. Проверять все поля аналитики одновременно необязательно: задача статьи состоит в трассировке конкретной метки, а не в создании общего реестра форм.

Сопоставление с CRM должно быть проверено по сохранённой записи

На стороне интеграции ищут точное соответствие поля. Похожее название в интерфейсе CRM не гарантирует, что обработчик пишет именно туда. В системе могут существовать стандартное и пользовательское поля с близкими подписями. Проверяют тип значения, разрешённую длину и доступность поля выбранному способу передачи. Внешние идентификаторы и адрес подключения не нужно выносить в публичный материал.

Если заявка превращается в другую сущность CRM, проверяют перенос метки на этом переходе. Первичная запись может содержать кампанию, а рабочая карточка менеджера уже не иметь её из-за правила преобразования. Тогда форма не является местом потери. Для доказательства достаточно сравнить две связанные учебные записи и показать, на каком этапе значение перестало соответствовать ожидаемому.

При повторном обращении существующего контакта также нужна политика. Кампания конкретной заявки и постоянное поле источника контакта могут иметь разный смысл. Нельзя автоматически перезаписывать историю всех обращений одной последней меткой. Если бизнес хочет видеть оба показателя, их хранят раздельно. Подмена одного другим делает отчёт внешне заполненным, но аналитически непонятным.

Пустое значение и нежелательная перезапись

Частый дефект возникает, когда корректная кампания сначала записывается, а второй обработчик отправляет пустую строку и очищает поле. Поэтому полезно смотреть историю обновления учебной записи, если она доступна. Одного снимка результата недостаточно для объяснения причины. Нужно установить последовательность: кто создал значение, кто изменил и какое правило разрешило очистку.

В контракте передачи различают «поля нет», «пусто» и «значение задано». Для выбранной модели первое может означать отсутствие обновления, второе явную очистку или тоже пропуск. Нельзя менять семантику в разных частях цепочки. Если формат CRM не различает состояния напрямую, адаптер должен реализовать согласованное правило и не отправлять лишние пустые поля по умолчанию.

В учебной матрице отправляют заявку с кампанией, затем обращение без кампании и ещё одно с новой меткой. Ожидаемые значения записывают отдельно для обращения и контакта. Такой опыт быстро показывает, где политика не определена. Исправление должно приводить к выбранному поведению, а не просто к непустому полю в одном удачном тесте.

Как наблюдать передачу без лишних данных

Для внутренней диагностики достаточно технического признака попытки и состояния каждого этапа. Саму кампанию можно заменить синтетической в тесте. В рабочем журнале необязательно хранить полную строку URL, которая может содержать другие параметры. Тем более не стоит записывать рядом телефон, комментарий и секреты интеграции. Цель наблюдения состоит в поиске разрыва поля, а не в создании второй базы заявок.

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

Результат теста сохраняют в виде короткой цепочки: учебный URL, маршрут до формы, ожидаемая кампания и фактическое поле CRM. Этого достаточно для повторной проверки после изменения формы. Реальные рекламные кабинеты и данные посетителей для такого сценария не требуются. Если доступ к CRM отсутствует, можно подтвердить только путь до принятого сервером значения и честно оставить последнюю проверку открытой.

Как принять исправление

Проверка считается законченной, когда одна и та же синтетическая кампания проходит выбранный маршрут без неожиданной очистки или подмены. Успех подтверждают по сохранённой записи CRM, а не по зелёному сообщению формы. Отдельно проверяют путь без метки и повторное обращение, чтобы исправление не начало заполнять поле устаревшим значением. Это защищает смысл данных, а не только наличие текста.

После этого полезно оставить карту одного поля с названиями этапов и политикой первой/последней метки. При следующем редизайне формы разработчик сможет проверить именно этот контракт. Более широкий аудит всех точек отправки можно выполнить отдельной задачей: он имеет другой объём и не должен скрывать простой ответ на вопрос, почему конкретная кампания не дошла до CRM.

Как отличить потерю от перезаписи

Если форма передаёт кампанию в скрытом поле, контроль не ограничивают просмотром DOM. Значение может измениться непосредственно перед сериализацией. Поэтому в учебном опыте сравнивают состояние формы, фактически отправленный запрос и принятый сервером набор. Это три наблюдения одного поля, а не три разных источника истины. Их различие позволяет точнее назвать момент потери.

Учебная кампания workshop_demo_one передаётся в первой заявке. Сразу после создания в CRM она присутствует. Через предусмотренный второй этап обработки поле становится пустым. Это другой дефект, чем отсутствие параметра в форме. Чтобы увидеть разницу, сравнивают состояние после создания и после зависимого обновления. Если смотреть только последний экран, обе ситуации будут выглядеть одинаково и приведут к неверной правке браузерного чтения.

МоментОжидаемая кампанияПроверяемое правило
ВходУчебное значениеРазбор URL
Открытие формыТо же принятое значениеСохранение контекста
Создание обращенияЗначение найденоСопоставление поля
Последующее обновлениеПо выбранной политикеНет случайной очистки
Новое обращение без меткиПо модели атрибуцииПустота не трактуется произвольно

Затем повторяют опыт с новой кампанией и существующим контактом. Важно смотреть отдельно поле обращения и поле контакта. Если первое хранит контекст конкретной заявки, а второе первоначальный источник, их различие может быть правильным. Нельзя объявлять потерей любое несовпадение без понимания назначения. В отчёте называются сущность, поле и принятая политика, а не общее «метки работают».

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

Смежная тема разобрана в материале Интеграция сайта с CRM: какие данные передавать из формы, чтобы менеджер мог работать без ручной переписки.

Вопросы по теме

На каком участке теряется utm_campaign при отправке заявки?

Потерю UTM-кампании нужно проверять по всей цепочке одного поля: адрес входа, сохранение значения, форма, сервер и поле CRM. Наличие метки в адресной строке не доказывает, что форма отправляет её. Успешное создание заявки тоже не доказывает правильность сопоставления. Для диагностики используют синтетическую кампанию и сравнивают значение на каждом переходе.

Документация и источники

  • MDN: URLSearchParams: Разбор параметров адреса без ручного разрезания строки.