Отправка данных в электронную торговлю Google Analytics с помощью PHP

Как настроить отправку данных в электронную торговлю Google Analytics с помощью PHP

Всем привет!

Сегодня в нашем блоге техническая статья, что бывает нечасто. А сподвигло меня ее написать то, что достаточно часто от веб-аналитиков поступают задачи по настройке электронной коммерции в Google Analytics. Обычно, для этого мы используем стандартный и рекомендуемый самим Analytics’ом код на JavaScript. Однако, такое решение иногда не подходит: часть заказов теряется и не отображается в аналитике. Для этого есть второй метод отправки данных в систему аналитики, о котором и хочу рассказать.

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

 

Рисунок 1. Пример отчета электронной торговли в Google Analytics

Рисунок 1. Пример отчета электронной торговли в Google Analytics

 

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

Однако, у данного решения бывают свои минусы. Например, периодически мы сталкиваемся с тем, что заказы «теряются». В админке есть, а в аналитике – нет. ТОП-5 причин этого (при условии, что код установлен и настроен корректно):

  1. Особенности самого сайта. Код иногда не погружается, либо пользователи слишком быстро закрывают страницу.
  2. Отключены Cookie/JavaScript. Процент таких пользователей ничтожно мал, но все же случается.
  3. Некорректно работает javascript. Когда есть ошибки в JavaScript самого сайта.
  4. Плохое соединение между провайдером и серверами Google.
    Вполне возможно, что у некоторых клиентов некачественное соединение с интернетом, либо провайдер может фильтровать трафик. Из-за этого данные с JavaScript попросту не доходят до серверов собирающих статистику, но опять же процент таких пользователей невелик.

 

Для начала давайте рассмотрим вредные решения и советы, которые можно встретить на просторах интернета:

  1. Динамически формировать код eCommerce и отправлять статистику до перенаправления пользователя на страницу «Спасибо за покупку». К примеру, пользователь находится на странице оформления. Вводит все свои данные и после успешной верификации данных на стороне сервера средствами ajax отправляется сформированный код электронной торговли. Сначала выполняется он, и только после этого происходит перенаправление на страницу «Спасибо за покупку». Конечно этот вариант лучше отбросить.
  2. Каким-то образом задержать пользователя на странице «Спасибо за покупку». Тоже весьма сомнительное решение.

 

А теперь перейдем к правильному варианту. В таких случаях есть второй метод настройки eCommerce для Google Analytics. Данные при этом будут отправляться не с помощью js, а средствами php. С описанием этого метода вы, либо ваши разработчики могут ознакомиться по ссылке.

И пример готового простого скрипта, как можно интегрировать код на сайт:

<?php
// Получаем массив с данными заказа
$order_info = …
// Генерируем уникальный идентификатор
$user_id = func_gen_uuid();
// Формируем массив с параметрами транзакции
$transaction_data = array(
‘v’ => 1,
‘tid’ => ‘UA-xxxxxxxx-x’,
‘cid’ => $user_id,
‘t’ => ‘transaction’,
‘ti’ => $order_info[‘order_id’],
‘ta’ => $order_info[‘store_name’],
‘tr’ => $order_info[‘total’],
‘ts’ => $order_info[‘shipping_cost’],
‘tt’ => $order_info[‘order_tax’],
‘cu’ => ‘RUB’
);
// Отправляем параметры транзакции
func_send_data_to_ga($transaction_data);
// Перебираем все товары
foreach($order_info[‘products’] as $order_product) {
// Формируем массив с информацией о товаре
$item_data = array(
‘v’ => 1,
‘tid’ => ‘UA-xxxxxxxx-x’,
‘cid’ => $user_id,
‘t’ => ‘item’,
‘ti’ => $order_info[‘order_id’],
‘in’ => $order_product[‘product_name’],
‘ip’ => number_format($order_product[‘price’], 2, ‘.’, »),
‘iq’ => $order_product[‘quantity’],
‘ic’ => $order_product[‘sku’],
‘iv’ => $order_product[‘category_name’],
‘cu’ => ‘RUB’
);
// Отправляем данные о товаре
func_send_data_to_ga($item_data);
}

function func_gen_uuid() {
return sprintf( ‘%04x%04x-%04x-%04x-%04x-%04x%04x%04x’,
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
mt_rand( 0, 0xffff ),
mt_rand( 0, 0x0fff ) | 0x4000,
mt_rand( 0, 0x3fff ) | 0x8000,
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
}
function func_send_data_to_ga($params) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ‘http://www.google-analytics.com/collect‘);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
$ret = curl_exec($curl);
curl_close($curl);
}

?>

 

После интеграции данного скрипта процент потерянных заказов практически свелся к нулю. Картина до:

Рисунок 2. Отправка данных посредством js

Рисунок 2. Отправка данных в Google Analytics посредством js

 

Потеряны 1473, 1474, 1485 заказы.

После:

Рисунок 2. Отправка данных посредством php

Рисунок 2. Отправка данных в Google Analytics посредством php

 

Все заказы на месте.

Справедливости ради все же стоит отметить, что данный метод тоже не панацея. Заказы все равно могут теряться, из-за проблем с соединением серверов интернет-магазина и GA, например. Либо в случае перегруженности сервера, где расположен сайт. Однако, интуитивно кажется, что данный метод должен работать все же быстрее, чем отправка данных через JavaScript.

Также данный метод не получится использовать, если ваш интернет-магазин сделан SAAS-платформе.

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

 

ruslan

 

Руслан Халиулин
Веб-программист