Выдано 118440 лицензий

Отслеживание продаж в Яндекс.Метрике

Владельцы интернет-магазинов могут получать в Яндекс.Метрике детальную информацию о заказах, совершенных на сайте магазина.

Подключение Ecommerce

В разделе Настройка (Код счетчика) включить опцию Отправка в Метрику данных электронной коммерции. При этом в код счетчика будет добавлен контейнер для сбора данных dataLayer (по умолчанию).

Подключение Ecommerce

Установите код счетчика на страницах вашего сайта.

Представление и передача данных в Ecommerce

Чтобы передать данные в виде Ecommerce-объектов сервису Яндекс.Метрики, необходимо поместить их в специальный JavaScript-массив методом push. Такой массив будем называть контейнером данных.

  1. В разделе Настройки перейдите на вкладку Цели.
  2. Нажмите кнопку Добавить цель.
  3. Укажите тип условия JavaScript-событие, которое позволяет указать событие на сайте, которое является индикатором эффективности работы сайта.
  4. Установите Идентификатор цели в ORDER
  5. Нажмите кнопку Добавить цель. Созданная цель отображается в списке целей.
  6. Нажмите кнопку Сохранить.
  7. В конец файла bootstrap.php добавьте наблюдателя к событию создания заказа Shop_Payment_System_Handler.onAfterProcessOrder и внесите следующий код обработчика события. Не забудьте заменить идентификатор цели (goal_id) в коде обработчика:
    // Цели Яндекс.Метрики при оформлении заказа
    class HostCms_Yandex_Metrika
    {
        static public function onAfterProcessOrder($oShop_Payment_System_Handler)
        {
            $oShop_Order = $oShop_Payment_System_Handler->getShopOrder();

            // ЗАМЕНИТЕ ЗНАЧЕНИЕ goal_id НА ИДЕНТИФИКАТОР ВАШЕЙ ЦЕЛИ ORDER
            // Код метрики должен быть выше блока оформления заказа
            ?>
            <script type="text/javascript">
            // $(window).load(function(){
                try {
                    window.dataLayer = window.dataLayer || [];
                    
                    dataLayer.push({
                        "ecommerce": {
                            "currencyCode": "<?php echo htmlspecialchars($oShop_Order->Shop_Currency->code)?>",
                            "purchase": {
                                "actionField": {
                                    "id" : "<?php echo htmlspecialchars($oShop_Order->invoice)?>",
                                    "goal_id" : "999999999"
                                },
                                "products": [
                                <?php
                                    $aShop_Order_Items = $oShop_Order->Shop_Order_Items->findAll(FALSE);
                                    $len = count($aShop_Order_Items);
                                    foreach ($aShop_Order_Items as $key => $oShop_Order_Item)
                                    {
                                        ?>{
                                            name: "<?php echo htmlspecialchars($oShop_Order_Item->name)?>",
                                            price: <?php echo htmlspecialchars($oShop_Order_Item->getPrice())?>,
                                            quantity: <?php echo htmlspecialchars($oShop_Order_Item->quantity)?>
                                        }<?php

                                        if ($key < $len - 1)
                                        {
                                            echo "," . PHP_EOL;
                                        }
                                    }
                                ?>
                                ]
                            }
                        }
                    });
                } catch(e) { }
            //});
            </script>
            <?php
        }
    }
    Core_Event::attach('Shop_Payment_System_Handler.onAfterProcessOrder', array('HostCms_Yandex_Metrika', 'onAfterProcessOrder'));
    // /Цели Яндекс.Метрики
  8. Проверьте оформление заказа, информация о достижении цели должна появиться в конверсиях.

Справочная информация

  1. Javasript API / Электронная коммерция

Не нашли ответ на свой вопрос в документации? Направьте обращение в или онлайн чат.

Комментарии

  • yus

    Без темы

    В коде обработчика десятая строка:
    ?>
    так и должно быть?

    28.09.2018 17:52:28 yus

    Без темы

    Да, а что вас в ней смутило? Закончился PHP, закрыли его и пошел HTML.

    01.10.2018 10:19:48 hostcms
  • Пора обновляться: устаревший ecommerce-код скоро прекратит работу

    Из блога Яндекс.Метрики, сегодня, 15:46
    Мы прекращаем поддержку устаревшего способа передачи ecommerce-данных, в котором использовался предопределённый набор параметров визитов. Если вы используете этот способ и хотите, чтобы статистика продолжила поступать в отчёты, вам нужно до 27 марта обновить код для передачи ecommerce-данных.
    Обратите внимание: 13 и 20 марта запланировано профилактическое отключение устаревшего метода передачи данных — в эти дни устаревший код не будет передавать данные в отчёты — а с 27 марта он полностью прекратит работу.

    27.02.2018 22:21:42 tnlpro

    Без темы

    В блоге Яндекса идет речь о том, что нельзя будет передавать eсommerce-данные через reachGoal. Мы же приводим пример уже с новым кодом, через dataLayer.push

    https://yandex.ru/blog/metrika/pora-obnovlyatsya-ustarevshiy-ecommerce-kod-skoro-prekratit-rabotu/

    02.03.2018 15:47:37 alexander.egorov