Динамический фавикон с помощью Google Tag Manager

08 марта, 2022

Пример использования диспетчера тегов Google для динамического изменения фавиконки сайта на число товаров, которое пользователь добавил в корзину.

Начало

Сколько у вас вкладок открыто в браузере в эту секунду, пока вы читаете данную статью? 5, 7, 10? Некоторые исследования подтверждают, что если у человека открыто более 5 вкладок одновременно, то он принимает решение о дальнейшем ее использовании (закрыть/оставить), глядя на favicon и заголовок страницы (title).

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

Фавиконы известных компаний

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

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

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

Количество добавленных товаров в фавиконке

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

  • два тега;
  • две переменных.

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

Основная задача этой статьи - показать вам нестандартные возможности использования Google Tag Manager. Поэтому рассматривайте данный материал как обучающий.

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

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

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

Суммирование всех значений переменной quantity

Для этого требуется специальный код. Перейдите в GTM и создайте пользовательскую переменную типа Собственный код JavaScript, добавив в нее следующие строчки:

В Google Tag Manager это выглядит так:

Код для подсчета количества товара, добавленного в корзину

Назовите переменную (например, Quantity Items) и сохраните ее.

Этот код является универсальным для двух уровней данных электронной торговли. В одном случае массив может иметь вложенность и начинаться на ecommerce.products (для расширенной электронной торговли Universal Analytics), а в другом на ecommerce.items (для электронной торговли Google Analytics 4). Именно к ним и идет отсылка в текущем коде. Вы можете в переменной var prods = оставить только один вариант (и еще удалить ||), который будет применителен к вашему проекту, а можете оставить как в моем примере.

Дополнительно создайте пользовательскую переменную типа Переменная уровня данных с именем переменной уровня данных ecommerce.items и ecommerce.products соответственно (для той электронной торговли, которая реализована на вашем сайте):

ecommerce.items и ecommerce.product

Эта переменная нужна для того, чтобы получить общий массив со всеми товарами электронной торговли. А переменная со специальным кодом ссылается на нее и извлекает из всего массива только количество (quantity) каждого товара и суммирует его. Для этого используется цикл for.

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

Теперь создайте тег типа Пользовательский HTML и вставьте в него следующий код (оригинал):

В Google Tag Manager это выглядит так:

Код favico.js

В качестве триггера активации вы можете указать конкретную страницу, чтобы код для динамической фавиконки срабатывал не на всем сайте, а только для корзины. Для моего сайта - это страница /cart. Используйте триггер не Container Loaded (Просмотр страницы), а Модель DOM готова (DOM Ready) или Окно загружено (Window Loaded). Задайте название тега и сохраните его.

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

, где {{Quantity Items}} - переменная, созданная для подсчета количества добавленных в корзину товаров. Ее мы добавили в Google Tag Manager на предыдущем шаге. Именно это значение и будет подставляться в красный кружок рядом с фавиконкой. Если вы назвали переменную по-другому, измените это значение на свое.

В Google Tag Manager:

Код запуска динамической фавиконки

Триггер активации - ваша страница корзины или любой другой сценарий, который хотите реализовать.

Вы также можете изменить тип анимации в строке animation:'popFade', с помощью которого будет выводиться данное значение. Подробнее об этом читайте на официальном сайте разработчика. Вы также можете изменить цвет кружка, шрифт, цвет шрифта, форму значка (круг или прямоугольник) и т.д. Все эти значения меняются в теге favico.js в самом начале кода:

Изменение настроек значка

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

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

Результат внедрения

Не забудьте опубликовать контейнер GTM со всеми изменениями.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике