Расчет стоимости корзины в Google Analytics
Простое решение, которое позволяет рассчитать стоимость товаров в расширенной электронной торговле (Enhanced Ecommerce), добавленных в корзину, с отправкой в Google Analytics.
Решение о покупке того или иного товара люди принимают по-разному. Иногда человек может искать, присматриваться в течение долгого периода времени (дней, недель, месяцев). А бывает, что пользователь заходит на сайт и делает покупку в течение нескольких минут. Есть те, кто приходит на сайт за конкретным товаром, а есть категория посетителей, которая долго путешествует по страницам в течение одной пользовательской сессии в поисках товаров разных категорий, попутно то добавляя, то удаляя товары из своей корзины. Причем действия, связанные с ценностью корзины, могут быть непредсказуемыми.
Например, человек положил товар в корзину, затем передумал и удалил его. Потом снова вернул, добавил еще 2-3 новых товара. На шаге оформления заказа он вдруг вспомнил, что один из них ему не нужен, и снова удалил, а после завершил покупку. Или на сайте проходит акция - бесплатная доставка от 5000 руб. И посетитель начал добавлять товары в свою корзину. Но превысив нижний порог на 600 руб., решил изменить корзину таким образом, чтобы получилось 5001 руб., а не 5600 руб. Вариантов много.
А что, если мы хотим узнать, какие товары пользователи добавляли в корзину и удаляли из нее, и тем самым подсчитать итоговую ценность корзины? Это можно сделать, получив в отчете Google Analytics такую статистику:
По умолчанию в Google Analytics заложено очень много метрик для расширенной электронной торговли. Например:
- количество добавлений товара в корзину / Product Adds To Cart (показывает, сколько раз товар добавлялся в корзину покупок);
- количество товара, добавленного в корзину / Quantity Added To Cart (отображает количество единиц товара, добавленных в корзину);
- количество товара, удаленного из корзины / Quantity Removed From Cart (определяет количество единиц товара, удаленных из корзины);
- количество удалений товара из корзины / Product Removes From Cart (подсчитывает, cколько раз товар был удален из корзины покупок);
- коэффициент выбранных товаров / Cart-to-Detail Rate (количество добавлений товара в корзину, разделенное на число просмотров информации о товаре);
- и другие.
Часть этих метрик доступна в отчетах Конверсии – Электронная торговля – Эффективность списка товаров, а часть только через создание специального отчета. Но ни одна из них не рассчитывает итоговую стоимость корзины, хотя является одним из важных показателей, поскольку позволяет определить наибольшую разницу между стоимостью корзины и полученным доходом от конкретного продукта. И тогда в зависимости от максимального расхождения работать с каждым товаром или группой товаров в отдельности.
На примере выше видно, что у 4 товаров стоимость корзины выше, чем доход от продукта, который положили в корзину. Можно сделать вывод о том, что часть пользователей покидает сайт, так и не оформив покупку. Единственный товар, по которому стоимость корзины равна доходу от продукта (и положили в корзину, и купили) - это Apple iPhone 11 Pro Max 512 ГБ серый космос. При бОльших данных расхождения в отчете будут заметнее. Тогда мы сможем найти товары определенной "группы риска".
Реализация в Google Analytics достаточно простая. И в этом нам помогут специальные показатели. Предполагается, что на момент прочтения этого материала у вас настроена расширенная электронная торговля (Enhanced Ecommerce) с помощью уровня данных (dataLayer) согласно официальной документации Google.
Последовательность действий:
- создать специальный показатель в Google Analytics;
- добавить строчку кода в сформированный dataLayer для отслеживания действий добавления товара в корзину и удаления товара из корзины во всех местах на сайте, где это необходимо.
Создание специального показателя
Для этого в Google Analytics необходимо перейти на уровень ресурса в раздел Пользовательские определения - Специальные показатели - +СПЕЦИАЛЬНЫЙ ПОКАЗАТЕЛЬ.
Указываем:
- имя для специального показателя (в моем примере Стоимость корзины)
- область действия - Товар;
- тип форматирования - Валюта (десятичный формат);
- активная - галочка.
Сохраняем изменения и запоминаем индекс нашей пользовательской метрики:
Добавление строчек кода в сформированный dataLayer
На этом шаге нам необходимо модифицировать код уровня данных для событий addToCart и removeFromCart. Если до момента этой настройки на сайте у вас был код такого вида для addToCart:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
dataLayer.push({ 'event': 'addToCart', 'ecommerce': { 'currencyCode': 'EUR', 'add': { 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } } }); |
то теперь он будет выглядеть вот так (с 'metric1' : '15.25'):
1 2 3 4 5 6 7 8 9 10 11 12 |
... 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1, 'metric1' : '15.25' }] ... |
, где metric1 - наш специальный показатель с индексом из Google Analytics. В моем примере - это 1.
Это строчка добавляется в массив products (продуктов). То есть при каждом добавлении товара в корзину у нас в metric1 будет добавляться значение цены данного товара.
Тоже самое нужно добавить для события removeFromCart, только с отрицательным значением (с 'metric1' : -'15.25'):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
dataLayer.push({ 'event': 'removeFromCart', 'ecommerce': { 'remove': { 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1, 'metric1' : -'15.25' }] } } }); |
Это строчка также добавляется в массив products (продуктов). При каждом удалении товара из корзины у нас из metric1 будет отниматься значение цены данного товара.
Вот и все! Для реализации нам потребовалось создать 1 специальный показатель в Google Analytics и добавить 1 строчку кода в уровне данных для каждого из двух событий (add и remove). Основная сложность заключается в том, чтобы добавить коды с уровнем данных на все элементы на сайте. Например, в моем тестовом интернет-магазине есть кнопки добавления товара в корзину:
- на главной странице;
- на странице товара;
- в категории товаров;
- на странице корзины;
- на странице оформления заказа.
Аналогично с удалением товаров из корзины:
- на странице корзины;
- на странице оформления заказа;
- в раскрывающемся меню при клике на кнопку корзины.
Чтобы цифры считались корректно и данные в Google Analytics отправлялись более-менее достоверные, нужно позаботиться о том, чтобы уровень данных со специальным показателем был добавлен на все отслеживаемые элементы, которые причастны к добавлению/удалению товаров из корзины.
В качестве примера прикладываю скриншот того, как сформирован dataLayer у меня на одной из кнопок Купить:
Последней строчкой, как и было написано ранее, идет metricX с индексом 1 и значением:
1 |
'metric1': parseInt($('#input-quantity').val())*parseInt($('.full-price h2').text().replace('р.', '')) |
Здесь с помощью функции parseInt (переводит из строки в число) и арифметической операции перемножаются quantity (количество) и price (цена товара), поскольку пользователь мог добавить в корзину сразу несколько товаров.
Уровень данных для удаления товаров из корзины в моем проекте выглядит так:
Последней строчкой идет metricX с индексом 1 и отрицательным значением (со знаком минус '-'):
1 |
'metric1' : -({{ product.quantity }}*{{ product.pr }}) |
Арифметическая операция та же самая. Если пользователь удалил 5 товаров, то итоговым значением будет произведение количества удаляемых товаров (5) на цену одного товара с отрицательным значением.
При использовании отрицательного значения в событии remove при окончательной покупке товара стоимость корзины будет равна доходу от этого продукта. Например:
- мы добавили в корзину один уникальный товар в количестве 5 штук на 100 000 руб. (20 000 руб. - 1 шт.). В этом случае сработало событие addToCart, и данные отправились в Google Analytics со стоимостью корзины +100 000 руб.
- затем пользователь решил купить не 5 штук товара, а 3. Он удалил два товара на сумму 40 000 руб. В этом случае сработало событие removeFromCart, и данные отправились в Google Analytics с отрицательным значением со стоимостью корзины -40 000 руб. Итого наша стоимость корзины равняется: 100 000 - 40 000 = 60 000 руб.
- в результате пользователь оплатил 3 штуки общей стоимостью 60 000 руб. Сработало событие purchase (Покупка), и данные отправились в Google Analytics с доходом от продукта 60 000 руб.
Таким образом, в Google Analytics в специальном показателе напротив этого товара будет стоять значение 60 000 руб., а в метрике Доход от продукта будет также отображено значение 60 000 руб. При желании, можно не передавать отрицательное значение в событии remove, а настроить только на добавление товаров в корзину. Имея это значение, а также доход от каждого продукта, можно проделать с этими данными различные расчеты в сторонних программах (Excel, Google Таблицы и т.д.).
В этом материале я рассмотрел один из самых простых способов расчета стоимости корзины в Google Analytics. При такой реализации может быть много подводных камней. Например:
- данные не передаются;
- в отчете вы видите отрицательные значения стоимости корзины;
- ограничения, связанные с тем, что с помощью такого способа можно передавать данные только в Google Analytics, а в Яндекс.Метрику или другие сторонние счетчики аналитики нет;
- работает только для расширенной электронной торговли (Enhanced Ecommerce).
Несмотря на все это модификация кода и настройка расчета стоимости корзины не такая уж сложная задача. А результат, который вы получите после внедрения, вас приятно удивит.