Отслеживание электронной торговли

Из этого руководства вы узнаете, как собирать данные об электронной торговле с помощью analytics.js.

Обзор

Отслеживание электронной торговли позволяет подсчитывать количество транзакций на вашем сайте и доход, который они приносят. Многие сайты электронной торговли работают следующим образом: когда пользователь нажимает кнопку "Купить" в браузере, информация о покупке передается на веб-сервер, где выполняется транзакция. Если транзакция проходит успешно, пользователь перенаправляется на страницу с выражением благодарности или на страницу квитанции с подробными сведениями о покупке. С помощью библиотеки analytics.js вы можете отправлять данные с таких страниц в Google Analytics.

С помощью analytics.js можно передавать данные электронной торговли двух типов: transaction (транзакция) и item (товар).

Данные о транзакции

Транзакция – это денежная операция, выполненная на вашем сайте. Транзакция содержит следующие значения:

Ключ Тип значения Обязательное поле Описание
id Текст Да Идентификатор транзакции. Пример: 1234.
affiliation Текст Нет Магазин или филиал, в котором произошла транзакция. Пример: Acme Clothing.
revenue Валюта Нет Общий доход или суммарная ценность транзакции. Пример: 11.99. Это значение может включать любые корректировки общего дохода (стоимость доставки, налоги и т. д.).
shipping Валюта Нет Общая стоимость доставки. Пример: 5.
tax Валюта Нет Общая сумма налогов. Пример: 129.

Данные о товаре

Товар – это отдельный предмет из корзины товаров. Товар содержит следующие значения:

Ключ Тип значения Обязательное поле Описание
id Текст Да Идентификатор транзакции. Позволяет узнать, к какой транзакции относится тот или иной товар. Пример: 1234.
name Текст Да Название товара. Пример: "Розовый плюшевый кролик".
sku Текст Нет Код единицы складского учета. Пример: SKU47.
category Текст Нет Категория, к которой относится товар. Пример: "Мягкие игрушки".
price Валюта Нет Цена за единицу товара. Пример: 11.99.
quantity Целое число Нет Количество приобретенных единиц товара. Если в это поле передается дробное число, например 1.5, оно будет округлено до ближайшего целого.

Реализация

Обычно отслеживание электронной торговли реализуется на странице, которая загружается после транзакции: например, "Спасибо за покупку". Реализация состоит из следующих этапов:

Загрузка плагина электронной торговли

Чтобы сократить размер библиотеки analytics.js, в ее стандартной версии не предусмотрено отслеживание электронной торговли, поэтому вам нужно будет загрузить отдельный плагин.

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

ga('require', 'ecommerce');

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

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

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

После загрузки плагин создаст прозрачный объект корзины покупок. Вы можете добавить в этот объект данные о транзакции и товаре, а затем передать сразу все эти сведения в Google Аналитику.

Чтобы добавить данные о транзакции в объект корзины покупок, используйте команду ecommerce:addTransaction:

ga('ecommerce:addTransaction', {
  'id': '1234',                     // Transaction ID. Required.
  'affiliation': 'Acme Clothing',   // Affiliation or store name.
  'revenue': '11.99',               // Grand Total.
  'shipping': '5',                  // Shipping.
  'tax': '1.29'                     // Tax.
});

Добавление товаров

Чтобы добавить данные о товарах в объект корзины покупок, используйте команду ecommerce:addItem:

ga('ecommerce:addItem', {
  'id': '1234',                     // Transaction ID. Required.
  'name': 'Fluffy Pink Bunnies',    // Product name. Required.
  'sku': 'DD23444',                 // SKU/code.
  'category': 'Party Toys',         // Category or variation.
  'price': '11.99',                 // Unit price.
  'quantity': '1'                   // Quantity.
});

Отправка данных

Добавив все данные в объект корзины покупок, отправьте их в Google Аналитику, используя команду ecommerce:send:

ga('ecommerce:send');

Эта команда проверит объект корзины и передаст данные о всех транзакциях и товарах в Google Аналитику. После этого корзина покупок будет очищена и ее можно будет использовать для следующей транзакции. Если до этого выполнялась ещё одна команда ecommerce:send, будут отправлены только новые данные о транзакциях и товарах.

Очистка данных

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

ga('ecommerce:clear');

Как указать местную валюту

Вы задаете глобальную валюту (общую для всех транзакций и товаров) через веб-интерфейс Google Аналитики. По умолчанию глобальная валюта используется для всех транзакций и товаров. Если на вашем сайте доступна оплата в разной валюте, то с помощью плагина электронной торговли вы можете указать валюту для транзакции, а также для отдельных товаров.

Местная валюта должна быть указана в соответствии со стандартом ISO 4217. Полный список валют конверсии, доступных в Google Аналитике, можно найти в справочном руководстве по кодам валют.

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

ga('ecommerce:addTransaction', {
  'id': '1234',
  'affiliation': 'Acme Clothing',
  'revenue': '11.99',
  'shipping': '5',
  'tax': '1.29',
  'currency': 'EUR'  // local currency code.
});

Вы также можете задать валюту для каждого товара:

  ga('ecommerce:addItem', {
    'id': '1234',
    'name': 'Fluffy Pink Bunnies',
    'sku': 'DD23444',
    'category': 'Party Toys',
    'price': '11.99',
    'quantity': '1',
    'currency': 'GBP' // local currency code.
  });

Поддержка нескольких объектов отслеживания

Плагин электронной торговли также можно использовать, если вы реализовали на странице несколько объектов отслеживания с разными названиями. В этом случае плагин работает точно так же, как и со стандартным объектом отслеживания, но синтаксис будет таким: trackerName.pluginName:method. Допустим, вы создали объект отслеживания с названием myTracker:

ga('create', 'UA-XXXXX-Y', 'auto', {'name': 'myTracker'});

Чтобы загрузить плагин электронной торговли для этого объекта, используйте следующую команду:

ga('myTracker.require', 'ecommerce');

Чтобы отправить транзакцию, создайте объект транзакции и передайте его трекеру myTracker:

var transaction = {
  'id': '1234',                    // Transaction ID.
  'affiliation': 'Acme Clothing',  // Affiliation or store name.
  'revenue': '11.99',              // Grand Total.
  'shipping': '5' ,                // Shipping.
  'tax': '1.29'                    // Tax.
};

ga('myTracker.ecommerce:addTransaction', transaction);

При использовании этого синтаксиса объект транзакции можно применять в нескольких счетчиках.

И наконец, передайте данные о транзакции:

ga('myTracker.ecommerce:send');

Пример

Большинство интернет-магазинов осуществляет транзакции на сервере, тогда как библиотека analytics.js отправляет данные в Google Аналитику из браузера. Поэтому, чтобы информация правильно передавалась в Google Аналитику, необходимо скоординировать работу сервера и браузера.

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

В PHP у вас обычно имеется представление данных электронной торговли. В нашем примере эти данные хранятся в ассоциативном массиве:

<?php
// Transaction Data
$trans = array('id'=>'1234', 'affiliation'=>'Acme Clothing',
               'revenue'=>'11.99', 'shipping'=>'5', 'tax'=>'1.29');

// List of Items Purchased.
$items = array(
  array('sku'=>'SDFSDF', 'name'=>'Shoes', 'category'=>'Footwear', 'price'=>'100', 'quantity'=>'1'),
  array('sku'=>'123DSW', 'name'=>'Sandals', 'category'=>'Footwear', 'price'=>'87', 'quantity'=>'1'),
  array('sku'=>'UHDF93', 'name'=>'Socks', 'category'=>'Footwear', 'price'=>'5.99', 'quantity'=>'2')
);
?>

Прежде всего необходимо реализовать преобразование данных электронной торговли в строку JavaScript в соответствии с требованиями библиотеки analytics.js:

<?php
// Function to return the JavaScript representation of a TransactionData object.
function getTransactionJs(&$trans) {
  return <<<HTML
ga('ecommerce:addTransaction', {
  'id': '{$trans['id']}',
  'affiliation': '{$trans['affiliation']}',
  'revenue': '{$trans['revenue']}',
  'shipping': '{$trans['shipping']}',
  'tax': '{$trans['tax']}'
});
HTML;
}

// Function to return the JavaScript representation of an ItemData object.
function getItemJs(&$transId, &$item) {
  return <<<HTML
ga('ecommerce:addItem', {
  'id': '$transId',
  'name': '{$item['name']}',
  'sku': '{$item['sku']}',
  'category': '{$item['category']}',
  'price': '{$item['price']}',
  'quantity': '{$item['quantity']}'
});
HTML;
}
?>

Затем в теге <script> нужно добавить дополнительный код PHP для динамического вывода данных о транзакциях и товарах:

<!-- Begin HTML -->
<script>
ga('require', 'ecommerce');

<?php
echo getTransactionJs($trans);

foreach ($items as &$item) {
  echo getItemJs($trans['id'], $item);
}
?>

ga('ecommerce:send');
</script>

После выполнения этого PHP-скрипта данные о транзакциях и товарах, необходимые библиотеке analytics.js, будут выведены на страницу. Когда JavaScript на этой странице отобразится в браузере, все данные электронной торговли будут отправлены в Google Аналитику.

Типы валют

Тип валюты по умолчанию можно задать в интерфейсе управления. Когда вы отправляете значения валют с помощью analytics.js, они представляют собой итоговые величины.

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

1000.000001

После отправки в Google Аналитику будет удален весь текст до первой цифры, дефиса (-) или десятичной точки (.). Допустим, к примеру, что вы отправили следующую строку:

$-55.00

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

-55.00