Блог про интернет-маркетинг для бизнеса

SEO

Как настроить расширенную электронную торговлю с помощью Google Tag Manager

149
0
9
0

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

Я разберу нюансы настройки расширенной электронной торговли с помощью Google Tag Manager, детально опишу настройку событий и покажу, в каких отчетах хранятся значения, отправленные при настройке каждого из них.

Зачем вообще настраивать расширенную электронную торговлю?

Расширенная электронная торговля позволяет настроить передачу данных о таких действиях пользователя:

  1. Product Impressions / Просмотры товаров в каталоге.
  2. Product Clicks / Клики по товарам.
  3. Views of Product Details / Просмотры карточек товаров.
  4. Adding a Product to a Product Cart / Добавление товара в корзину.
  5. Removing a Product from a Product Cart / Удаление товара из корзины.
  6. Checkout Steps / Шаги оформления заказа.
  7. Checkout Options / Варианты оформления заказа.
  8. Purchases / Совершенные покупки.
  9. Refunds / Отмененные покупки.
  10. Promotion Impressions / Показы внутренней рекламы.
  11. Promotion Clicks / Клики по внутренней рекламе.

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

Расширенная электронная торговля позволяет:

  1. Получить данные о полном цикле продажи, начиная с просмотра товаров в каталоге и заканчивая оформлением заказа.
  2. Отслеживать эффективность внутренней рекламы.
  3. Хранить эти данные в одной, удобной для их последующей обработки, группе отчетов.

Зачем и как настраивать enhanced ecommerce с помощью Google Tag Manager?

Благодаря отправке данных через GTM легко:

  1. Проверить наличие ошибок в данных расширенной электронной торговли, воспользовавшись режимом отладки и предварительного просмотра до отправки этих данных в Google Analytics.
  2. Отключить отправку определенных данных без вмешательства в код сайта.

Для настройка передачи данных расширенной электронной торговли в Google Analytics с помощью Google Tag Manager необходимо:

  1. Настроить Google Tag Manager для считывания этих данных и их отправку в Google Analytics.
  2. Настроить передачу нужных данных в Data Layer.

Первая задача обычно внедряется интернет-маркетологом без участия команды разработчиков. Вторая задача решается командой разработчиков на основе технического задания, подготовленного интернет-маркетологом. Обычно данный этап вызывает больше всего вопросов — ему посвящена значительная часть статьи (после раздела «Настройка Google Analytics и Google Tag Manager»).

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

Преимущества метода:

  1. Данные могут передаваться в Data Layer в любой момент, а не только на этапе загрузки страницы.
  2. Присутствует возможность гибко настроить передачу только определенных данных в Google Analytics, не привлекая команду разработчиков.
  3. Упрощение настройки Google Tag Manager: все данные будут отправляться одним тегом.

Недостатки:

  1. В случае использования готовых модулей для различных CMS, настройку GTM нужно будет переделывать под эти модули.
  2. Согласно текущим условиям использования Google Analytics, для каждого аккаунта бесплатно предоставляется 10 млн обращений в месяц. Отправка каждого дополнительного события приближает к этому лимиту, поэтому для сайтов с большим объемом трафика нужно провести дополнительный анализ того, хватит ли предоставляемого бесплатного лимита для всех дополнительных событий.

Настройка Google Analytics и Google Tag Manager

В первую очередь необходимо активировать отчеты расширенной электронной торговли в Google Analytics. Для этого в разделе «Администратор» в настройках электронной торговли нужного представления включаем соответствующую опцию:

В первую очередь необходимо активировать отчеты расширенной электронной торговли в Google Analytics

Для этого в разделе «Администратор» в настройках электронной торговли нужного представления включаем соответствующую опцию

Далее настраиваем GTM для считывания данных из Data Layer. Для этого создаем три пользовательские переменные типа «Переменная уровня данных».

1. GTM EE Event Category

Название переменной: GTM EE Event Category, имя переменной в dataLayer: gtm-ee-event-category.

Название переменной: GTM EE Event Category, имя переменной в dataLayer: gtm-ee-event-category

2. GTM EE Event Action

Название переменной: GTM EE Event Action, имя переменной в dataLayer: gtm-ee-event-action.

GTM EE Event Action

3. GTM EE Event Non-Interaction

Название переменной: GTM EE Event Non-Interaction, имя переменной в dataLayer: gtm-ee-event-non-interaction.

GTM EE Event Non-Interaction

Значения первых двух переменных будут использованы в качестве категории и действия события, отправляемого в Google Analytics. Третья указывает, будет ли влиять отправленное событие на показатель отказов.

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

Название триггера: GTM EE Event, тип: пользовательское событие. Название события: gtm-ee-event.

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

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

Название тега: Enhanced Ecommerce, тип: Universal Analytics. Идентификатор отслеживания: указываем идентификатор ресурса Google Analytics, в который будут отправляться данные.

Для упрощения настройки GTM, можно создать пользовательскую переменную-константу, в которой указать идентификатор ресурса:

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

Добавляем настройки:

  • тип отслеживания: событие;
  • категория: переменная «GTM EE Event Category»;
  • действие: переменная «GTM EE Event Action»;
  • не взаимодействие: переменная «GTM EE Event Non-Interaction».

В пункте «Дополнительные настройки» — «Электронная торговля» следует отметить «Включить расширенные функции электронной торговли» и «Использовать уровень данных». В качестве триггера активации — указать «GTM EE Event».

В пункте «Дополнительные настройки» — «Электронная торговля» следует отметить «Включить расширенные функции электронной торговли» и «Использовать уровень данных»

Разберем примеры примеры кодов для каждого из событий расширенной электронной торговли.

1. Просмотры товаров в каталоге

Отслеживание просмотров товаров в любых списках на сайте: как листинг товаров на странице категории, так и блоки кросс-продаж («Рекомендуемые товары», «Акционные предложения» и так далее).

В данном случае есть два варианта:

  1. Простой — отправлять данные обо всех товарах, которые находятся на странице, независимо от того, видел ли их пользователь.
  2. Сложный — отправлять данные только по тем товарам, которые попали в видимую пользователем область страницы. При перемещении пользователем по странице постоянно проверять, когда новые товары попадают в видимую область, и отправлять данные о них в Google Analytics.

    Читайте, как посмотреть, попал ли элемент в видимую область.

Возможные сценарии:

1. Пользователь перешел на страницу категории, в видимую область попали 6 товаров (2 ряда по 3 товара в каждом), — отправляем данные о просмотре этих 6 товаров.

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

3. Пользователь прокрутил страницу вверх, третий ряд товаров пропал и опять появился первый — никаких данных не отправляем.

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'impressions': [
    {
      'name': 'Product 1',
      'id': 'ID1',
      'price': '23.5',
      'brand': 'Brand 1',
      'category': 'Category 1/Subcategory 11',
      'variant': 'Variant 1',
      'list': 'List 1',
      'position': 1
    },
    {
      'name': 'Product 2',
      'id': 'ID2',
      'price': '14',
      'brand': 'Brand 2',
      'category': 'Category 2/Subcategory 21',
      'variant': 'Variant 3',
      'list': 'List 1',
      'position': 2
    }]
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Product Impressions',
 'gtm-ee-event-non-interaction': 'True',
});
</script>

Расшифровка кода и переменных

  1. currencyCode (строковая необязательная переменная) — указание местной валюты согласно ISO 4217.
    Список поддерживаемых валют. Если местная валюта отличается от указанной в настройках представления — будет произведена конвертация по курсу за предыдущий день.
  2. name (строковая обязательная переменная) — название товара.
  3. id (строковая обязательная переменная) — идентификатор (SKU) товара.
  4. price (строковая необязательная переменная) — цена одной единицы товара. В качестве десятичного разделителя используется точка.
  5. brand (строковая необязательная переменная) — бренд товара.
  6. category (строковая необязательная переменная) — категория, к которой принадлежит товар. Можно указывать иерархию категорий (до 5 уровней), отделяя уровни слешем: «Одежда/Мужская одежда/Футболки».
  7. variant (строковая необязательная переменная) — разновидность товара: любой параметр товара, который меняется без изменения идентификатора товара (цвет, размер и так далее).
  8. list (строковая необязательная переменная) — список, где был показан товар («Акционные товары», «Топ продаж»).
  9. position (необязательная переменная, всегда — целое число) — положение товара в данном списке. Левая верхняя позиция — это номер один.
  10. event (строковая переменная) — указание события, по которому будет активирован тег enhanced ecommerce в GTM.
  11. gtm-ee-event-category (строковая переменная) — указание категории события, которое будет отправлено в Google Analytics.
  12. gtm-ee-event-action (строковая переменная) — указание действия события, которое будет отправлено в Google Analytics.
  13. gtm-ee-event-non-interaction (строковая переменная) — указание, будет ли отправленное событие влиять на показатель отказа сессии. В данном случае не будет, так как пользователь не совершил целевое действие, а только просмотрел товары.

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

Результат

Отправив эти данные, в отчете «Эффективность списка товаров» появятся такие результаты:

Отправив эти данные, в отчете «Эффективность списка товаров» появятся такие результаты

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

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

2. Клики по товарам

Отслеживание кликов по ссылкам на карточки товаров. В Google Analytics отправляются данные о заинтересовавшем пользователя товаре и название списка товаров, в котором он был показан. Наиболее распространенными примерами списков товаров являются:

  1. Листинг товаров в категории.
  2. Результаты поиска по сайту.
  3. Блоки кросс-продаж.
  4. Списки акционных товаров.

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'click': {
     'actionField': {'list': 'List 1'},
     'products': [{
      'name': 'Product 1',
      'id': 'ID1',
      'price': '23.5',
      'brand': 'Brand 1',
      'category': 'Category 1/Subcategory 11',
      'variant': 'Variant 1',
      'position': 1
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Product Clicks',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. list (строковая необязательная переменная) — название списка товаров, где находится товар, по которому пользователь кликнул. Если товар не принадлежит какому-то из списков, следует отправлять пустую строку (в таком случае в отчетах вместо названия списка будет стоять not set).
  2. Все остальные переменные аналогичны тем, что были раньше.
  3. В данном случае отправляется событие, влияющее на показатель отказов: переменная gtm-ee-event-non-interaction принимает значение False.

Результат

После отправки этих данных в отчете «Эффективность списка товаров» будут изменения в метриках «Клики по товарам из списка» и «CTR списка товаров»:

После отправки этих данных в отчете «Эффективность списка товаров» будут изменения в метриках «Клики по товарам из списка» и «CTR списка товаров»

Если кликнуть по названию списка товаров, получим информацию, по какому товару кликнули:

Если кликнуть по названию списка товаров, получим информацию, по какому товару кликнули

3. Просмотры карточек товаров

Отслеживание просмотров карточек товаров. В Google Analytics отправляются такие же данные о товаре, как и в событии «Product Clicks / Клики по товарам», но без положения товара в списке.

Данные об основном товаре карточки могут быть переданы вместе с данными о дополнительных товарах (например, товары в блоках кросс-продаж) в одном событии.

В примере показано, как отправить данные о просмотре карточки товара (массив detail), и о просмотре двух товаров в дополнительном блоке List 2 (массив impressions).

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'detail': {
     'actionField': {'list': 'List 1'},
     'products': [{
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1'
     }]
   },
   'impressions': [
    {
      'name': 'Product 3',
      'id': 'ID3',
      'price': '17.75',
      'brand': 'Brand 2',
      'category': 'Category 1/Subcategory 12',
      'variant': 'Variant 1',
      'list': 'List 2',
      'position': 1
    },
    {
      'name': 'Product 4',
      'id': 'ID4',
      'price': '12.5',
      'brand': 'Brand 3',
      'category': 'Category 1/Subcategory 13',
      'variant': 'Variant 1',
      'list': 'List 2',
      'position': 2
    }]
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Product Details',
 'gtm-ee-event-non-interaction': 'True',
});
</script>

Расшифровка кода и переменных

  1. Все переменные аналогичны тем, что были раньше.
  2. Отправляемое событие не будет влиять на показатель отказов: переменная gtm-ee-event-non-interaction принимает значение True.
  3. Если пользователь попадает на карточку товара из внешнего источника, в переменной list нужно передать пустое значение.

Результат

После отправки этих данных в отчете «Эффективность списка товаров» появятся данные по второму списку:

После отправки этих данных в отчете «Эффективность списка товаров» появятся данные по второму списку

И товарам этого списка:

И товарам этого списка

Также в отчете «Анализ покупок» — «Поведение покупателей» появится сеанс с просмотром товаров:

Также в отчете «Анализ покупок» — «Поведение покупателей» появится сеанс с просмотром товаров

В момент, когда был сделан скриншот, сессия уже была завершена, поэтому значение показателя «Ни один товар не добавлен в корзину» равен одному.

4. Добавление товара в корзину

Отслеживание добавлений пользователями товаров в корзину, независимо от того, где было совершено действие: на странице категории, карточке товара или из самой корзины (например, из блока «Дополнительные товары и услуги»).

Добавление товара в корзину

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'add': {
     'products': [{
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1',
       'quantity': 3
      }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Adding a Product to a Shopping Cart',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. quantity (необязательная переменная, всегда — целое число) — количество товарных единиц, добавленных в корзину.
  2. Все остальные переменные те же, что и раньше.
  3. Отправляемое событие влияет на показатель отказов.

Результат

После отправки данных изменяется значение показателя «Количество добавлений товара в корзину» в отчете «Эффективность списка товаров»:

После отправки данных изменяется значение показателя «Количество добавлений товара в корзину» в отчете «Эффективность списка товаров»

Если кликнуть по названию списка, получим информацию, какой из товаров списка был добавлен в корзину:

Если кликнуть по названию списка, получим информацию, какой из товаров списка был добавлен в корзину

В отчете «Анализ покупок» — «Поведение покупателей» появится сеанс с добавлением товара в корзину:

В отчете «Анализ покупок» — «Поведение покупателей» появится сеанс с добавлением товара в корзину

5. Удаление товара из корзины

Отслеживание удалений товаров из корзины. В массиве products стоит перечислить все товары, которые пользователь удалил из корзины. Если корзина полностью очищается — следует указать все товары, находившиеся в ней.

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'remove': {
     'products': [{
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1',
       'quantity': 1
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Removing a Product from a Shopping Cart',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. quantity (целочисленная необязательная переменная) — количество товарных единиц, удаленных из корзины.
  2. Все остальные переменные те же, что и раньше.
  3. Отправляемое событие влияет на показатель отказов.

Результат

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

  1. Параметр.
  2. Продукт.
  3. Показатели.
  4. Просмотры товаров из списка.
  5. Клики по товарам из списка.
  6. Количество добавлений товара в корзину.
  7. Количество товара, добавленного в корзину.
  8. Количество удалений товара из корзины.
  9. Количество товара, удаленного из корзины.

Настройки отчета:

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

Итог:

Параметры «Количество товара, добавленного в корзину» и «Количество товара, удаленного из корзины» показывают числа, указанные в переменной quantity соответствующих событий

Параметры «Количество товара, добавленного в корзину» и «Количество товара, удаленного из корзины» показывают числа, указанные в переменной quantity соответствующих событий. А «Количество добавлений товара в корзину» и «Количество удалений товара из корзины» показывают количество соответствующих им событий.

6. Шаги оформления заказа

Речь об отслеживании движения пользователя по заранее заданным шагам оформления заказа.

Для примера настроим следующую воронку оформления заказа в Google Analytics (необязательно, чтобы каждый из шагов был реальной страницей):

Шаги оформления заказа

Шаг 1. Переход в корзину.

Шаг 2. Ввод контактных данных.

Шаг 3. Ввод способа доставки.

Шаг 4. Ввод способа оплаты.

Шаг 5. Подтверждение заказа.

Шаг 6. Thank You Page.

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

Действиями для данной воронки будут:

  1. Переход пользователя на страницу корзины.
  2. Успешная отправка заполненной формы с контактными данными.
  3. Успешная отправка данных о способе доставки.
  4. Успешная отправка данных о способе оплаты.
  5. Клик по кнопке «Заказ подтверждаю».
  6. Переход пользователя на Thank You Page.

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'checkout': {
     'actionField': {'step': 1},
     'products': [{
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1',
       'quantity': 2
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Checkout Step 1',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. step (целочисленная необязательная переменная) — номер шага в воронке. На каждом из шагов стоит присваивать этой переменной соответствующее значение, это же значение указывать и в переменной gtm-ee-event-action.
  2. Отправляемое событие влияет на показатель отказов.

Результат

При отправке события о начале оформления заказа (в данном примере — при попадании пользователя на страницу корзины, step 1):

1. В отчете «Анализ покупок» — «Поведение покупателей» появится сеанс с оформлением покупки:

В отчете «Анализ покупок» — «Поведение покупателей» появится сеанс с оформлением покупки

2. В отчете «Эффективность списка товаров» появятся данные о списке с товаром, с которого был начат процесс оформления заказа (показатель — число выполненных покупок товаров):

В отчете «Эффективность списка товаров» появятся данные о списке с товаром, с которого был начат процесс оформления заказа
Кликнув по названию, получим эти же данные, но в разрезе товаров из этого списка:

Кликнув по названию, получим эти же данные, но в разрезе товаров из этого списка

Если пользователь успешно прошел по всем указанным шагам воронки и оформил заказ, в отчете «Анализ покупок» — «Поведение при оформлении покупки» получим следующие данные:

Первый-пятый шаг

Первый-пятый шаг

Шестой шаг и данные по оформленным транзакциям

Шестой шаг и данные по оформленным транзакциям

Транзакции появятся после отправки данных о совершенных покупках.

Если на каком-то из этапов были разрывы, отчет «Анализ покупок» — «Поведение при оформлении покупки» будет таким (разрыв на этапе выбора способа доставки):

Если на каком-то из этапов были разрывы, отчет «Анализ покупок» — «Поведение при оформлении покупки» будет таким (разрыв на этапе выбора способа доставки)

Если оформление заказа началось со второго шага, в отчете не будет данных об этом оформлении:

Если оформление заказа началось со второго шага, в отчете не будет данных об этом оформлении

Значение параметра «Число выполненных покупок товара» равно нулю. При этом событие, отправленное на втором шаге, в отчетах есть:

Значение параметра «Число выполненных покупок товара» равно нулю

7. Варианты оформления заказа

Речь об отслеживании выбора одного из вариантов оформления заказа на каждом из шагов воронки.

К примеру, на сайте есть следующие способы доставки:

  1. Самовывоз.
  2. Доставка «Новой Почтой».
  3. Доставка службой InTme.

Пример кода для сценария доставки «Новой Почтой» на третьем шаге:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'checkout': {
     'actionField': {'step': 3, 'option': 'Новая почта'},
     'products': [{
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1',
       'quantity': 2
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Checkout Step 3',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

И способы оплаты:

  1. Банковской карточкой.
  2. Наличными.
  3. Наложенный платеж.

Пример кода для сценария оплаты банковской картой на четвертом шаге:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'checkout': {
     'actionField': {'step': 4, 'option': 'Банковская карта'},
     'products': [{
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1',
       'quantity': 2
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Checkout Step 4',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. option (строковая необязательная переменная) — выбранный пользователем вариант на том или ином шаге.
  2. Отправляемые события будут влиять на показатель отказов.

Результат

Данные по выбранным сценариям отображаются в отчете «Анализ покупок» — «Поведение при оформлении покупки»:

Данные по выбранным сценариям отображаются в отчете «Анализ покупок»

Данные по выбранным сценариям отображаются в отчете «Анализ покупок» — «Поведение при оформлении покупки»

Если вариант не был задан, отобразится пометка not set:

Если вариант не был задан, отобразится пометка not set

8. Совершенные покупки

Отслеживание совершенных через сайт транзакций. Данные отправляются при попадании пользователя на страницу «Спасибо за покупку».

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'purchase': {
     'actionField': {
       'id': 'TID1',
       'affiliation': 'Online Store',
       'revenue': '91.4',
       'tax': '9.4',
       'shipping': '35',
       'coupon': 'Coupon 1'
     },
     'products': [{  
       'name': 'Product 1',
       'id': 'ID1',
       'price': '23.5',
       'brand': 'Brand 1',
       'category': 'Category 1/Subcategory 11',
       'variant': 'Variant 1',
       'quantity': 2,
       'coupon': ''
      }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Purchase',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. id (строковая обязательная переменная) — уникальный идентификатор транзакции.
  2. affiliation (строковая необязательная переменная) — магазин или филиал, в котором была совершена транзакция.
  3. revenue (строковая необязательная переменная) — полная сумма транзакции, включая стоимость доставки и налог. Если значение не указано, сумма будет вычислена на основе стоимости и количества товаров в транзакции.
  4. tax (строковая необязательная переменная) — сумма всех налогов для этой транзакции.
  5. shipping (строковая необязательная переменная) — стоимость доставки заказа.
  6. coupon (строковая необязательная переменная) — купон или промокод, который был использован при оформлении заказа. Может быть указан как для всего заказа, так и для отдельных товаров.
  7. Отправляемые события будут влиять на показатель отказов.

Результат

В отчете «Эффективность товаров» появится информация по продажам в разрезе товаров:

В отчете «Эффективность товаров» появится информация по продажам в разрезе товаров

В отчете «Эффективность продаж» отображаются все отправленные данные в разрезе транзакций:

В отчете «Эффективность продаж» отображаются все отправленные данные в разрезе транзакций

При клике по идентификатору отображаются товары в этой транзакции:

При клике по идентификатору отображаются товары в этой транзакции

В отчете «Эффективность списка товаров» содержатся данные о том, товар из какого списка был куплен:

В отчете «Эффективность списка товаров» содержатся данные о том, товар из какого списка был куплен

При клике по названию получим эти же данные, но в разрезе товаров этого списка:

При клике по названию получим эти же данные, но в разрезе товаров этого списка

В отчете «Маркетинг» — «Купон заказа» появятся данные по использованию купонов/промокодов в рамках заказа:

В отчете «Маркетинг» — «Купон заказа» появятся данные по использованию купонов

Значение показателя «Доход» в этом случае равно полной сумме транзакции.

В отчете «Маркетинг» — «Купон товара» появятся данные по использованию купонов/промокодов в разрезе товаров:

В отчете «Маркетинг» — «Купон товара» появятся данные по использованию промокодов

Значение показателя «Доход от продукта» равно аналогичному показателю в отчете «Эффективность товаров».

В отчете «Маркетинг» — «Код партнера» показаны данные по филиалам магазинов, в которых были совершены транзакции (названия берутся из переменной affiliation):

В отчете «Маркетинг» — «Код партнера» показаны данные по филиалам магазинов, в которых были совершены транзакции (названия берутся из переменной affiliation)

В рамках одной сессии одна и та же транзакция второй раз не засчитывается:

В рамках одной сессии одна и та же транзакция второй раз не засчитывается

При этом соответствующих событий — два:

При этом соответствующих событий — два

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

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

соответствующие показатели будут суммироваться

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

9. Отмененные покупки

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

Если на сайте отсутствует функционал отмены транзакций, эти данные можно отправлять напрямую из внутренней системы с помощью Measurement Protocol (о нем я расскажу в одной из следующих постов в блоге).

Полная отмена транзакции

При полной отмене покупки достаточно указать идентификатор транзакции.

Пример кода для полной отмены транзакции из предыдущего события:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'refund': {
     'actionField': {'id': 'TID1'}
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Full Refund',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. id (строковая обязательная переменная) — идентификатор отмененной транзакции.
  2. Отправляемые события будут влиять на показатель отказов.

Результат

В отчете «Эффективность списка товаров» данные не меняются:

В отчете «Эффективность списка товаров» данные не меняются

В отчете «Эффективность товаров» изменилось значение показателя «Сумма возврата за товар»:

В отчете «Эффективность товаров» изменилось значение показателя «Сумма возврата за товар»

В отчете «Эффективность продаж» изменилось значение показателя «Сумма возврата»:

В отчете «Эффективность продаж» изменилось значение показателя «Сумма возврата»

При этом данное значение совпадает с показателем дохода для этой транзакции.

Возврат определенных товаров

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

Пример кода для транзакции с идентификатором TID2 и товаром с идентификатором ID2 (второй товар из события Product Impressions):

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'refund': {
     'actionField': {'id': 'TID2'},
     'products': [
           {'id': 'ID2', 'quantity': 1}
      ]
    }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Partial Refund',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. id в поле actionField (строковая обязательная переменная) — идентификатор транзакции, в которой возвращаются товары.
  2. id в массиве products (строковая обязательная переменная) — идентификатор возвращаемого товара.
  3. quantity (обязательная переменная, всегда целое число) — количество возвращаемых товарных единиц.
  4. Отправляемые события будут влиять на показатель отказов.

Результат

В отчете «Эффективность товаров» значение показателя «Сумма возврата за товар» стала равна цене одной товарной единицы, так как была возвращена только одна единица:

В отчете «Эффективность товаров» значение показателя «Сумма возврата за товар» стала равна цене одной товарной единицы

В отчете «Эффективность продаж» значение показателя «Сумма возврата» также равно цене за одну единицу товара:

В отчете «Эффективность продаж» значение показателя «Сумма возврата» также равно цене за одну единицу товара

При полном возврате оно равнялось полной стоимости транзакции.

10. Показы внутренней рекламы

Отслеживание показов внутренней рекламы позволяет получать данные о количестве показов баннеров внутренней рекламной кампании.

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

Действия со всплывающими окнами полностью аналогичны баннерам.

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'promoView': {
     'promotions': [
     {
       'id': 'PromoID1',
       'name': 'Promo 1',
       'creative': 'Banner 1',
       'position': 'slot1'
     },
     {
       'id': 'PromoID2',
       'name': 'Promo 2',
       'creative': 'Banner 1',
       'position': 'slot2'
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Promotion Impressions',
 'gtm-ee-event-non-interaction': 'True',
});
</script>

Расшифровка кода и переменных

  1. id (строковая обязательная переменная) — идентификатор показанной внутренней рекламной кампании.
  2. name (строковая обязательная переменная) — название показанной внутренней рекламной кампании.
  3. creative (строковая необязательная переменная) — название элемента показанной внутренней рекламной кампании.
  4. position (строковая необязательная переменная) — позиция элемента показанной внутренней рекламной кампании.
  5. Отправляемые события не будут влиять на показатель отказов.

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

Результат

При отправке данных в отчете «Маркетинг» — «Внутренняя кампания» получим данные по просмотрам баннеров в разрезе внутренних кампаний:

При отправке данных в отчете «Маркетинг» — «Внутренняя кампания» получим данные по просмотрам баннеров в разрезе внутренних кампаний

11. Клики по внутренней рекламе

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

Пример кода:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'promoClick': {
     'promotions': [{
       'id': 'PromoID1',
       'name': 'Promo 1',
       'creative': 'Banner 1',
       'position': 'slot1'
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Promotion Clicks',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

Расшифровка кода и переменных

  1. id (строковая обязательная переменная) — идентификатор кликнутой внутренней рекламной кампании.
  2. name (строковая обязательная переменная) — название кликнутой внутренней рекламной кампании.
  3. creative (строковая необязательная переменная) — название кликнутого элемента внутренней рекламной кампании.
  4. position (строковая необязательная переменная) — позиция кликнутого элемента внутренней рекламной кампании.
  5. Отправляемые события будут влиять на показатель отказов.

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

Результат

После отправки этих данных в отчете «Маркетинг» — «Внутренняя кампания» изменятся значения показателей «Клики (внутренняя кампания)» и «CTR (внутренняя кампания)»:

После отправки этих данных в отчете «Маркетинг» — «Внутренняя кампания» изменятся значения показателей «Клики (внутренняя кампания)» и «CTR (внутренняя кампания)»

Чтобы в этом отчете появились данные по продажам в разрезе внутренних рекламных кампаний, в событиях Product Impressions, Product Clicks и Product Details в переменной List нужно указать название соответствующей кампании. Код события Product Clicks будет выглядеть так:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
 'ecommerce': {
   'currencyCode': 'UAH',
   'click': {
     'actionField': {'list': 'Promo 1'},
     'products': [{
      'name': 'Product 1',
      'id': 'ID1',
      'price': '23.5',
      'brand': 'Brand 1',
      'category': 'Category 1/Subcategory 11',
      'variant': 'Variant 1',
      'position': 1
     }]
   }
 },
 'event': 'gtm-ee-event',
 'gtm-ee-event-category': 'Enhanced Ecommerce',
 'gtm-ee-event-action': 'Product Clicks',
 'gtm-ee-event-non-interaction': 'False',
});
</script>

При отправке данных об оформлении заказа (Purchases) в переменной promo не нужно указывать название рекламной кампании.

В отчете «Маркетинг» — «Внутренняя кампания» будут следующие данные:

В отчете «Маркетинг» — «Внутренняя кампания» будут следующие данные

Параметры оформленной транзакции:

Параметры оформленной транзакции

Заключение

Что можно узнать с помощью настройки всех событий расширенной электронной торговли?

  1. Как перемещаются пользователи по шагам настроенной воронки продаж.
  2. Как изменяется привлекательность товара для пользователей при показе его в разных списках или на разных позициях в одном и том же списке.
  3. Какие из баннеров наиболее эффективны в том или ином месте страницы.
  4. Какие связки выбранных пользователями опций при оформлении заказа наиболее популярны.
  5. Какой вариант товара чаще всего покупается или возвращается.
  6. Определение товаров, на карточки которых чаще всего переходят, но реже добавляют в корзину и/или покупают.

При этом все данные выводятся в отчетах, предназначенных специально для этого типа данных, а если стандартных отчетов не хватает — можно создать свой и сгруппировать в нем индивидуальный набор параметров и показателей, как в пункте «Удаление товара из корзины».

Комментарии (19)

  1. 1
    6 дней назад

    Александр, спасибо за статью. Изначально готовил ТЗ по документации гугла, но переделал по Вашему мануалу, т.к. этот вариант проще.

    возник вопрос по передаче данных при просмотре. Куда падают параметры currency, price, brand при просмотре каталога? http://www.awesomescreenshot.com/image/2061070/f0b5d4962e41e365a04e0d2eb1840c33

     У нас как и у Вас на скрине видна информация по названию каталога, продукта и просмотрам.

    http://www.awesomescreenshot.com/image/2061069/4867b0d06cb6474f0ebdab317687b24f

    В кастомные отчеты я тоже не смог их добавить.


    Спасибо.


    • 0
      Sergii Smirnov
      6 дней назад

      Добрый день!

      Параметры currency и brand можно включить дополнительными параметрами в отчете "Эффективность списков товаров":



      Метрика price, отправленная при просмотре товаров нигде не фигурирует в отчетах. Все значения связанные с ценой товара считаются на основе цены, указанной при совершении транзакции. Для примера отправил данные о всех действиях из статьи, но везде кроме оформления транзакции указал price = 0:

      1. "Эффективность товаров":


      2. "Эффективность продаж":




      3. "Эффективность списка товаров":



      • 0
        Александр Кухаренко
        6 дней назад

        Получается что price необязательно передавать? Название и Валюта у меня действительно подтягиваются в отчет. 

        А, что по поводу кастомных параметров? у меня есть страна товара (я её завел через кастомные параметры и передаем с сайта при просмотре и клике), но при выборе Доп параметров или кастомных отчетов показывает "Нет данных"

        Они также не не учитываются в отчетах и их необязательно передавать?
        • 0
          Sergii Smirnov
          4 дня назад

          Доброе утро.

          На данный момент да, price можно не передавать каждый раз, но в будущем что-то может поменяться :)

          Кастомные параметры в данном случае нужно создать на уровне товара:



          И передавать их внутри элементов массива products, пример для клика по товару (в моем случае кастомный параметр имеет индекс 1):



          И в аналитике в любом отчете по товарам дополнительным параметром включить кастомный:


  2. 0
    8 дней назад
    Александр, а каким параметром в первом случае вы передаете варианты? Ведь вариант (variant) в пространстве товара, и отправляя один id на все SKU, вы будете перезаписывать variant.
    • 0
      Timur
      6 дней назад

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



      Если в отчете "Эффективность продаж" выбрать нужный идентификатор транзакции и дополнительным параметром включить "Вариант товара", получим данные по одному и тому же товару, но по разным его вариантам:



      Либо в отчете "Эффективность товаров" основным параметром выбрать "Идентификатор товара", дополнительным "Вариант товара" получим аналогичные данные, но уже в разрезе идентификаторов (в аналитику отправил только данные по продаже, поэтому параметры "Коэффициент выбранных товаров" и "Коэффициент совершенных покупок" равны 0):


      • 0
        Александр Кухаренко
        6 дней назад

        Александр, спасибо за подробный ответ.

        Если посмотреть как реализовано демо предсталении гугл, то они отплавляют в транзакции — SKU товара, а ID товара в пользовательских параметрах

        https://docs.google.com/spreadsheets/d/1R4PZyy27eSJ_NTNHYT4zphZ3fwE8hnVqvfqAtQSC-PU/edit?usp=sharing

        Так же если смотреть на импорт товаров, то ключем является ID. Соотв. одному ID может соответствовать только 1 вариант товара.



        • 0
          Timur
          5 дней назад

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

          Аналогично с полем action у событий - там не обязательно должно быть что-то вроде click или submit. Вы настройку делаете под конкретный проект с учетом его особенностей. Делайте так, чтобы вам потом этими данными удобно было пользоваться при принятии решений.

    • 0
      Timur
      8 дней назад
      После авторизации сменилась ветка, перенесите, пожалуйста к первому обсуждению.
  3. 0
    10 дней назад

    Александр, спасибо за статью.


    Какие из перечисленных шагов необходимы, чтобы заработала электронная коммерция в метрике и аналитике?

    Не думаю, что нужно учесть все 11 шагов для нормальной работы. 

    • 0
      Dmitriy Dmitrienko
      9 дней назад

      Доброе утро!

      В любом случае нужно будет: включить отчеты расширенной электронной торговли в Google Analytics и Яндекс Метрике, а также настроить Google Tag Manager для передачи данных в Googla Analytics (данные в Яндекс Метрику будут передаваться автоматически). 

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

  4. 0
    10 дней назад

    В этом Google Tag Manager без бутылки сложно разобраться.

  5. 1
    11 дней назад

    Большое спасибо за статью!

    Скажите, пожалуйста, а на что влияет размещение строчки 'event': 'gtm-ee-event' перед строчкой 'ecommerce': {...}?

    • 1
      Dmitry Osiyuk
      11 дней назад

      Добрый вечер!

      В одном и том же dataLayer.push() порядок этих строк не важен.

      Если данные электронной торговли ('ecommerce': {...}) и информация о сработавшем на странице событии ('event': 'gtm-ee-event') записываются в Data Layer отдельно друг от друга, то данные e-commerce должны записываться раньше.

  6. 1
    11 дней назад

    Александр, спасибо, отличная статья.

    Что вы отправляете в качестве products.id в транзакции? SKU или ID товара?

    • 1
      Timur
      11 дней назад

      Добрый вечер!

      Если у товара есть несколько вариантов с одним и тем же идентификатором, но разными SKU - то везде в product.id указывается идентификатор. При такой настройке будут данные как по продажам этого товара в общем, так и по каждому из его вариантов.

      Если у товаров нет вариантов вообще или у разных вариантов одного и того же товара разные идентификаторы и SKU - то в prodict.id записывать то значение, с которым будет удобнее работать в Google Analytics.

Чтобы оставить комментарий, необходимо авторизироваться

Подписаться

на самую полезную рассылку по интернет-маркетингу

Самое

обсуждаемое популярное читаемое