new

Как настраивать конверсионные стратегии: работа над ошибками. Читайте в спецпроекте

5839 https://ppc.world/uploads/images/ac/0a/5a81fa7c91963-magic.jpg 2018-02-13 Процессы ppc.world 160 31

Скрипт для подмены контента на сайте по UTM-меткам — подробное руководство

Специалист агентства контекстной рекламы 1jam.ru Павел Корякин объясняет, как самостоятельно настроить динамическую подмену практически любых элементов на сайте. Нужно только разобраться с несложным скриптом и Google Tag Manager.

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

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

<script>
// Добавьте UTM-метку utm_replace к ссылке в рекламной кампании, например
//site.ru/?utm_campaign=name&utm_replace=moscow

// moscow, это краткий код заголовка, которому соответствует длинный заголовок, например
// moscow, это  «Заказать эвакуатор в Москве!»
var content = {
    moscow: 'Заказать эвакуатор в Москве!',
    kazan: 'Заказать эвакуатор в Казани!',
    spb: 'Заказать эвакуатор в Санкт-Петербурге!',
};

//  Здесь нужно между одинарными кавычками вставить селектор http://joxi.ru/GrqZodptNMNlWm
var selector = '#manager > div > div.title > div'; 
 

// Далее ничего не меняйте, это исполняющий замену скрипт
function replacer(content) {
    var utm = /utm_replace=([^&]*)/g.exec(document.URL)[1]; 
    if (utm in content) {
        document.querySelector(selector).innerHTML=content[utm];
    } else {
        console.log('Каталог контента не имеет такой utm метки');
    };
};
 
replacer(content);
</script>

Как это работает

Соответствие UTM-метки и заголовка

В ссылки к рекламным объявлениям мы добавляем новую UTM-метку utm_replace (что такое UTM-метки) и в значении указываем краткий код заголовка, который будет подставляться utm_replace=moscow.

Разберем, как это реализуется.

var content = {
    moscow: 'Заказать эвакуатор в Москве!',
    kazan: 'Заказать эвакуатор в Казани!',
    spb: 'Заказать эвакуатор в Санкт-Петербурге!',
};

Это вроде словаря, где содержатся краткие коды (moscow, kazan, spb) и значения — заголовки, которые должны подставляться на сайте.

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

Есть некоторые условия:

  1. Краткое название должно быть без пробелов на английском языке, но можно использовать подчеркивания, например moscow_russia.
  2. Перед кратким названием должно быть четыре пробела, как в примере кода.
  3. После краткого названия стоит двоеточие.
  4. Длинный заголовок содержится между одинарными кавычками ' '.
  5. После длинного заголовка обязательно стоит запятая.

Пример

var content = {
    primer_s_perenosom: 'Перенос заголовка на новую строку<br/> в Москве!',
    primer_s_html: '<h1>Можно вставлять прямо с HTML</h1>',
    primer_s_kartinkoy: '<img src=”ссылка на изображение”>',
};

Где на странице подменять заголовок

Есть такая штука — селектор — он определяет путь до элемента в коде сайта. Копируем его в браузере и вставляем в строку var selector = 'сюда'

var selector = '#block-new1066 > p > span > strong > span > span';

Получить селектор очень просто. Открываем сайт в Google Ghrome, включаем инспектор (Вид > Разработчик > Веб-инспектор)

Если у вас другой браузер, то гуглите «как включить веб-инспектор в моем браузере».

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

Одновременно у нас подсветится код данного элемент в окне справа

В коде нажимаем правой кнопкой мыши на выеделенный фрагмент и копируем селектор: Копировать > Копировать selector.

Вставляем в скрипт.

var selector = 'вставь сюда между одинарных скобочек';

Все, дальше идет функция, которая делает свое дело.

Как установить скрипт на сайт

Есть два способа: установить код перед закрывающимся тегом </body> или через Google Tag Manager. Рассмотрим последний способ.

Сначала узнайте, как установить Google Tag Manager на сайт и зачем он нужен, алгоритм похож на установку кода Метрики или Analytics. Предположим, вы его установили и находитесь на главном экране. Переходим в раздел «Теги» и создаем новый тег.

Выбираем Custom HTML (Пользовательский HTML).

Вставляем код скрипта.

В качестве триггера выбираем All Pages (Все страницы).

И добавляем (плюсик +) еще один триггер DOM Ready (Готовность DOM). Это означает, что наш скрипт будет срабатывать только после того, как загрузится вся страница.

Все, сохраняем тег, нажав на Save.

Сохраняем и публикуем.

Как это работает

При переходе на сайт по ссылке 1jam.ru/?utm_replace=headline вместо стандартного заголовка пользователь увидит другой.

Плюсы и минусы скрипта

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

Но плюсов больше:

  • быстро;
  • бесплатно;
  • просто разобраться;
  • не нужно уметь программировать;
  • идеально для лендингов.

Пофантазируем, как это можно еще использовать

  • менять номер телефона, например, для AdWords использовать один, а для Яндекс.Директа другой;
  • заменять картинку;
  • изменять город;
  • изменять заголовки под ключевые слова;
  • изменять под динамические параметры.

Как заменить сразу несколько заголовков и картинку

Если нужно менять несколько элементов, например, заголовок, номер телефона и картинку, то код усложняется.

Все работает по тому же принципу, но отличие в том, что вместо одного заголовка мы указываем [{код:заголовок},{код:номер телефона},{код:картинка}], чтобы подменять сразу несколько элементов. В поле selector вставляем селектор, а в поле content вставляем заголовок. Все остальное работает так же.

<script>
var content = {
    coctail: [
    	{
    	selector: '#manager > div > div.title > div',
    	content: 'Сашка доволен доволен тобой!'
    	},
    	{
    	selector: '#manager > div > div.entry',
    	content: '<img width="420" alt="Коктели" src="/upload/medialibrary/f47/f47abc04c6893dbb6044bd7921ff75ac.jpg" height="67" title="Коктели">'
    	}
    ],
    moscow: [
        {
        selector: '#towns > div',
        content: 'Московский номер'
        },
        {
        selector: '#manager > div > div.title > div',
        content: 'Московская версия сайта'
        }
    ],
    headline: [
        {
        selector: '#manager > div > div.title > div',
        content: 'Заменяется только заголовок'
        }
    ]
};
 
function replacer(content) {
    var utm = /utm_replace=([^&]*)/g.exec(document.URL)[1]; 
    if (utm in content) {
        for (i in content[utm]) {
        	document.querySelector(content[utm][i]['selector']).innerHTML=content[utm][i]['content'];
        };
    } else {
        console.log("Каталог контента не имеет такой utm метки");
    };
};
replacer(content);
</script>

Например, при переходе по ссылке 1jam.ru/?utm_replace=moscow меняются заголовок и номер.

Как продолжать заменять контент в последующие переходы без UTM-метки

В скриптах выше проблема в том, что скрипт работает только при наличии UTM-метки в ссылке. Это можно исправить, если записывать краткий код контента в cookie (куки) браузера. Так, в течение 30 дней у пользователя будет автоматически меняться контент согласно UTM-метке, с которой он изначально перешел.

Чтобы не удлинять статью портянкой кода, мы опубликовали его на GitHub. Данный скрипт используется точно так же, как и описанные выше.

Кейсы по использованию скрипта

  1. На сайте rusbeltlp.ru по номенклатурным запросам вида «лента тк 200 купить» заменяли заголовок на «Купить ленту ТК 200 за 40000 рублей с доставкой за 2 дня», конверсия выросла почти в два раза — с 6 до 11%.

  2. Заменяли заголовки и картинки под номенклатурные запросы на сайте жби-уфа.рф. Например, вы ищете «цены фбс 24 2380 300 580», а у вас заголовок «Доставка ФБС 24-3-6 тонн 2380×300×580 в день звонка по 2300 р.», конверсия достигала фантастические 35%, но это было ~4 года назад.

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

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

Перейти на сайт

Комментарии 23

Авторизуйтесь, чтобы оставить комментарий.

  • Владимир Песоцкий

    Не работают примеры

    • Владимир Песоцкий

      Владимир, уточнение: не работают при включенных блокировщиках рекламы. После отключения - всё ок, как в статье. Спасибо за полезный скрипт!

  • Вадя Дядя

    Первый пример работает, спасибо все понятно и по делу. Буду побывать остальные примеры.

  • Аноним

    Павел, добрый день. Подскажите пожалуйста - скрипт может работать только с UTM-метками или его возможно модернизировать таким образом, чтобы он работал и с другим видом меток - например Value-Track (https://support.google.com/adwords/answer/2375447?co=ADWORDS.IsAWNCustomer%3Dfalse&hl=ru)?

    • Павел Корякин

      Аноним, можно модернизировать, но вам проще добавить utm_replace. Если все же хотите модернизировать, то можете попробовать заменить регулярное выражение в строке: var utm = /utm_replace=([^&]*)/g.exec(document.URL)[1]; utm_replace=([^&]*) — это регулярное выражение. utm_replace=(это извлекается, как карткий код заголовка)

  • Артем Александров

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

    • Павел Корякин

      Артем, да, но поставить задачу программисту, продумать логику, это время, а вставить скрипт в GTM, это минута. Если у тебя один лендинг и трафика 50 посетителей, то ставь скрипт, а если трафика 1000 в день и много загловков, то делай через бекенд как положено.

  • Александр Машкарёв

    Павел, а что со сбором статистики? Где и как вы собираете данные по подменам (переходы, кол-во конверсий)?

    • Павел Корякин

      Александр, хороший вопрос, мы внутри Google Tag Manager создаем переменную, в нее вытягиваем краткое название заголовка из UTM и импортируем в Google Analytics через Custom Demensions, но звучит все это сложновато, нужно разобраться и тянет на отдельный материал — сделаем. Вариант проще, это параллельно добавлять название краткого заголовка в utm_content и в Google Analytics строить отчет в разрезе utm_content (Содержание объявления или Ad content). Может есть еще более простые варианты, на данный момент не вспомню.

  • Кирилл Шпак

    Добрый день, возник вопрос Взможно ли cделать подмену на сайте в связке Использую в эдвордс объявления в модификаторе (подменяю города) через фид, поэтому просто поставить метку вида utm_replace=moscow не подойдёт. Может можно в utm метке передовать регион клика, как в яндексе {region_id} и от передоваемого города подменять. Есть ли какое нибудь решение Спасибо за статью

  • Дмитрий Симашко

    Добрый день в примерах подмены нескольких блоков и на Github пропущена запятая вот здесь - https://i.imgur.com/wVmKqu5.png . Без неё примеры не работают

  • Артём Подольский

    Павел, здравствуйте. Я сделал всё как вы написали выше, но подмена не происходит...не могли бы вы взглянуть?)

  • Head Crack

    Оличный материал,все работает. При замене картинки, меняется картинка и перекрывает заголовок, на wp получается добраться до картинки, на boostrap не могу понять как изменить картинку. Подскажите может есть частые ошибки с заменой картинок? Могу скинуть урл. P.S. В любом случае благодарю за материал.

  • Алексей Медянкин

    Здравствуйте! Импортировал скрипт подмены номера в виде html-блока на конструкторе, все сделал по вашей инструкции, но подмены нет. Блокировщика рекламы нет. Нужна помощь... Помогите люди добрые! ) Скрипт: <script> //domain.ru/?utm_campaign=35808851&utm_replace=nomer_vnizu var content = { nomer_vnizu: '+7(3453) 623-114', }; var selector = '#\33 757a6a9239f4cef89d9f524595e9af5 > div > p > span > span > span > a > span > span'; // Далее ничего не меняйте, это исполняющий замену скрипт function replacer(content) { var utm = /utm_replace=([^&]*)/g.exec(document.URL)[1]; if (utm in content) { document.querySelector(selector).innerHTML=content[utm]; } else { console.log('Каталог контента не имеет такой utm метки'); }; }; replacer(content); </script>

  • Roman Lazurenko

    Блин не работает(

  • Алексей Соколов

    Подскажите пожалуйста, а как сделать, чтобы менялся стиль селектора?

  • Андрей Лозовой

    Добрый день! У меня сайт на конструкторе, подмена заголовков и текста работает хорошо, а вот изображение не хочет меняться ни в какую, точнее, оно меняется, но только пока страница загружается, как только загрузилась, возвращается исходное изображение. Подскажите, пожалуйста, как быть. Вот ссылка на сайт http://oborudovanie.standart-gk.ru/?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}&region={region_id}&region_name={region_name}.{device_type}.{region_name}.{retargeting_id}&source={source_type}.{source}&utm_replace=krasnodar

  • Дмитрий Климашин

    Здравствуйте! Подскажите как с помощью этого скрипта можно изменять заголовки под ключевые слова из Яндекс Директа?

  • Вусал Джахангиров

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

  • Ромео Шекспир

    При всем уважении, скрипт нормальный, но ИСКЛЮЧИТЕЛЬНО для одной UTM метки, и в инструкции "Есть некоторые условия:" у вас бред написан во 2 пункте "Перед кратким названием должно быть четыре пробела, как в примере кода." Это json формат, и не нужны там сильно пробелы, уж тем более трагедии не случиться если их будет не четыре а 5 или 6 или 1, жгете :)

  • Никита Николаенко

    Всем привет, прошу помощи! Хотелось бы использовать значение UTM параметра "GI:" для подстановки заголовка H1 из переменной таблицы поиска. Подскажите пожалуйста, как правильно написать в таблице поиска "utm_term содержит 3993203239" или это невозможно? Если это невозможно, то есть другой способ реализовать данную задачу? Часть метки: utm_term=ST:search|GI:3993203239|AI:7931656036|KW:тест Создал две переменные: 1. Переменная URL - https://yadi.sk/i/hydt9StE4j9nPw 2. Переменная таблица поиска - https://yadi.sk/i/BsB6Fv-3ilPZeA Если использовать метку в таком виде "utm_term=3993203239", то всё работает, но хотелось бы упростить объем работ. Оставляю триггер и тег если кто-то пожелает использовать данное решение. (использовал ClassName) 3. Триггер - https://yadi.sk/i/fCUwuNF0zKKfyA 4. Тег - https://yadi.sk/i/fCUwuNF0zKKfyA Заранее благодарю!

  • Антон Кривоносов

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

  • Евгений Якименко

    Не работают ссылки в примере, заголовок такой как им и должен быть.