Электронная торговля в Google Analytics позволяет нам собирать данные о транзакциях на сайте. С помощью электронной торговли мы можем узнать:
- Какой товар покупают.
- Количество товара.
- Сумму заказа.
- Популярные товары.
- Категорию товара.
Рассмотрим настройку Электронной торговли для CMS OpenCart 2.x-3.x при помощи двух методов – ga.js и gtag.js.
Метод Ga.js
Электронная торговля для CMS OpenCart 2.x-3.x, метод ga.js. Для того чтобы начать установку, на сайте должен быть установлен счетчик Google Analytics:
<!-- Google Analytics --> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-XXXXXXXXX', 'auto'); ga('send', 'pageview'); </script> <!-- Google Analytics -->
Настройка будет в три этапа. Нам нужно будет изменить некоторые файлы на сайте, добавив необходимые коды.
Первый файл который будем изменять order.php, находится в директории catalog/model/checkout/order.php
В нем добавляем следующий код (который будет генерировать и отображать нам данные):
public function getOrderGAC($order_id) { $order_query = $this->db->query("SELECT o.order_id, o.store_name, o.language_id, o.currency_code, o.currency_value, o.total FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $language_id = $order_query->row['language_id']; $order_product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach ($order_product_query->rows as $product) { $option_data = ''; $order_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($order_option_query->rows as $option) { if ($option['type'] != 'file') { $option_data .= $option['name'] . ': ' . (utf8_strlen($option['value']) > 20 ? utf8_substr($option['value'], 0, 20) . '..' : $option['value']) . ' - '; } } $option_data = rtrim($option_data, ' - '); $category_data = ''; $category_query = $this->db->query("SELECT cd.name FROM `" . DB_PREFIX . "product_to_category` pc INNER JOIN `" . DB_PREFIX . "category_description` cd ON pc.category_id = cd.category_id WHERE pc.product_id = '" . (int)$product['product_id'] . "' AND cd.language_id = '" . (int)$language_id . "'"); $i = 0; foreach ($category_query->rows as $category) { $i++; if ($i <= 5) { $category_data .= $category['name'] . '/'; } } $category_data = rtrim($category_data, '/'); if ($option_data) { $name = utf8_substr($product['name'] . ' - ' . $option_data, 0, 80); } else { $name = utf8_substr($product['name'], 0, 80); } $products[] = array( 'name' => $name, 'sku' => $product['model'], 'category' => $category_data, 'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), false, $order_query->row['currency_value']), 'quantity' => $product['quantity'] ); } return array( 'order_id' => $order_query->row['order_id'], 'store_name' => $order_query->row['store_name'], 'products' => $products, 'total' => $this->currency->format($order_query->row['total'], false, $order_query->row['currency_value']), 'currency_code' => $order_query->row['currency_code'] ); } else { return false; } }
Второй файл который будем править – success.php в директории catalog/controller/checkout/success.php
В нем добавляем следующий код (данный код будет считывать данные из кода который установили первым):
$data['gaTracking'] = ''; if (isset($this->session->data['order_id'])) { $this->load->model('checkout/order'); $orderInfo = $this->model_checkout_order->getOrderGAC($this->session->data['order_id']); if ($orderInfo) { $data['gaTracking'] .= sprintf("ga('ecommerce:addTransaction', {'id': '%s', 'affiliation': '%s', 'revenue': '%s', 'currency': '%s'});", $orderInfo['order_id'], $orderInfo['store_name'], $orderInfo['total'], $orderInfo['currency_code'] ) . "\n"; $data['gaTracking'] = rtrim($data['gaTracking'], '\n'); foreach ($orderInfo['products'] as $product) { $data['gaTracking'] .= sprintf("ga('ecommerce:addItem', {'id': '%s', 'name': '%s', 'sku': '%s', 'category': '%s', 'price': '%s', 'quantity': '%s', 'currency': '%s'});", $orderInfo['order_id'], $product['name'], $product['sku'], $product['category'], $product['price'], $product['quantity'], $orderInfo['currency_code'] ) . "\n"; } } }
Третий и последний файл который нужно править success.tpl в директории – catalog/view/theme/***********/template/common/success.tpl
****** – Это папка с Вашей Темой.
В нем добавляем следующий код (который будет на странице “спасибо за заказ” и после отправки данных будет закрывать передачу, чтобы при обновлении страницы избежать дублирования транзакции):
<?php if(isset($gaTracking)) { if($gaTracking) { echo "<script>" . "\n"; echo "ga('require', 'ecommerce');" . "\n"; echo $gaTracking; echo "ga('ecommerce:send');" . "\n"; echo "</script>" . "\n"; } } ?>
Изменение файлов мы закончили, теперь нужно включить все в Google Analytics: Администратор – Представление – Настройка Электронной торговли.
Включаем отслеживания электронной торговли.
Наша настройка Электронной торговли завершена. Если у Вас не получается либо вы не имеете опыта в редактировании файлов, можно сделать с помощью готового модификатора который вы можете скачать – Модификатор Метод GA.js
Как установить модификатор? Нам нужно перейти в админ панель управления сайтом она доступна по ссылке: https://**************/admin/
******** – домен вашего сайта.
В Админ панели выбираем пункт: Модули – Установка расширений. Мы попадаем в окно установки.
Теперь выбираем загрузить файл и выбираем скачанный нами файл.
И ждем когда завершиться процес установки. Все мы установили наши настройки.
В результате мы получаем в Google Analytics наши транзакции.
Метод Gtag.js
Электронная торговля для CMS OpenCart 2.x-3.x метод gtag.js. В первую очередь должен быть установлен счетчик на сайте:
<!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-74590809-2"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-XXXXXXXXXX'); </script>
Тут все тоже самое как с предыдущим методом – изменяем файлы или скачиваем модификатор и устанавливаем его.
Настройка будет также в три этапа.
Первый файл который будем изменять находится в директории catalog/model/checkout/order.php
В нем добавляем следующий код (который будет генерировать и отображать нам данные):
public function getGTAG($order_id) { $order_query = $this->db->query("SELECT o.order_id, o.store_name, o.language_id, o.currency_code, o.currency_value, o.total FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $language_id = $order_query->row['language_id']; $currency_value = $order_query->row['currency_value']; $order_product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach ($order_product_query->rows as $product) { $i = 0; $category_data = ''; $category_query = $this->db->query("SELECT cd.name FROM `" . DB_PREFIX . "product_to_category` pc INNER JOIN `" . DB_PREFIX . "category_description` cd ON pc.category_id = cd.category_id WHERE pc.product_id = '" . (int)$product['product_id'] . "' AND cd.language_id = '" . (int)$language_id . "'"); foreach ($category_query->rows as $category) { $i++; if ($i <= 5) { $category_data .= $category['name'] . '/'; } } $category_data = rtrim($category_data, '/'); $option_data = ''; $order_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($order_option_query->rows as $option) { if ($option['type'] != 'file') { $option_data .= $option['name'] . ': ' . (utf8_strlen($option['value']) > 20 ? utf8_substr($option['value'], 0, 20) . '..' : $option['value']) . ' - '; } } $option_data = rtrim($option_data, ' - '); $products[] = array( 'id' => $product['model'], 'name' => $product['name'], 'category' => $category_data, 'variant' => $option_data, 'price' => (($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0)) * $currency_value), 'quantity' => $product['quantity'] ); } $order_shipping = 0; $order_total_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_total` WHERE order_id = '" . (int)$order_id . "' ORDER BY sort_order ASC"); foreach ($order_total_query->rows as $total) { if ($total['value'] > 0) { if ($total['code'] == "shipping") { $order_shipping += $total['value']; } } } return array( 'transaction_id' => $order_query->row['order_id'], 'affiliation' => $order_query->row['store_name'], 'value' => $order_query->row['total'] * $currency_value, 'currency' => $order_query->row['currency_code'], 'shipping' => $order_shipping * $currency_value, 'items' => $products ); } else { return false; } }
Второй файл для правки success.php – catalog/controller/checkout/success.php
В нем добавляем следующий код (который будет считывать данные из кода, который установили первым):
$data['gtag_event'] = ''; if (isset($this->session->data['order_id'])) { $gtag = false; if ($this->config->get('google_analytics_status')) { $gtag = true; } else if ($this->config->get('config_google_analytics_status')) { $gtag = true; } else if ($this->config->get('config_google_analytics')) { $google_analytics = $this->config->get('config_google_analytics'); if (!empty($google_analytics)) { $gtag = true; } } if ($gtag) { $this->load->model('checkout/order'); $event_info = $this->model_checkout_order->getGTAG($this->session->data['order_id']); if ($event_info) { $data['gtag_event'] .= '<script>'."\n"; $data['gtag_event'] .= 'gtag(\'event\', \'purchase\', {'."\n"; $data['gtag_event'] .= sprintf('"transaction_id": "%s", "affiliation": "%s", "value": %s, "currency": "%s", "shipping": %s,', $event_info['transaction_id'], $event_info['affiliation'], $event_info['value'], $event_info['currency'], $event_info['shipping'])."\n"; if (isset($event_info['items']) && is_array($event_info['items'])) { $data['gtag_event'] .= '"items": [ '."\n"; foreach ($event_info['items'] as $item) { $data['gtag_event'] .= sprintf('{ "id": "%s", "name": "%s", "category": "%s", "variant": "%s", "quantity": %s, "price": "%s" },', $item['id'], $item['name'], $item['category'], $item['variant'], $item['quantity'], $item['price'])."\n"; } $data['gtag_event'] .= ' ]'."\n"; } $data['gtag_event'] .= ' });'."\n"; $data['gtag_event'] .= '</script>'; } } }
Третий и последний файл который нужно править catalog/view/theme/***********/template/common/success.tpl
****** – папка с Вашей Темой.
В нем добавляем следующий код (который будет на странице “спасибо за заказ” активировать второй код, и после отправки данных будет закрывать передачу, чтобы при обновлении страницы не было дублей в передаче данных):
<?php if (isset($gtag_event) && !empty($gtag_event)) { echo $gtag_event; } ?>
Наша настройка Электронной торговли завершена методом gtag.js. Также можете скачать готовый модификатор – Модификатор метод Gtag.js
Установку делаем как описано в методе ga.js, разницы между установками и настройками куда и что ставить нет.
Разница между методами в разном написании написании кода.
Если у Вас не получилось или остались вопросы пишите в комментариях.
Коды безопасны и актуальны, взяты на GitHub: https://github.com/opencartbrasil/google-analytics-ecommerce/blob/master/install.xml
Модификатор метод Gtag.js не доступен для скачивания
Спасибо, ссылку поправили.
Спасибо за труды, но вставлять нужно в определённые места файлов, а если абы куда, то не работает.
Нет единого решения, что и как. По этому описывается основной принцип настройки, а далее уже нужно смотреть при установке.
Полностью согласен. Было бы неплохо намекнуть, куда приблизительно вставлять код. Меня выручило бесплатное дополнение, которое правда пришлось доработать для push. https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=31361
Жаль, что по ремаркетингу нет таких замечательных статей.
Тут не получится намекнуть, к сожалению((. По ссылке – то уже идет настройка с GTM, а статья написана о настройке без GTM. Так же мы прикрепили модуль, который вы можете установить и все будет работать, ссылка есть в статьи. Насчет ремаркетинга почему нет статьи, есть посмотрите в нас в блоге https://sawyer.marketing/blog/nastrojka-dinamicheskogo-remarketinga-google-ads/
Добрый день! Спасибо за статью. Можно теперь для GTM раскрыть информацию, как сам тег настроить передачи этих переменных?
Как я выше в Коментарии писал этот метод и переменные не имеют ничего общего к GTM. Соответственно переменные которые есть в статьи вы ни как не передадите через GTM. Для настройки и передачи данных E-COMMERCE через GTM используется другой тип переменных и масив уровня данных.
Добрый день! Установил модификатор методом GTAG.JS, правда в архиве файл назывался install.xml, переименовал его в google_analytics_ecommerce.ocmod.xml.
Файл успешно установился но пока проверить работает или нет не могу т.к. данные не подтягиваются (сделал 2 тестовых заказа со статусом – сделка завершена, прошло часа 2).
Сколько нужно подождать что бы данные отобразились?
Добрый день. Передача данных может идти с задержкой до 48 часов, такие правила Google Analytics. Так же задержка будет если вы на новый аккаунт делали настройку. Так же проверьте включена ли сама Торговля в представлении Google Analytics. Так же видим что у вас идет повторная передача данных https://prnt.sc/uxs4it , это может давать не точные данные о действию пользователя на сайте.
Понял, спасибо!
Добрый день! Данные до сих пор не отобразились, из процесса установки что я описывал выше, какие мог допустить ошибки?
Код счетчика установлен gtag.js, файл настройки методом gtag.js.
Файл в архиве назывался install.xml, переименовал его в google_analytics_ecommerce.ocmod.xml(как в
1м архиве).
Файл установился успешно.
Добрый день. Посмотрите в файле что Вы скачали верно ли указан адрес активации, а именно верно прописана Ваша тема https://prnt.sc/uyidrv . Если Вы не прописали этого пропишите и заново переустановите модификатор.
День добрій. Установил, но на последней странице странице , появился кусок кода – ” . “\n”; echo “ga(‘require’, ‘ecommerce’);” . “\n”; echo $gaTracking; echo “ga(‘ecommerce:send’);” . “\n”; echo “” . “\n”; } } ?>
Что делать? )
Заранее благодарен за помощь.
Добрый день. Скажите вы верно прописали тему в файле который устанавливали на сайт?
Здравствуйте, а не подскажите такого же плана решение для магазина на Wordpress Woocommerce. Заранее благодарен.
Добрый день. Enhanced Ecommerce Google Analytics Plugin for WooCommerce
Как настроить если магазин использует simple оформление заказа.
Сергей здравствуйте. На simple там другая логика настройки. На страницу спасибо за заказ нужно установить код электроной комерции. Напишите контакт свой и наш менеджер вам поможет с установкой.
Здравствуйте, подскажите пожалуйста, что-то нужно сделать с файлом install.xml? тк я установила модуль (google_analytics_ecommerce.ocmod.xml) а данные не передаются в аналитику… . Возможно нужно что-то еще сделать , а не просто установить модуль? Буду очень благодарна за ответ и рекомендацию.
Здравствуйте, Ольга какая у Вас тема OpenCart?
Здравствуйте, тема NewStore v.2.6.0 , Версия ocStore 2.1.0.2.1 – плагин работает но теряются данные… те доход не весь учитывается. Есть дни где продажи на общую сумму 300 грн, а в гугл аналитику попадает 50 грн напрмер.. (1 продажа на сумму 250 грн потерялась…). Почему могут теряться данные и как это поправить?
Корзина – Простая регистрация и заказ Simple v 4.7.7
Добрый день. Отвечу тут сразу на два Ваши комментария. Теряться могут иза того что плагин аналитики не адаптивный под вашу тему (это часто бывает), так же может быть что страница спасибо за заказ не прогружает код електроной торговли. Чтоб сказать точно нужно посмотреть Ваш сайт.
Евгений, спасибо за ответ. Действительно я проследила и в доход не попадает заказы сделанные чз общую корзину (правый верхний угол) а чз быстрый заказ доход отображается…. Подскажите пожалуйста как я могу это исправить и настроить что бы и данные с общей корзины передавались в доход аналитики?
Ответил вам на Почту.