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

SEO

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

545
0
24
118

Стандартная электронная торговля позволяет собирать данные только о совершенных транзакциях, в то время как расширенная (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. Определение товаров, на карточки которых чаще всего переходят, но реже добавляют в корзину и/или покупают.

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

Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.

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

  1. 0
    19 часов назад

    Спасибо за статью и особое спасибо за ответы.

    У меня вопрос. Может сможете подсказать - второй день воюю с настройкой 1-го пункта (просмотр товаров).   Пока скрипт поставил в футер, чтоб отработать его.   Если перенести только в каталог,  то все срабатывает так   же как в футере,   но  тогда не работает на других страницах, например поиск.  

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

    Странность в том что это  происходит только в некоторых категориях, например:

    https://vsesvit.shop/catalog/video-audiotekhnika/ekshn-kamery/   - 24 товара

    Стоит перейти на 2-ю страницу все нормально   https://vsesvit.shop/catalog/video-audiotekhnika/ekshn-kamery/ -   7 товаров

    Вот аналитика - там видно, что   инфо поступает только со 2-й



    Вот код скрипта,   который есть   на   странице:

    <!-- Google Tag Manager   script  -->

    <?

    global $APPLICATION;

    $page = $APPLICATION->GetCurPageParam(); 

    preg_match('/.*PAGEN_[0-9]+=([0-9]+).*/iu', $page, $matches);

    $is_ditaile = 'false';

    if( preg_match('#.*/tovar/.*#iu', $page) )

    $is_ditaile = 'true';

    $pageNumber = null;

    if( !empty($matches[1]) )

    $pageNumber = $matches[1];

    ?>

    <script type="text/javascript">

    window.dataLayer = window.dataLayer || [];

    var EeProcessor = new function (){

    this.productImpressions = function (products) {

       console.log({'productImpressions': products});  

       dataLayer.push({

       'ecommerce': {

       'currencyCode': 'UAH',

       'impressions': products

       },

    'event': 'gtm-ee-event',

    'gtm-ee-event-category': 'Enhanced Ecommerce',

    'gtm-ee-event-action': 'Product Impressions',

    'gtm-ee-event-non-interaction': 'True',


       });

    };

    };


    var products = [];


    // Производим заполнение массива товаров, отображаемых на странице

    $(function(){

    var $arProducts = $('.items.productList .item.product');

    var is_ditale = <?=$is_ditaile?>;

    if( $arProducts.length > 0 && is_ditale == false )

    {

    var page = '<?=$pageNumber?>';

    var category = $('#right>h1').text();

    $arProducts.each(function(index, value) { 

    var objProduct = {};

    objProduct.category = category; 

    objProduct.list = category;

    objProduct.id = $(this).attr('data-product-id');

    objProduct.name = $(this).find('.name .middle').text();

    objProduct.price = $(this).find('.price').text();

    objProduct.position = page;

    products.push(objProduct);

    });

    /* Отправка товаров через глобальный объект для работы с dataLayer */

    EeProcessor.productImpressions(products);

    }

    });

    </script>

    <!-- Google Tag Manager end-->


    Теги отрабатываются, информация передается:



    Но все равно не отображает информацию в аналитике всех категорий,   вернее 1-ю страницу некоторых категорий.

    Может  кто подскажет, что делать, где ковырять?

  2. 0
    день назад

    Добрый день! 

    Подскажите  пожалуйста, а как правильно настроить "поведение при оформлении", если все эти "шаги" на одной странице?

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

    Александр, добрый день. Создал тестовую страницу для проверки отправки согласно Ваших инструкций. И в режиме реального времени не получаю даже события. Можете посмотреть, в чем проблема? Спасибо.


    Настраивал тут - http://effekt.in.ua/anton/test1.php


    И сразу скрин настройки GTM - http://prntscr.com/hh68z9


    Up: почитав комментарии ниже, вижу что у меня не хватает события с категорией event, только pageview - http://prntscr.com/hh6dfp


    Возможно стоит поставить WP для теста? или єто влиять не должно?

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

    Добрый день, у меня в воронке 7 шагов 

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

    Шаг 2. Выбор региона

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

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

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

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

    Шаг 7. Thank You Page.


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


    1)Переход пользователя на страницу корзины.

    2)Успешная отправка заполненной формы с регионом

    3)Успешная отправка данных о способе доставки.

    4)Успешная отправка данных о способе оплаты.

    5)Успешная отправка заполненной формы с контактными данными.

    6)Клик по кнопке «Заказ подтверждаю».

    7)Переход пользователя на Thank You Page.


    -Как добавить сбор пользовательских данных на 5 этапе (ФИО,E-Mail,Телефон, Адрес доставки)

    -Правильно ли я раставил шаги в коде.


    https://yadi.sk/i/ImBjWPCm3PvnF4

    https://yadi.sk/i/_24YXulK3PvnJo

  5. 0
    18 дней назад

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

    Правильно ли я его создал, или нужно было в пункте Настройки Google Analytics выбрать Новая переменная и создать её.

    Но тогда там нельзя выбрать тип Переменной Константа


    https://yadi.sk/i/-4Cso13H3PvVCR

    • 0
      Иван Любаев
      19 дней назад

      Добрый день.

      Принцип указания идентификатора немного поменялся :)

      Можно поставить галочку "Включить переопределение настроек в этом теге" и выбрать константу с идентификатором:



      Либо создать переменную конфигурации Google Analytics и в ней указать идентификатор или константу с идентификатором:


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

        Спасибо, подставил константу с идентификатором (которую создал ранее), а поля Значения и Ярлык оставлять пустыми? В инструкции про Поля Ярлык и Значение о них не было написано.

  6. 0
    24 дня назад
    Добрый день, Александр! Очень познавательная статья. У меня появился вопрос... Как можно сделать отправку просмотренных товаров, находящихся в области видимости? Читал информацию по ссылке, но так и не вкурил как можно все это вместе подвязать. Допустим, сервер выдает все данные по всем товарам, находящимся на странице. Как их отфильтровать по области видимости и не передавать данные об уже просмотренных товарах? Буду очень признателен ответу
    • 0
      Егор Гречанюк
      23 дня назад

      Добрый день.

      В приведенном по ссылке примере функция проверки (checkPosition()) выполняется при прокрутке документа ($(document).scroll), загрузке ($(document).ready) или при изменении размера окна ($(window).resize).

      Полностью аналогичные проверки будут и для блоков товаров.

      Чтобы не передавать повторно данные - достаточно записывать в переменную идентификаторы уже переданных товаров, но при этом учесть, что один и тот же товар может быть показан в разных списках.

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

        Спасибо, разобрался. Только при использовании кода по ссылке отправлялись все товары, которые были на странице. Разбираться не хотелось, переписал под свои нужды. Если кому-то нужно вот пример:

        <script type="text/javascript">

            var viewed = [];

            function checkPosition(){

                var needclass = $('.gooecomerce'); //Ищем все элементы по классу

                needclass.each(function (index, element) {

                if ($(document).scrollTop() + $(window).height() > $(element).offset().top && $(document).scrollTop() - $(element).offset().top < $(element).height() && $.inArray($(element).attr('data-product-id'), viewed) == -1) { //Проверяем показывался ли элемент ранее и виден ли он сейчас

                    viewed.push($(element).attr('data-product-id')); //Добавляем элемент в массив, чтобы больше не отправлять по нему данные. Вставляем код отправки сюда

                }

                });

            }

         
         

            $(document).ready(function(){

                $(document).scroll(function(){

                    checkPosition();

                });

                 

                checkPosition();

               

                $(window).resize(function(){

                    checkPosition();

                });

            });

        </script>

  7. 0
    27 дней назад

    Дброго времени суток. Александыр, хотел еще раз спросить в вас по поводу просмотра  товарв в каталоге. А сама проблема состоит в том что даные о простмотрах товара записываються в (not set),  а не в товары. Как можно решить подобную проблему ?

  8. 0
    27 дней назад

    Добрый день, Александр. Статья реально классная. Спасибо.


    Возник вопрос реализации частичного просмотра листинга товаров. 

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

    В связи с этим вопрос: какой сценарий формарования кода <script></script> для этого случая?


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

    Буду признателен за помощь. Спасибо.

    • 0
      Anton Kolomiets
      26 дней назад

      Добрый день.

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

      • 0
        Александр Кухаренко
        25 дней назад
        Это понятно, а на каком этапе взаимодействия с сайтом нужно передавать эту информацию в tag manager? Перед последним действием пользователя на странице? Или как-то динамично менять код, чтобы в него добавить информацию о просмотренном листинге товаров?
  9. 0
    29 дней назад
    Добрый день! Спасибо огромное за статью! Подскажите ,пожалуйста, какой из скриптов подойдет для отслеживания "Поведения покупателей" И можно ли его использовать не лазя в код сайта ( настроить через гтм)? Спасибо.
    • 0
      Vlad Pilat
      26 дней назад

      Добрый день.

      Если имеется ввиду отчет "Поведение покупателей", то нужно настроить шаги начиная с просмотра карточек товаров и до совершенных покупок.

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

  10. 0
    месяц назад

    Еще вопрос, обязательно ли пушить переменную 'gtm-ee-event-category': 'Enhanced Ecommerce' ?

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

    • 0
      Sviataslav Twil
      26 дней назад

      Добрый день.

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

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

        Дополнительную в каком плане? Мы ведь используем один тэг для всех ecomm событий (т.е.  gtm-ee-event-category участвует только 1 раз) и вбивать каждый раз в категорию значение не нужно.


        • 0
          Sviataslav Twil
          23 дня назад

          Имел ввиду настройку отслеживания не только e-commerce, но и например отправки формы обратного звонка используя Data Layer. В этом случае переменная gtm-ee-event-category примет другое значение.

  11. 0
    месяц назад
    Всем привет, Александр, а как можно проверить в реальном времени что данные передаются в аналитикс корректно или какой-то дебаг тул, так как я не получаю данные в аналитикс, сделал все как на вашей статье. Сп
    • 0
      Abylaikhan Sultanbek
      месяц назад

      Добрый день.

      В аналитике в реальном времени можно отследить отправляемые события.

      В инструментах разработчика в Chrome на вкладке Network (или аналогичных в других браузерах) можно увидеть какие данные передались в аналитику (инструменты должны быть открыты на момент передачи):

      • для GET-запроса в разделе "Query String Parameters":


      • для POST-запроса скопировать содержимое раздела Request Payload:


        в "Hit Builder" для удобства восприятия:

      Также в отладчике GTM можно увидеть, какие значения были записаны в Data Layer на том или ином событии:


  12. 0
    месяц назад

    Александр, огромная благодарность за статью. Пожалуй лучшее, что встречалось по этой теме + интересный подход с использованием только 1 GTM тега с отправкой событий (удивительно если честно, каким образом обрабатываются просмотры товаров если тег настроен как событие). 


    Есть вопрос по работе переменной "list" . Данную переменную можно использовать только в:

    1. Product Impressions 

    2. Product Clicks 

    3. Views of Product Details

    В дальнейших действиях она не участвует, но статистику по добавлению в корзину/ продажам мы получаем. Вопрос, как это происходит? Оно наследует (т.е. запоминает) значение "list" из последнего взаимодействия, когда пользователь увидел/кликнул/просмотрел детали по товару? 


    • 0
      Sviataslav Twil
      месяц назад
      Да, значение запоминается из этих взаимодействий и используется в дальнейшем перемещении товара по воронке.
      • 0
        Александр Кухаренко
        20 дней назад
        И от меня тоже большое спасибо за статью. Но продолжая тему хотел бы уточнить по какой причине в 'эффективность списка' может не уходить информация по корзине и покупкам? Есть клики и просмотры, а вот корзина и покупки уходят в not set. Возможно у вас есть опыт решения этой проблемы? Заранее спасибо
  13. 0
    месяц назад
    Добрый день, извиняюсь за возможно глупый вопрос, может я не внимательно прочитал сей гайд, но куда именно надо вставлять данные примеры скриптов. Непосредственно в header или в body страницы где он должен приминяться ??
  14. 0
    месяц назад

    Здравствуйте. Настроил электронную коммерцию согласно вашей инструкции. Прошло более 3-х часов, но данные не отправляются в Google Analytics. Единственное, что отображается, это "лучшие события" с категорией "undefined". Так же у меня вопросы: 

    1) Как Javascript согласно инструкции связан с тегом и триггером 

    2) В режиме предварительного просмотра, триггер GTM EE Event с типом "пользовательские события" и активацией "все события", не срабатывает на любые мое действия.  

    3) Во время вставки Javascript, Tag manager не пропускает код c примера, делая замечание: "В этом поле должна быть определена функция JavaScript, которая возвращает значение с помощью оператора return. Пример:

      function() {

        var now = new Date();

        return now.getTime();


      }

    Сделали согласно правилам Tag manager и вставили Return

    function testScript () {

      try{

    var 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',

    });

    return dataLayer();

    }catch(e){

      console.log("Error return");

      return "n/a";

    }

    }


    ссилка на скрины :https://drive.google.com/open?id=0B8Sc1EfbIRS3TDdQbzhiUHJVTGc

    • 0
      Дмитро Гудима
      месяц назад

      Добрый день.

      JS-код из инструкции вставляется не в GTM, а в код сайта и выполняется при совершении пользователем определенных действий на сайте.

      Если в GTM все настроено верно, то тег будет срабатывать после записи параметров электронной торговли в Data Layer и отправлять данные в Google Analytics.
  15. 0
    месяц назад

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



    Дебаг тоже рапортует, что видит массив DataLayer






    Сама страничка https://tionakids.ru/katalog/dlya_malyshey/bele/bodi/bodi_2_sht_rozovye.html

    • 0
      Алексей Сучков
      месяц назад

      Добрый день.

      Чтобы в аналитику отправлялись данные нужно добавить в код указание параметров события. Для просмотра товара (параметры частично отличаются для каждого события):

       'event': 'gtm-ee-event',
       'gtm-ee-event-category': 'Enhanced Ecommerce',
       'gtm-ee-event-action': 'Product Details',
       'gtm-ee-event-non-interaction': 'True',

      И настроить соответствующие переменные, триггер и тег в GTM (раздел "Настройка Google Analytics и Google Tag Manager" в статье).

  16. 1
    месяц назад

    Александр, отличная подача. Сколько я перечитал, только на вашем понял и вник. 

    Вопрос: "Если пользователь добавил товар, но потом изменяет количество товаров до оформления (или удаления из корзины), как это учитывать? Ведь этот параметр динамический"

    • 0
      Николай Кирилович
      месяц назад

      Добрый день.

      Учитывать в зависимости от реализации добавления в корзину.

      Если изменения количества товаров в корзине происходит во всплывающем окне - то при его закрытии отправлять количество добавленного или удаленного товара (не финальное число).

      Если добавление/удаление товара происходит непосредственно на странице кнопками "+" и "-" - то отправлять данные при их нажатии.

  17. 0
    2 месяца назад

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

    Все настроил по инструкции. Все работает. Кроме - Положить товар в корзину. 

    Навешиваю отправку данных через клик на кнопку. Через Gtm при клике на кпопку купить, событие вижу. http://c2n.me/3O682IB


    Но в аналитике в отчете событие не фиксируется.

    http://c2n.me/3O68beH


    Не могу понять в чем проблема. 


    Буду очень признателен за подсказку. 

    Так выглядит код.

    <script>

    $('.bsk_gtm').click(function(){

    dataLayer.push({

     'ecommerce': {

       'currencyCode': 'UAH',

       'add': {

         'products': [{

           'name': '{OriginalCode}',

           'id': '{OriginalCode}',

           'price': '{MinPrice}',

           'brand': '{Manufacturer}',

           'category': 'parts_from_goods',

           'variant': 'Variant 1',

           'quantity': 1

          }]

       }

     },

     '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>

    • 0
      Сергей Кабанцов
      2 месяца назад

      Добрый день, сколько времени прошло с момента настройки до момента на скрине?

      • 0
        Александр Кухаренко
        2 месяца назад
        Двое суток. Как установлен код. На скрине статистика за 27 число
        • 0
          Сергей Кабанцов
          2 месяца назад

          В отчете "Лучшие события" есть события с категорией "Enhanced Ecommerce" и действием "Adding a Product to a Shopping Cart"?

          • 0
            Александр Кухаренко
            2 месяца назад

            Возможно это информация поможет


                      Добрый день, нужна помощь. 

            Настроена расширенная электронная торговля через GTM.

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


            Ссылка на GTM отладчик

            https://www.googletagmanager.com/start_preview/gtm?uiv2&id=GTM-T3WPGV&gtm_auth=wgpGuP9oSHW-dynhHNughw&gtm_preview=env-5&gtm_debug=x&url=http://massive.ua/parts-333316-kayaba/


            Но как только хочу повесить добавлению товара в корзину через клик. В GTM Данные datalayer фиксируются  http://c2n.me/3OcUT8U .


            но в analitycs не передаются, в collect не фиксируется данные после click/

            Код 


            <button class="btn_blue-submit btn_basket_send bsk_gtm" 
            onclick="window.dataLayer = window.dataLayer || [];
            dataLayer.push({
            'ecommerce': {
            'currencyCode': 'UAH',
            'add': { // 'add' actionFieldObject measures.
            'products': [{ // adding a product to a shopping cart.
            'name': '{Manufacturer} {OriginalCode}',
            'id': '{OriginalCode}',
            'price': '{MinPrice}',
            'brand': '{Manufacturer}',
            'category': 'parts_goods/goods',
            'variant': 'Variant 1',
            'quantity': 1
            }]
            },
            },
            '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',
            });"

            • 0
              Сергей Кабанцов
              2 месяца назад

              Добрый день.

              Такой вариант скрипта будет срабатывать при клике на кнопку:

              <script>

                $(document).ready(function(){

                  $('.bsk_gtm').click(function(){

                    window.dataLayer = window.dataLayer || [];

                    dataLayer.push({

                      'ecommerce': {

                        'currencyCode': 'UAH',

                        'add': {

                          'products': [{

                            'name': '{OriginalCode}',

                            'id': '{OriginalCode}',

                            'price': '{MinPrice}',

                            'brand': '{Manufacturer}',

                            'category': 'parts_goods/goods',

                            'variant': 'Variant 1',

                            'quantity': 1

                          }]

                        },

                      },

                      '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>

              • 0
                Александр Кухаренко
                2 месяца назад

                Сделал выше описанный код.

                 GTM Отладчик 

                1.) Фиксирует просмотр карточки товара при загрузке страницы = и передает в datalayer в Analitycs 

                http://c2n.me/3Ogxule

                2.) При клике на кнопку добавить в корзину 

                GTM Отладчик

                1.) Фиксирует добавление в корзину формирует массив из данных о просмотре товара и данных и добавлении корзины 

                Фиксация GTM http://c2n.me/3OgxMeG

                Формирования Current values of the Data Layer: http://c2n.me/3OgxULb

                2.) Но в Analitycs отправляет только фиксацию просмотра карточки товара

                collect http://c2n.me/3Ogyc0V  

                При клике на кнопку collect не фиксируется добавления товара в корзину.


                Если убрать JS $(document).ready(function(){

                    $('.bsk_gtm').click(function(){

                и передавать данные при загрузке странице, данные в analitycs улетают.


                Ccылка на GTM отладчик 

                https://www.googletagmanager.com/start_preview/gtm?uiv2&id=GTM-T3WPGV&gtm_auth=wgpGuP9oSHW-dynhHNughw&gtm_preview=env-5&gtm_debug=x&url=http://massive.ua/parts-333310-kayaba/




                • 0
                  Сергей Кабанцов
                  2 месяца назад

                  Расшарьте пожалуйста доступ к GTM на [email protected] Скорее всего что-то неправильно настроено в самом GTM, поэтому события не отправляются.

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



                  Hit Builder

                  • 0
                    Александр Кухаренко
                    2 месяца назад
                    Расшарил готово.
                    • 0
                      Сергей Кабанцов
                      2 месяца назад

                      1. Была ошибка в настройке тега "Enhanced Ecommerce". Для указания идентификатора отслеживания в теге нельзя использовать переменную типа "Настройки Google Analytics". Я создал константу и указал в ней нужный идентификатор:



                      2. Также убрал отправку данных электронной торговли вместе с тегом просмотра страницы, чтобы не дублировать.


                      3. Сейчас при клике на "Купить" 2 раза отправляются данные:



                      4. На странице оформления заказа находится лишний код совершения заказа:


          • 0
            Александр Кухаренко
            2 месяца назад

            в лучших событиях вообще не фиксируется что либо с категорией Enhanced Ecommerce.


            Хотя в отчетах електроная торговля фиксируется все событий электронной торговли , кроме клика на кнопку купить.


  18. 0
    2 месяца назад

    Добрый вечер. Спасибо за статью)) очень полезная. Вот мне надо узнать результат о совершении покупки. Я разместила код на странице "Спасибо за покупку". У меня вопрос на счет кода. Значения переменных оставлять пустыми, вот как в примере? Или туда надо вставлять переменные. То есть  'id':' ' или 'id':'.$id.'?   <script>

    window.dataLayer = window.dataLayer || [];
    dataLayer.push({
     'ecommerce': {
       'currencyCode': '',
       'purchase': {
         'actionField': {
           'id': '',
           'affiliation': '',
           'revenue': '',
           'tax': '',
           'shipping': '',
           'coupon': ''
         },
         'products': [{  
           'name': '',
           'id': '',
           'price': '',
           'brand': '',
           'category': '',
           'variant': '',
           'quantity': ,
           'coupon': ''
          }]
       }
     },
     'event': 'gtm-ee-event',
     'gtm-ee-event-category': 'Enhanced Ecommerce',
     'gtm-ee-event-action': 'Purchase',
     'gtm-ee-event-non-interaction': 'False',
    });
    </script>
  19. 0
    3 месяца назад

    Александр, добрый день.

    Все настроил по вашей справке.

    Работает абсолютно все, кроме передачи product_id на всех страницах и информации о заказе из поля ActionField. Сайт на битриксе.

    В консоли все вижу, в collect не вижу.

    window.dataLayer = window.dataLayer || [];

    dataLayer.push({

     'ecommerce': {

      'currencyCode': 'RUB',

      'purchase': {

       'actionField': {

        'order_id': '',

        'order_total': '',

        'coupon': '',

        'shipping': '',

        'user_id': '',

       },

       'products':[{ 

        'name': '',

        'price': '',

        'product_id': '',

        'product_qtys': '',

        'category': '',

        'coupon': '',        

       }]

      }

     },

     'event': 'gtm-ee-event',

     'gtm-ee-event-category': 'Enhanced Ecommerce',

     'gtm-ee-event-action': 'Purchase',

     'gtm-ee-event-non-interaction': 'False',

    });



  20. 0
    4 месяца назад

    Настройка тега

    Настройка тега

    Настройка переменной

    Настройка переменной

    Подскажите, в настройках переменной сразу использовал не константу, а как видно по скриншоту "Тип Переменной" "Настройка Google Analytics". На эту переменную подключил и наш тег и теги с целями для Google Analytics (это не от сюда, а свое). В режиме реального времени в Google Analytics отображаются срабатывания целей, а также электронная коммерция: "просмотр товаров", "добавление в корзину", "удаление из корзины", а также отображается в режиме отладки Google Tag Manager. Но в отчетах Google Analytics по электронной коммерции, абсолютно ничего нет. Сутки прошли с момента установки и тестирования, а отчеты по коммерции пустые. Начал копать настройки тега, и увидел, что Вы писали про переменную типа "Константа". Не понимаю, что такое константа. Может ли из-за неверного указания типа переменной не отправляться данные в отчеты электронной коммерции?

    • 0
      Медицинская одежда
      4 месяца назад

      Добрый день.

      1. Включена ли расширенная электронная торговля в Google Analytics (пункт "Настройка Google Analytics и Google Tag Manager")?
      2. Отображаются ли события расширенной электронной торговли в отчетах (Поведение → События → Лучшие события)?
      • 1
        Александр Кухаренко
        3 месяца назад
        Нашел ошибку. Как видно на скриншоте у меня стоит галочка у переменной "Включить электронную торговлю", сделал я это чуть ранее того, чем написал сюда. Включил эту функцию в переменной и теперь вроде, как все работает, в отчетах начала собираться статистика. Спасибо за столь полную информацию по текущей теме!
  21. 0
    5 месяцев назад

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

    https://prnt.sc/fqzkfr  скрин

    сайт - shket.ua

  22. 0
    5 месяцев назад

    Подскажите пожалуйста как правильно сделать код для получение информации о купонах которые вводили для получение скидки? У вас в инструкции нет(((

  23. 0
    5 месяцев назад

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

    Хотел спросить вашего мнения касательно настройки расширенной торговли для ниши авиабилетов, сейчас в тестовом режиме хотим настроить передачу данных по просмотренным карточкам рейсов (соответствует первому пункту) пример карточек рейсов

    Код будет примерно таким: 

    <script>

    window.dataLayer = window.dataLayer || [];

    dataLayer.push({

     'ecommerce': {

       'currencyCode': 'USD',

       'impressions': [

        {

          'name': 'Card 1',

          'id': 'ID1',

          'flight_destid': 'ALA' - Откуда

          'flight_originid': 'SCO' - Куда

          'flight_start_date': '2017-07-03" - Дата туда

          'flight_enddate': '2017-07-11" - Дата обратно

          'price': '69785',

          'brand': 'Air Astana',

          'category': 'Air tickets',

          'position': 1

        },

        {

          'name': 'Card 2',

          'id': 'ID2',

          'flight_destid': 'ALA' - Откуда

          'flight_originid': 'SCO' - Куда

          'flight_start_date': '2017-07-03" - Дата туда

          'flight_enddate': '2017-07-11" - Дата обратно

          'price': '69785',

          'brand': 'Air Astana',

          'category': 'Air tickets',

          '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>


    id (строковая обязательная переменная) — идентификатор (SKU) товара. - на данный момент, аналитика сама присваивает идентификаторы купленным билетам, выглядят они примерно так: 465-5602281933, 566-5602281986 -  как в таком случае нам прописать id в коде?

    Валюту ставим USD, т.к. Аналитика не поддерживает тенге. 


    Спасибо
    • 0
      Ярослав
      5 месяцев назад

      Добрый день.

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

      'flight_destid', 'flight_originid', 'flight_start_date', 'flight_enddate' это пользовательские параметры для билетов в Google Analytics?

  24. 0
    5 месяцев назад

    Здравствуйте, сделал настройку по вашей инструкции В битрикс 1-с: - Скрин

    Делаю настройку по 1 пункту, поставил код в каталог с товарами: Скрин 

    В GTM отображается во так: Скрин

    На сайте отображается во так: Скрин

    Данные в течении пару часов не передались(( - Скрин

     Может я не правильно написал код для передачи данных о просмотре товара? Или данные поступят но нужно 48 часов??

    • 0
      Женя Кравчук
      5 месяцев назад

      Добрый день, у Вас в массив Impressions не передаются данные о просмотренных товарах:


      • 0
        Александр Кухаренко
        5 месяцев назад
        Подскажите пожалуйста как правильно сделать код для получение информации о купонах которые вводили для получение скидки? У вас в инструкции нет(((
        • 0
          Женя Кравчук
          5 месяцев назад

          Информация о купонах передается в событии оформления заказа (purchase). Это может быть как купон на весь заказ (переменная coupon в массиве actionField), так и только для определенного товара (переменная coupon в массиве products):


      • 0
        Александр Кухаренко
        5 месяцев назад

        Спасибо помогли! Но теперь данные передаются но на оборот там где клики передаются просмотры((( http://prntscr.com/fmqfvg

        Вот как данные передаются в GTM http://prntscr.com/fmqhkc 

        • 0
          Женя Кравчук
          5 месяцев назад
          Что не так сделал?
          • 0
            Женя Кравчук
            5 месяцев назад

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

            Сейчас на сайте при загрузке страницы категории отправляются только события с просмотрами товаров.

            Вопрос о несовпадении количества просмотров и кликов по товарам еще актуален?


            2. Т. к. на страницах категорий фиксированное количество товаров - 16, то impressions-события можно объединить в одно для сокращения количества отправляемых хитов в Google Analytics.


            3. В переменную "list" на карточке товара следует передавать то же значение, что и при просмотре этого товара в категории, т. е. в данном случае - "Впитывающие трусики".


            4. Также на карточке товара в массив impressions записываются данные о просмотре этого же товара, а должна записываться информация о товарах из блока "Похожие товары":


            • 0
              Александр Кухаренко
              5 месяцев назад

              Да о клике по товару вопрос актуален. Я просто убрал код для клика по товаре в каталоге,  данные не передавались правильно. Вместо клика передавались просмотры. Куда удобние установить код для клика у меня на сайте есть каталог и карточка товара. Так у вас в инструкции написано я так не могу поставить, если ставить просмотры товара, ту даже нужно и ставить клик по товару, инакше данные не считываются, нет переменных для считывание данных, делал  были пустые данные.

              Возможно подскажите куда установить что работало вот сайт:https://homecare-shop.ru

              • 0
                Женя Кравчук
                5 месяцев назад

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

                При заходе на карточку товара не срабатывает событие просмотра карточки (detail).

  25. 0
    8 месяцев назад

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

    понимаю куда ставить коды.

    Через gtm собственный код JS или разрабами в код?

    Если разрабами то как он включаться будет? Например добавление в корзину. Он же на всех страницах и как он поймет что это добавление в корзину?

    А если через gtm то получается тригерами? тогда разрабам нужно просто создать переменные в datalayer и оттуда подставлять в gtm?

    Буду благодарен за ответ.


    • 0
      Shyma
      8 месяцев назад

      Добрый день.

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

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

  26. 0
    8 месяцев назад
    Правильно ли я все сделал в GTM? фото
  27. 0
    8 месяцев назад

    Александр, здравствуйте!

    спасибо за статью и полезный материал. 

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

    Детали на скрине: 

    https://yadi.sk/i/sCtMa5l_3G6ogJ

    • 0
      Sergey Shymkovych
      8 месяцев назад

      Добрый день.

      1. По просмотрам товаров из списка (первый обведенный желтым столбец): данные о просмотре товаров (первый код, переменная 'list') из обведенных желтым списков товаров не отправляются в аналитику - либо не отрабатывает код вообще, либо в нем не указана переменная 'list'.
      2. По списку (not set): если пользователь сразу заходит на карточку товара, то для этих товаров список не будет задан.
      3. По количеству оформлений заказа большему чем количество добавлений товара в корзину: может быть очень много вариантов в зависимости от реализации, например не учитываются все способы добавления товара в корзину.
  28. 0
    10 месяцев назад

    Александр, спасибо за статью! У меня почему то в Аналитиксе не отображаются клики по товарам, только показы. Наверное, я не правильно настроил отслеживание клика. Как настроить срабатывание по клику? Нужно что то подставить в переменную gtm-ee-event-action' вместо 'Product Clicks' ?

    • 0
      Павел Филимонов
      10 месяцев назад

      Добрый день.

      То, что указано в переменной 'gtm-ee-event-action' указывается в качестве действия события, которое будет отправлено в Google Analytics.

      Тип действия пользователя указывается в шестой строке кода:


      Проверить передаются ли в dataLayer данные о кликах можно в режиме предварительного просмотра и отладки в Google Tag Manager:


      • 0
        Александр Кухаренко
        10 месяцев назад

        Александр, то есть никаких триггеров больше не нужно? Я просто не до конца понимаю, как тег отслеживает, что по товару кликнули или что товар добавлен в корзину. 

        Я поставил тег отслеживания того, что товар положили в корзину, и в аналитиксе теперь 0 кликов по товару и 122 добавления в корзину. 

        • 0
          Павел Филимонов
          10 месяцев назад

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

          Если в аналитике нет данных о кликах по товарам, то либо код не срабатывает при клике на товар, либо в коде ошибка.

  29. 0
    10 месяцев назад

    Проделал этапы работ по созданию тегов, событий и т.д. Меня интересует только 8-ой пункт "Совершенные покупки", возможно глупый вопрос, но все же)

    Куда размещать данный скрипт: 

    1) на страницу "Спасибо за покупку" и подтягивать туда данные по названию, кол-ву товара и цене.

    2) добавлять каким-то образом через Таг менеджер? Возможно через пользовательский HTML.


    • 0
      Maxim
      10 месяцев назад

      Доброе утро!

      Первый вариант правильный.

      • 0
        Александр Кухаренко
        10 месяцев назад

        На сайте имеются открытки, которые можно заказать комплектами: 10, 25, 50, 100 штук. Каждый из вариантов программист прописал в скрипте, каждому варианту соответствует собственная цена: 490, 890, 1690 и 2690 рублей. Скрипт помещен на страницу результата платежа. 

        Но в аналитике указание: http://prntscr.com/e603z4, я отправил на перепроверку, но пока подтверждения нет, о том что скрипт корректно работает.

        <script type="text/javascript">

              window.dataCommerce = window.dataCommerce || [];


              dataCommerce.push({

                "ecommerce": {

                            "currencyCode": "RUB",

                  "purchase": {

                    "actionField": {

                      "id" : "2318",

                      "goal_id" : "26403824"

                    },

                    "products": [

                      {

                        "id": "10777",

                        "name": "Открытки",

                        "price": 890,

                        "brand": "Cards",

                        "category": "",

                        "quantity": 25                

                      },

                      {

                        "id": "10788",

                        "name": "Открытки",

                        "price": 490,

                        "brand": "Cards",

                        "category": "",

                        "quantity": 10                

                      },

                      {

                        "id": "10822",

                        "name": "Открытки",

                        "price": 1690,

                        "brand": "Cards",

                        "category": "День влюбленных",

                        "quantity": 50                

                      },

                      {

                        "id": "10823",

                        "name": "Открытки",

                        "price": 2690,

                        "brand": "Cards",

                        "category": "Пригласительные",

                        "quantity": 100                

                      }

                    ]

                  }

                },

                        "event": "gtm-ee-event",

                        "gtm-ee-event-category": "Enhanced Ecommerce",

                        "gtm-ee-event-action": "Purchase",

                        "gtm-ee-event-non-interaction": "False",

              });

            </script>

        • 0
          Maxim
          10 месяцев назад

          Добрый день.

          У Вас в коде используется нестандартное название Data Layer: dataCommerce.

          В коде Google Tag Manager также нужно заменить dataLayer на dataCommerce:


          После переименования Data Layer нужно будет везде использовать dataCommerce вместо dataLayer.

  30. 1
    10 месяцев назад

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

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

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

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

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


    Спасибо.


    • 0
      Sergii Smirnov
      10 месяцев назад

      Добрый день!

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



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

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


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




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



      • 0
        Александр Кухаренко
        10 месяцев назад

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

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

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

          Доброе утро.

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

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



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



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


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

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



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



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


      • 0
        Александр Кухаренко
        10 месяцев назад

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

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

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

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



        • 0
          Timur
          3 месяца назад

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

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

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

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


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

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

    • 0
      Dmitriy Dmitrienko
      10 месяцев назад

      Доброе утро!

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

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

  33. 0
    10 месяцев назад

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

  34. 1
    10 месяцев назад

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

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

    • 1
      Dmitry Osiyuk
      10 месяцев назад

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

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

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

  35. 1
    10 месяцев назад

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

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

    • 1
      Timur
      10 месяцев назад

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

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

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

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

Подписаться

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

Самое

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