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

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *