0 %

Hello There!

Lorem ipsum dolor sit amet, consectetur adipiscing elit,

Information

Follow Us

Datalayer в Google Tag Manager — что это такое и как работает?

OdesSeo > Blog Standard > PPC > Datalayer в Google Tag Manager — что это такое и как работает?
22 Minute

Datalayer в Google Tag Manager — что это такое и как работает?

DataLayer в Google Tag Manager

Google Tag Manager — это очень функциональный и полезный инструмент в работе интернет-маркетологов. Благодаря ему большинство установок необходимых для работы кодов рекламных систем и систем веб-аналитики, а также различных кодов отслеживания стало возможным без привлечения веб-разработчиков и вмешательства в код сайта. Но все же есть ряд задач, при которых для настройки корректного отслеживания необходима передача данных без привязки к DOM-структуре. В таком случае нам понадобится использовать специальную конструкцию — уровень данных (или dataLayer).

Что такое dataLayer (уровень данных)

Для начала рассмотрим, что же такое dataLayer.

DataLayer — это массив объектов JavaScript, с помощью которого можно передавать нужную вам информацию в Google Tag Manager. Например, это могут быть различные переменные, события. В интерфейсе GTM на основании передаваемых данных можно настраивать триггеры, а также расширять передаваемую в Google Analytics информацию о посетителях сайта своими данными.

Как выглядит dataLayer

Рассмотрим пример dataLayer:

<script>

dataLayer = [{
'pageCategory': 'blog',
'author': 'Anastasiia'
}];

</script>

В данном случае уровень данных представляет собой массив, который содержит объект, свойства которого являются теми переменными, в которые мы передаем необходимые нам значения. Так, если при загрузке страницы блога я хочу передать в dataLayer тип страницы и имя автора текущей статьи, то я могу в переменную pageCategory передать значение ‘blog’, в author — ‘Anastasiia’.

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

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

<!-- Google Tag Manager -->

<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>

<!-- End Google Tag Manager -->

При необходимости мы можем переопределить название массива dataLayer. Для этого в инициализирующем коде в строке

нужно заменить “dataLayer” на желаемое название.

Метод push для передачи данных

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

dataLayer.push({'variableName': 'variableValue'});

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

Что такое event в dataLayer

Для отслеживания различных действий пользователя в GTM предусмотрена специальная переменная event. Event можно использовать внутри обработчика того или иного события.

dataLayer.push({'event': 'eventName'});

Например, при клике на кнопку, вызывающую окно заказа звонка, можно использовать конструкцию:

<a href="#order" name="order-button" onclick="dataLayer.push({'event': 'order-button-click'});" >Заказать звонок</a>

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

<a href="#order" name="order-button" onclick="dataLayer.push({'event': 'order-button-click', 'position': 'top'});" >Заказать звонок</a>

Переменные уровня данных и пользовательские события в GTM

В GTM на основании передаваемых с помощью dataLayer данных можно создавать переменные и триггеры.

Как создать переменную уровня данных в GTM

Необходимо добавить новую пользовательскую переменную,

в качестве ее типа выбрать “Переменная уровня данных”. В поле “Имя переменной уровня данных” указать название переменной, которое фигурирует в dataLayer (для примера, приведенного выше, это variableName).

Как создать переменную уровня данных в GTM

Как создать пользовательское событие в GTM

Необходимо добавить новый триггер. В качестве типа триггера нужно выбрать “Пользовательское событие”

Выбираем событие, которое фигурирует в dataLayer

В поле “Имя события” указать имя события, которое фигурирует в dataLayer (для примера, приведенного выше, это eventName).

указуем имя события, которое фигурирует в dataLayer

Как проверить содержимое уровня данных

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

Для того, чтобы перейти в консоль, нужно кликнуть правой кнопкой мыши на любой области веб-страницы, затем в появившемся меню выбрать “проинспектировать элемент” и перейти на вкладку Console.

Далее в консоли написать dataLayer и нажать Enter.

Ниже будет представлена внутренняя структура массива.

По умолчанию Диспетчер тегов Google передает на уровень данных следующий набор значений:

gtm.js – передается в момент, когда Google Tag Manager готов к работе.

gtm.dom – передается в момент, когда готова модель DOM.

gtm.load – передается в момент, когда окно полностью загружено.

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

Рассмотрим пример:

Предположим, что нам необходимо настроить событие заказа звонка на сайте OdesSeo.

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

dataLayer.push({'event': 'ordercall'});

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

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

Теперь в интерфейсе Google Tag Manager мы сможем создать триггер типа “Пользовательское событие” для отправки данных в Google Analytics или другую систему аналитики.

Примеры использования dataLayer

Рассмотрим несколько примеров использования уровня данных.

  • Отслеживание отправки форм

В статье “Учимся работать в GTM”  в пункте, посвященному отслеживанию отправки форм я уже рассказывала подробно, как использовать dataLayer для трекинга форм, отправляющих данные посредством ajax. 

  • Отслеживание e-commerce‎

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

<script>

dataLayer = [{
'transactionId': '123456',                              //id транзакции
'transactionAffiliation': 'best-flowers',           //наименование магазина
'transactionTotal': '20',                                 //сумма транзакции
'transactionTax': '1.99',                                //налог
'transactionShipping': '1.99',                       //доставка
'transactionProducts': [{                              
'sku': 'AA11',                                               //артикул товара
'name': 'rose',                                             //наименование товара
'category': 'red',                                          //категория товара
'price': '20',                                                 //цена товара
'quantity': '1'                                               //количество
}]
}];

</script>

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

dataLayer.push({
'event': 'transactionComplete',                     //событие совершения транзакции
'transactionId': '123456',                              //id транзакции
'transactionAffiliation': 'best-flowers',           //наименование магазина
'transactionTotal': '20',                                 //сумма транзакции
'transactionTax': '1.99',                                //налог
'transactionShipping': '1.99',                       //доставка
'transactionProducts': [{                              
'sku': 'AA11',                                               //артикул товара
'name': 'rose',                                             //наименование товара
'category': 'red',                                          //категория товара
'price': '20',                                                 //цена товара
'quantity': '1'                                               //количество
}]
});
  • Передача идентификатора просмотренного пользователем товара для использования динамического ремаркетинга.

Функционал ремаркетинга позволяет показывать объявления тем, кто уже посещал сайт. Динамический ремаркетинг – это ещё более эффективный инструмент, с помощью которого можно показывать рекламу именно того товара, которым интересовался пользователь.

Если кто-то не сталкивался с понятием динамического ремаркетинга и еще не знаком с преимуществами этого инструмента, посмотрите эту статью

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

Например, для передачи идентификатора продукта, категории страницы и стоимости товара  можем использовать dataLayer вида:

<script>

dataLayer = [{
   'productId' : '123',
   'pageType' : 'product',
   'totalValue' : 1000
}];

</script>

Также частыми примерами использования является передача всевозможных атрибутов посетителя — User ID, Client ID, тип пользователя (залогинен/не залогинен) и пр.

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

Tagged with :

Comments (27)

  • Александр Качков

    Спасибо за хорошую статью.
    Телеграм канал есть у вас?

    • Anastasiia Tymoshenko

      Спасибо, Александр! Мне очень приятно) Да, есть. Вот ссылка: https://t.me/OdesSeo

  • Alex Putevoi

    Спасибо большое за статью, очень понятно написали! Не то что эти мануалы для индейцев от гугла

    • Anastasiia Tymoshenko

      Спасибо за приятные слова! Я старалась=)

  • Артем Малькевич

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

    1
    dataLayer.push({‘event’: ‘ordercall’});»

    А как это сделать, чтобы в дата леер это отобразилось?

    • Анастасия Тимошенко

      Артем, добрый день.
      Об особенностях отслеживания успешной отправки форм я писала в этой статье https://odesseo.com.ua/uchimsya-rabotat-v-gtm-v2/ пункт «Отслеживание отправки форм в GTM».

      • Артем Малькевич

        Меня интересует как именно выводиться информация в дата Леер.
        Как происходил datalayer.push.

        • Анастасия Тимошенко

          В одном из javascript-фалов Вам нужно найти функцию, отвечающую за отправку данных формы. Выглядит это примерно так:

          $.ajax ({
          url :’/example.com/geinfo_function’,
          type : ‘post’,
          data : {‘exam1’: value1},
          success: function() {…}
          })

          Параметр success отвечает за выполнение указанных действий в случае успешной отправки формы. Внутри function() { … } нужно прописать команду

          dataLayer.push({‘event’: ‘event_name’});

          где event_name – имя соответствующего события.

          Подробнее процесс настройки описан в статье, ссылку на которую я дала выше.

  • Владимир

    Добрый день. Подскажите, что нужно прописать в datalayer, чтобы передать эти данные для динамического ремаркетинга (http://prntscr.com/jergqt)Данные необходимо передавать для ecomm_prodid

  • Sergh

    Дякую, якісно подані роз’яснення.

    • Анастасия Тимошенко

      Дякую!

  • Николай

    Спасибо за статью, скажите электронную торговлю, и динамический ремаркетинг разве можно внедрить через GTM? если да то все корректно работает и есть ли какие-то минусы через GTM внедрять? И может статья есть у вас? Спасибо.

    • Анастасия Тимошенко

      Добрый день, Николай.
      И для отправки данных о транзакциях, и для настройки динамического ремаркетинга можно использовать GTM. Но помимо тегов в GTM, в зависимости от конкретного сайта, обычно может потребоваться передача данных в массив dataLayer с последующим использованием в GTM. Минусов внедрения GTM лично в моей практике не было. По статьям, возможно, вам будет интересен этот пост: https://odesseo.com.ua/enhanced-ecommerce-gtm/

  • Ivan

    Здравствуйте. Подскажите как передавать в dataLayer параметры из последнего примера.
    Например на странице фильтра товаров где 10 или 15 товаров?

  • Виктор

    Очень полезная статья! Анастасия, Спасибо!

    • Анастасия Тимошенко

      Спасибо☺

  • Борис

    Подскажите, как выдрать и передать в GTM переменную из id-gtm в коде ссылки href=»#» id=»contact_with_author» id-gtm=»44559″ class=»send-message» ? C помощью какой функции?

  • Alex

    Анастасия, добрый день! подскажите как правильно указать специальный параметр — переменную уровня данных в тег менеджере, если в разметке уровня данных она находится на 3м уровне, а сам продукт состоит из нескольких сегментов (для этого используем
    «legs») Пример:

    «ecommerce»: {
    «currencyCode»: «USD»,
    «impressions»: [
    {…
    «legs»: [
    {
    «Id»: 0,
    «segments»: [
    {
    «dimension1»:

    Проблема в том, что тег менеджер цепляет только те параметры, которые находятся в ивенте, те которые далее в сегменте отображаются как «undefined» в дебаг консоли тег менеджера. Спасибо

  • Yan

    мощно! и понятно! спасибо)

    • Анастасия Тимошенко

      Спасибо!)

  • Сергей

    Супер, статья!
    Все понятно!

  • Alex

    Спасибо! Все понятно и человеческим языком!

    • Анастасия

      Супер! Спасибо=)

  • Дмитрий

    А как сделать отправку этих шагов на сервер? Вот сделал я сто раз push, но все эти данные продолжают лежать в dataLayer на странице и на сервер не уходят

    • Анастасия

      Добрый день!
      Для того, чтобы отправить данные на сервер системы веб-аналитики, нужно создать соответствующие теги в интерфейсе GTM.

  • Владимир

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

  • Богдан

    Все зрозуміло. Дякую за інформацію

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *