Определение источников посетителей сайта с помощью Яндекс Тег Менеджера

20 июля, 2025

Хотите точно отслеживать источники трафика пользователей на вашем сайте с помощью Яндекс Тег Менеджера (как при первом визите, так и при последующих) и передавать эту информацию в Яндекс Метрику в качестве параметров посетителей, визитов или событий, а также в другие рекламные и аналитические системы? Тогда это руководство точно для вас!

В моем блоге за последние полгода опубликовано более 20 материалов, посвященных настройке и отслеживанию событий с помощью Яндекс Тег Менеджера. В каждом из этих руководств подробно разбираются шаги настройки и методы проверки корректности внедрения. Ранее для отладки использовались шаблон тега Мини дебагер триггеров и переменных, а также режим _ym_debug=2 от Яндекс Метрики. С 20 ноября 2025 года в Яндекс Тег Менеджере появилась полноценная панель отладки, и часть описанных ранее подходов устарела. Поэтому, пожалуйста, пользуйтесь новой панелью отладки ЯТМ для проверки ваших настроек и обращайте внимание на актуальность информации в текущих статьях.

Введение

Пять лет назад в своем блоге я написал статью о скрипте Sourcebuster.js, который отслеживает источники посетителей сайта и сохраняет данные в файлах cookie для дальнейшего анализа. Там я использовал в качестве примеров Google Tag Manager и отправку данных в Universal Analytics (устар. Google Analytics). В этой публикации я адаптирую представленное решение и обновлю настройки, чтобы вы смогли использовать их в Яндекс Тег Менеджере и передавать дополнительную информацию в Яндекс Метрику.

Сразу хотелось бы отметить следующее:

  • скрипт разработан Alex Fedoseev, его исходники размещены на GitHub, а первое упоминание датируется 2014 годом (статья на habr.com). Хоть решение и было опубликовано более 10 лет назад, оно по-прежнему актуально и может использоваться в техническом маркетинге;
  • Sourcebuster.js обрабатывает переопределение источников так же, как устар. Google Analytics. Но это никак не влияет на его функциональность. Если же вы знаете более новый и усовершенствованный способ отслеживания, пожалуйста, поделитесь им со мной или разместите свое решение на контентной платформе lib.osipenkov.ru. Вы также можете взять за основу текущий скрипт и доработать его под себя (например, чтобы он сохранял данные в localStorage). Благо нейросети и чат-боты ИИ справляются с такими задачами достаточно легко;
  • Sourcebuster.js написан на чистом JavaScript, без какой-либо зависимости от сторонних библиотек, и не взаимодействует с объектами DOM, поэтому его можно вызывать в любой момент;
  • этот код я рекомендую устанавливать/внедрять сразу же, как только вы установили счетчик Яндекс Метрики к себе на сайт. Поскольку Sourcebuster.js позволяет отслеживать источник первого визита пользователя, то чем раньше вы его добавите, тем будут точнее данные;
  • скрипт можно устанавливать как через Яндекс Тег Менеджер, используя шаблон тега Пользовательский HTML, так и напрямую в исходный код сайта (если у вас есть доступ). Чем выше вы разместите его в HTML-теге <head>, тем быстрее получите cookie-файлы, данные которых можно использовать для манипуляций с объектами DOM;
  • помимо того, что приведенный ниже код позволяет отслеживать источники трафика пользователя, он еще умеет извлекать и другую ценную информацию, которую вы впоследствии можете отправить в свой счетчик аналитики - количество визитов, User-Agent, дата первого визита (в формате ГГГГ-ММ-ДД ЧЧ-ММ-СС), количество просмотренных страниц, устанавливать значение промокода.
Демонстрация работы скрипта

 

Таким образом, Sourcebuster.js - это скрипт определения источников посетителей сайта. Он позволяет отследить, откуда пришел пользователь (с рекламы, органического поиска, социальной сети или другого источника), чтобы впоследствии эту информацию можно было использовать в различных целях. Например, для:

  • передачи источника трафика пользователя вместе с его заявкой;
  • генерации промокода, который можно выводить на сайте;
  • отправки данных по источникам в CRM-систему или другие инструменты аналитики;
  • подмены телефонного номера в зависимости от источника трафика;
  • подмены заголовков или контента.

Давайте проверим его в работе и посмотрим, на что он способен в связке с Яндекс Тег Менеджером и Яндекс Метрикой.

Чтобы извлечь эти значения с помощью Яндекс Тег Менеджера, перейдите в раздел Переменные и создайте пользовательскую переменную:

Создание переменных

Выберите шаблон переменной Переменная JavaScript:

Если вы хотите отслеживать все 5 utm_меток, то создайте пять переменных JavaScript. Задайте им названия и сохраните их.

Проверка переменных с помощью мини дебагера

Чтобы проверить, правильно ли созданы переменные, перейдите в раздел Триггер и создайте триггер типа Просмотр страницы. Не задавайте никаких дополнительных условий. Пусть он срабатывает на всех страницах.

Триггер типа "Просмотр страницы"

Сохраните изменения.

Создайте тег, перейдя в раздел Теги:

Триггер типа "Отправка формы"

После этого необходимо создать цель. Для этого перейдите в интерфейс Яндекс Метрики и в разделе Цели создайте цель с условием JavaScript-событие. Укажите произвольный идентификатор цели (например - otpravka_formi) и название цели:

Цель "JavaScript-событие"

Примечательно: я рекомендую использовать условие Идентификатор цели совпадает.

Обязательно запомните идентификатор, он вам понадобится в окончательной настройке тега Яндекс Метрики. В завершение сохраните цель.

Вернитесь в Яндекс Тег Менеджер, перейдите на вкладку Теги и нажмите на кнопку Добавить тег:

Создание тега

Создайте тег типа Яндекс Метрика (Передача информации о достижении цели). Если его в списке нет, вероятно, вы впервые используете данный шаблон тега. Тогда вам необходимо сначала выбрать Шаблоны из каталога:

Шаблоны из каталога

И в открывшемся окне добавить тег Яндекс Метрика (Передача информации о достижении цели):

Шаблон тега - Яндекс Метрика

После этого вас вернет обратно в настройки тега. Зададим ему следующие настройки:

  • ID счетчика - вставьте идентификатор вашего счетчика Яндекс Метрики. Он отображается вверху страницы;
  • Идентификатор цели - задается на странице редактирования счетчика при создании или изменении цели типа JavaScript-событие. Как вы помните, в моем примере otpravka_formi);
  • Название - произвольное название тега, характеризующее его действие (например: Яндекс Метрика - Отправка формы с параметрами);
  • Шаблон тега - Яндекс Метрика;

Поставьте галочку рядом с Добавить поле params и введите в него следующую конструкцию:

, где:

  • utm_source, utm_medium, utm_campaign, utm_term и utm_content - названия параметров событий (вы можете задать другие значения);
  • sbjs.get.current.src, sbjs.get.current.mdm, sbjs.get.current.cmp, sbjs.get.current.cnt и sbjs.get.current.trm - значения параметров событий (переменные JavaScript).

Итоговый тег Яндекс Метрики с параметрами событий utm будет выглядеть примерно так:

Итоговый тег с параметрами событий

Как вы понимаете, такие параметры можно передавать с любым тегом и событием, не только для Яндекс Метрики, но и для других систем.

Сохранив тег, можно снова запустить режим предварительного просмотра и добавить в конце ссылки после параметра _ytm_preview конструкцию _ym_debug=2 через &, чтобы получилось так:

Не забудьте и про utm_метки в ссылке.

Примечание: перед тем, как активировать отладчик Метрики, выполните все нужные настройки и отслеживания в Тег Менеджере - создайте триггер, JS-событие в интерфейсе Метрики и тег типа Яндекс Метрика.

Вы можете сделать это даже в режиме Инкогнито, после компиляции ссылки для режима предварительного просмотра ЯТМ. Внизу страницы появится значок  . Нажмите на него, чтобы открыть панель отладки. Перейдите на вкладку Events и выполните то событие, которое вы настроили. В моем примере - это отправка формы.

Если вы все настроили корректно, то на шкале событий вы увидите достижения JS-целей, а на вкладке Console - переданные параметры событий со значениями utm_меток:

Переданные параметры события

В завершение не забудьте опубликовать контейнер Яндекс Тег Менеджера, чтобы настройки применились ко всем пользователям вашего сайта. Через некоторое время вы увидите данные по параметрам событий в отчетах Яндекс Метрики:

Значения параметров событий UTM

Если вы желаете иметь чуть другую вложенность, чтобы utm_метки группировались в отчете по событиям, вы можете изменить конфигурацию тега Яндекс Метрики, задав такую конструкцию:

Тогда в отчетах у вас будет структура такого вида:

Другая структура параметров. Первый параметр - само событие, а внутри - вложенность из нескольких параметров

Вы сможете с легкостью отличать параметры UTM, переданные с одним событием, от другого.

Пример одновременной передачи и данных о текущем визите, и данные первого визита посетителя. Добавьте ее в поле params тега Яндекс Метрики, заменив названия параметров и их значения на свои:

Количество просмотренных страниц (sbjs.get.session.pgs)

Данная метрика будет полезна, если вы захотите запустить триггер, тег после просмотра пользователем 1,2,3...N страниц (PageView). По сути, это счетчик просмотренных страниц. Передавая значение в качестве параметра события с важным для вас событием, вы будете знать, сколько пользователь просматривает страниц прежде, чем совершить целевое для вас действие (=конверсию).

Три примера отслеживания счетчика просмотренных страниц я разбирал в этой публикации. Если вы используете данный скрипт, то отследить это стало еще проще. Создайте переменную типа Переменная JavaScript с именем sbjs.get.session.pgs.

🔥 Новый онлайн-курс «n8n для маркетологов». Старт 1 июля!
ПОДРОБНЕЕ