Подмена контента на сайте с помощью Яндекс Тег Менеджера

08 сентября, 2025

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

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

Начало

Читать еще:

Фактически, подмена любого контента на сайте может быть осуществлена тремя способами:

  1. на стороне сервера (Server-side) - контент формируется и меняется еще до отправки ответа клиенту;
  2. на стороне клиента (Client-side) - контент подменяется уже после загрузки страницы в браузере;
  3. с использованием сторонних решений (сервисы A/B-тестирования и персонализации) - гибридный вариант (подмена "на лету" на уровне сети или стороннего скрипта).

Выполняя подмену на стороне сервера, вы можете управлять контентом до отправки и показа его пользователем на вашем сайте, что практически сводит к 0 ситуации, когда посетитель видит изначально оригинальный контент, а потом через мгновенье подмененный. При подмене контенте на стороне клиента, напротив, часты случаи «мигания», когда пользователь сначала видит исходный текст/блок, а затем после загрузки скрипта и изменения структуры DOM, контент резко «перепрыгивает» и становится другим.

Такой опыт реально раздражает пользователей, особенно:

  • если изменения касаются заголовков, цен, кнопок, номера телефона или подмененного электронного адреса (e-mail);
  • если скорость соединения низкая и скрипт грузится с задержкой;
  • если блоки «пляшут» и переносят элементы интерфейса.

Серверная подмена предпочтительнее, так как контент формируется сразу в том виде, в каком должен быть показан, нет визуального артефакта и меньше вероятность, что пользователь заметит, что что-то подменялось. Но и отслеживание на стороне сервера имеет ряд недостатков - сложнее внедрять быстрые A/B-тесты или персонализацию без участия разработчиков.

Поэтому многие компании все равно используют клиентскую подмену, жертвуя UX ради скорости запуска экспериментов. Третий способ (с использованием сторонних сервисов) тоже является распространенным, однако в последнее время владельцы сайтов отказываются от него, так как не хотят платить дополнительные деньги за такие подмены. И все чаще используют альтернативы - ту же подмену с помощью Яндекс Тег Менеджера, о которой я поведаю ниже, а также Персонализации в Вариокубе.

Персонализации в Вариокуб

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

Однако в базовом (бесплатном) плане Вариокуба доступно только 2 активные персонализации одновременно. До 10 - только на платном тарифе. Этого может быть недостаточно. Поэтому я хочу вам продемонстрировать бесплатный способ подмены различного контента на стороне клиента (Client-side) с использованием Яндекс Тег Менеджера.

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

В этой публикации я покажу самую простую подмену контента - заголовка на главном (первом) экране. Предположим, что у нас есть сайт с таким заголовком:

Заголовок на первом экране, который будем подменять

И мы хотим подменять этот заголовок в зависимости от определенных условий. Какие условия подмены в принципе могут быть?

Подмена контента на сайте и персонализация пользователей обычно строятся на условиях (триггерах), которые определяют, что именно показывать конкретному пользователю. Их можно разделить на несколько категорий:

1. По источнику трафика и меткам

  • UTM-метки (utm_source, utm_medium, utm_campaign, utm_term, utm_content) - если пользователь пришел с кампании utm_source=vk, показать баннер с спецпредложением;
  • Реферер - можно подменять контент, если пользователь пришел с другого сайта;
  • GET-параметры - параметры, которые передаются дополнительно в ссылке, могут быть триггером для подмены.

2. По географии

  • Регион пользователя (страна, город, область) - используется через определение IP-адреса и геолокации;
  • Язык браузера / языка сайта - например, показывать контент на русском, если navigator.language = ru;

3. По устройству и браузеру

  • Тип устройства (мобильный, планшет, десктоп);
  • ОС или браузер - иногда подстраивают дизайн или функционал под Safari, Android и т.д.;
  • Разрешение экрана - например, показывать меньший баннер на мобильных.

Эти и другие параметры пользователя можно определять с помощью UAParser.js.

4. По поведению пользователя

  • Посещенные страницы - например, если пользователь уже заходил на страницу товара, можно показывать «напоминание» или рекомендации;
  • Время на сайте / глубина просмотра - чем дольше на сайте, тем более "активный" контент показываем;
  • История заказов / действий - персональные рекомендации (upsell, cross-sell);

5. По времени

  • Дата и время - сезонные баннеры, акции по дням недели или времени суток;
  • События и праздники - Новый год, Черная пятница, местные праздники.

6. По сегментам аудитории

  • Зарегистрированные vs. Незарегистрированные пользователи - разный приветственный контент;
  • Платежеспособность / VIP-статус - отображение премиальных предложений;

7. По экспериментам и A/B тестам

  • Случайная подмена - для тестирования разных вариантов баннера или текста;
  • Сегментация по группам - 50% пользователей видят версию A, 50% - версию B.

Как видите, вариантов много. Самый простой из приведенных вариантов, который вы сможете повторить самостоятельно для своего проекта - это осуществлять подмену по источнику трафика и utm_меткам.

В качестве параметра возьмем метку utm_content (можно взять любую другую, хоть нестандартную, например, m_change), в которую будем помещать значения других заголовков. Чтобы проще и быстрее реализовать задуманное, лучше всего подготовить заранее отдельную таблицу с метками и их значениями. Вот как это может выглядеть:

utm_content Заголовок на сайте Конечный URL
zag1 Контекстная реклама от Graph Analytics site.ru/utm_content=zag1
zag2 Веб-аналитика от Graph Analytics site.ru/utm_content=zag2
zag3 Таргетированная реклама от Graph Analytics site.ru/utm_content=zag3
zag4 Сквозная аналитика от Graph Analytics site.ru/utm_content=zag4
zag5 Консультации по рекламе и аналитике site.ru/utm_content=zag5

Например, вы сделали пост в социальной сети или разметили рекламные кампании, разбили свой товар или услугу на категории (контекстная реклама -> один заголовок, веб-аналитика -> другой заголовок и т.д.). При переходе по одной из ссылок (столбец «Конечный URL») пользователь будет видеть подмененный заголовок (из столбца «Заголовок на сайте»).

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

Последовательность действий по подмене заголовка на сайте следующая:

  • в Тег Менеджере активируем Пользовательский HTML в настройках счетчика Яндекс Метрики;
  • создаем встроенную переменную "Адрес страницы";
  • создаем триггер;
  • создаем итоговый тег.

Давайте рассмотрим каждый шаг подробнее.

Активация функции “Пользовательский HTML”

Первым делом вам необходимо активировать опцию Пользовательский HTML в настройках счетчика Яндекс Метрики.

Для этого перейдите в раздел Настройки - Счетчик:

Настройки - Счетчик

И включите функцию Пользовательский HTML:

Активация пользовательского HTML

Пользовательский HTML в Yandex Tag Manager (YTM) - это тип тега, который позволяет добавлять на сайт произвольный HTML-код, JavaScript или другие скрипты, которые не поддерживаются стандартными тегами и которых нет в каталоге шаблонов. Код будет выполняться при срабатывании триггера, в нем также можно использовать переменные для динамической подстановки нужных значений.

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

Создание переменной “Адрес страницы”

Перейдите в Яндекс Тег Менеджер и откройте раздел Переменные.

Переменные

В шаблоне переменной выберите Адрес страницы:

Адрес страницы

Задайте следующие настройки переменной:

  • Название – paramURL (или любое произвольное);
  • Тип компонента – Запрос;
  • Ключ запроса – utm_content (тот, который вы определили для себя, может быть другим);

Настройки переменной

Сохраните переменную.

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

Теперь перейдите в раздел Триггеры.

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

Выберите тип триггера - Инициализация.

Триггер "Инициализация"

Он будет активироваться только тогда, когда значение переменной utm_content определено. В противном случае если в ссылке нет параметра запроса, и оно принимает значение undefined (не определено), то контент подменяться не будет, и тег не сработает.

Укажите следующие настройки триггера:

  • Название – Подмена контента с utm_content (может быть любым);
  • Условие активации триггера – Некоторые события;
  • Активировать триггер при наступлении события и выполнении всех этих условий - paramURL не равно undefined.

Триггер активации

Сохраните триггер.

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

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

В Яндекс Тег Менеджере откройте раздел Теги и создайте тег типа Пользовательский HTML:

Шаблон тега "Пользовательский HTML"

Что же добавлять в блок HTML? Какой фрагмент кода?

Пользовательский HTML-тег

Перед реализацией этого шага необходимо определить атрибуты заголовка, на основании которого мы можем производить изменения. Именно от этого будет зависеть реализация пользовательского HTML в Яндекс Тег Менеджере.

Чтобы узнать значение у подменяемого заголовка (=HTML-элемента), перейдите на сайт и откройте консоль разработчика.

Примечание: клавиша F12 открывает консоль разработчика (DevTools) в большинстве браузеров, включая Chrome и Firefox. Вы также можете открыть DevTools, нажав Ctrl + Shift + I (Windows) или Cmd + Option + I (macOS), или через меню браузера, выбрав соответствующую опцию.

Перейдите на вкладку Elements (Элементы) и найдите там свой заголовок, для которого вы будете осуществлять подмену. Он должен будет подсветиться на странице:

Инспектирование HTML-элемента (заголовка) в консоли разработчика

Как только вы его найдете, нажмите по нему правой кнопкой мыши и скопируйте селектор через меню Copy - Copy selector:

Копирование селектора заголовка

Сохраните это значение в блокноте. Оно вам понадобится дальше в теге Яндекс Тег Менеджера.

Если вам сложно найти нужный элемент на странице и вы не понимаете, как скопировать селектор для заголовка, обязательно посмотрите другие материалы моего блога. А именно:

Хоть они и написаны с использованием примеров для диспетчера тегов Google, тема DOM, HTML и CSS-селекторов является фундаментальной, поэтому читая все вышеприведенное, вы можете ставить знак равенства Google Tag Manager = Яндекс Тег Менеджер.

И обязательно посмотрите подробную лекцию на эту тему. Rutube:

И YouTube:

В моем примере селектор заголовка получился таким:

Вернитесь в Яндекс Тег Менеджер и вставьте в свой Пользовательский HTML тег конструкцию такого вида:

, где вместо:

  • CSS-селектор вы задаете селектор своего собственного HTML-элемента (заголовка), который вы скопировали из консоли разработчика, когда инспектировали его;
  • {{paramURL}} - это имя вашей встроенной переменной Адрес страницы, отсылка на нее через шаблонизацию. Если вы его не меняли, то оно будет у вас таким же;
  • zag1, zag2, zag3, zag4, zag5 - меняете на свои значения, которые будете передавать в utm_content (см. таблицу выше);
  • для каждого значения zag1, zag2, zag3, zag4, zag5 пропишите свои значения заголовков (вместо моих), которые будут подменяться.

В Яндекс Тег Менеджере поддерживается шаблонизация в теге Пользовательский HTML. То есть вы можете в собственном JavaScript-коде ссылаться на другие переменные, которые вы раннее создали в своем контейнере, используя шаблон {{ Как только вы начнете вводить двойные фигурные скобки, вам откроется список доступных переменных, из которого вы можете выбрать нужные:

Шаблонизация в теге "Пользовательский HTML"

Однако в ЯТМ пока отсутствуют пользовательские переменные Таблица поиска и Таблица регулярных выражений, которые доступны в Google Tag Manager. Поэтому вместо готовой переменной нам приходится использовать свой собственный скрипт внутри HTML-тега.

Переменная "Таблица поиска" в Google Tag Manager

Вместо длинной цепочки if/else можно сделать таблицу соответствий (объект в JavaScript). Тогда добавлять новые варианты проще, и код получается короче:

Теперь вместо if/else у нас один объект titlesMap. Проверка выполняется через titlesMap[paramURL]. Если совпадений нет — подставляется "Заголовок по умолчанию".

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

Тег подмены контента

Проверка подмены

Проверить подмену контента на сайте можно с помощью режима предварительного просмотра. В правом верхнем углу Тег Менеджера нажмите на кнопку Предварительный просмотр и дождитесь компиляции ссылки.

Предварительный просмотр

Как только это произойдет, нажмите на кнопку Открыть предварительный просмотр:

Открыть предварительный просмотр

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

В отдельном окне откроется ваш сайт, а в адресной строке браузера в URL-ссылке будет добавлен специальный параметр _ytm_preview. После него добавьте поочередно различные параметры в вашей utm_метке, чтобы проверить заголовки.

В моем примере это будет выглядеть так:

Записал для вас небольшое видео демонстрации подмены контента после запуска режима отладки:

 

Как видите, все работает корректно. Не забудьте опубликовать контейнер Yandex Tag Manager, чтобы настройки вступили в силу и заголовки подменялись для всех пользователей.

Итоги

Таким образом, с помощью Яндекс Тег Менеджера вы можете настраивать правила, при котором на сайте будут подменяться не только заголовки, но и подзаголовки, номера телефонов в зависимости от источника переходов, изображения и многое другое. Если на сайте нужно выполнить несколько подмен, создайте для каждой подмены свой собственный HTML-тег.

Однако все же лучший способ реализации динамического контента на сайте – это серверная сторона (Server-side), а не браузерная/клиентская (Client-side), поскольку различные манипуляции с DOM могут привести к замедлению загрузки страницы у пользователя, да так, что он увидит эту подмену на сайте.

Использование такого приема допустимо в небольших проектах (например, на лендингах или сайтах с несколькими страницами), а также при низком трафике. Однако если ежедневное количество пользователей превышает несколько тысяч, а на сайте много HTML-элементов, заголовков и подмен, рекомендуется реализовывать все это через backend.