Ecommerce
Bitrix вариант
Код на странице успешного заказа товара:
- order-success.php
<?php ob_start(); ?> <script> ga('require', 'ecommerce', 'ecommerce.js'); ga('ecommerce:addTransaction', { 'id': '<?php echo $arResult['ORDER_ID']; ?>', // Transaction ID. Required. 'affiliation': 'site.ru', // Affiliation or store name. 'revenue': '<?php echo $arResult['ORDER']['PRICE']; ?>', // Grand Total. 'shipping': '', // Shipping. 'tax': '' // Tax. }); var YMGoodsAll = [], YMGoods; <?php while ($arBasketItems = $dbBasketItems->GetNext()) { ?> ga('ecommerce:addItem', { 'id': '<?php echo $arResult['ORDER_ID']; ?>', // Transaction ID. Required. 'name': '<?php echo $arBasketItems['NAME']; ?>', // Product name. Required. 'sku': '<?php echo $arBasketItems['PRODUCT_ID']; ?>', // SKU/code. 'category': '', // Category or variation. 'price': '<?php echo $arBasketItems['PRICE']; ?>', // Unit price. 'quantity': '<?php echo (int)$arBasketItems['QUANTITY']; ?>' // Quantity. }); YMGoods = { 'id': '<?php echo $arBasketItems['PRODUCT_ID']; ?>', 'name': '<?php echo $arBasketItems['NAME']; ?>', 'price': '<?php echo $arBasketItems['PRICE']; ?>', 'quantity': '<?php echo (int)$arBasketItems['QUANTITY']; ?>' }; YMGoodsAll.push(YMGoods); <?php } ?> ga('ecommerce:send'); // YM var yaParams = { 'order_id': '<?php echo $arResult['ORDER_ID']; ?>', 'order_price': '<?php echo $arBasketItems['PRICE']; ?>', 'currency': 'RUR', 'exchange_rate': 1, 'goods': YMGoodsAll }; </script> <?php $GLOBALS['GA_ECOMMERCE'] = ob_get_contents(); ob_end_clean(); ?>
В футере выводим информацию о заказа из глобальной переменной GA_ECOMMERCE
:
- footer.php
<?php if(isset($GLOBALS['GA_ECOMMERCE'])) echo $GLOBALS['GA_ECOMMERCE']; ?>
проверить работу YM
Вариант с Google Tag Manager
В случае `Google Tag Manager` необходимо использовать переменную `dataLayer`.
На ней необходимо разместить следующий код на JavaScript передающий данные о покупке в Googlе Tag Manager:
- google-tag-manager.php
<script> dataLayer = [{ 'transactionId': '<?php echo $arResult['ORDER']['ID']; ?>', 'transactionAffiliation': 'site.ru', 'transactionTotal': '<?php echo $arResult['ORDER']['PROPERTY_VALUES']['AMOUNT']; ?>', 'transactionTax': '', 'transactionShipping': '', 'transactionProducts': [{ 'sku': '<?php echo $arResult['ORDER']['PROPERTY_VALUES']['BARCODE']; ?>', 'name': '<?php echo $arResult['TARIF']->name;?>', 'category': '<?php echo $arResult['TARIF']->cat;?>', 'price': '<?php echo $arResult['ORDER']['PROPERTY_VALUES']['AMOUNT']; ?>', 'quantity': '1' }] }]; </script>
Этот код необходимо разместить до загрузки контейнера `Google Tag Manager`!
Проверка: в консоли впечатать dataLayer
или JSON.stringify(dataLayer)
, выведется объект (здесь использовался массив товаров):
[ { "transactionId":"732", "transactionAffiliation":"site.ru", "transactionTotal":"", "transactionTax":"", "transactionShipping":"", "transactionProducts":[ { "sku":"27147", "name":"Товар 1", "category":"Категория 1", "price":"1680", "quantity":"1" }, { "sku":"26195", "name":"Товар 2", "category":"Категория 1", "price":"620", "quantity":"1" }, { "sku":"26054", "name":"Товар 3", "category":"Категория 3", "price":"980", "quantity":"1" } ] }, { "gtm.start":1433317019838, "event":"gtm.js" }, { "event":"gtm.dom" }, { "event":"gtm.load" } ]
Третий вариант
- order-success.php
<?php $postGA = $postYM = ''; foreach($orderItems as $item) { $postGA .= "{ 'sku': '".$item->id."', 'name': '".htmlspecialchars($item->name)."', 'price': ".number_format($item->price, 2, '.', '').", 'quantity': ".$item->count." },\n"; $postYM .= "{ 'id': '".$item->id."', 'name': '".htmlspecialchars($item->name)."', 'price': ".number_format($item->price, 0, '.', '').", 'quantity': ".$item->count." },\n"; $googleAnalyticsOrderInfo = "dataLayer = [{ 'transactionId': '".$order->id."', 'transactionTotal': ".number_format($order->amount, 2, '.', '').", 'transactionProducts': [".$postGA."] }];"; $yaMetrikaOrderInfo = "var yaParams = { 'order_id': '".$order->id."', 'order_price': ".number_format($order->amount, 2, '.', '').", 'currency': \"RUR\", 'exchange_rate': 1, 'goods': [".$postYM."] };"; } ?>
добавить вывод информации о заказе