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

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

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

Перейдите в Метрику. Выберите счетчик, к которому нужно подключить электронную коммерцию. В настройках счетчика включите опцию Электронная коммерция. В код счетчика добавится контейнер для сбора данных dataLayer.

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

Убедитесь, что код счетчика на сайте содержит строку:

ecommerce:"dataLayer"

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

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

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

  1. В разделе Настройки перейдите на вкладку Цели.
  2. Нажмите кнопку Добавить цель.
  3. Укажите тип условия JavaScript-событие, которое позволяет указать событие на сайте, которое является индикатором эффективности работы сайта.
  4. Установите Идентификатор цели в ORDER, сохраните номер цели.
  5. Нажмите кнопку Добавить цель. Созданная цель отображается в списке целей.
     
  6. Нажмите кнопку "Сохранить".
  7. В конец файла bootstrap.php добавьте наблюдателя к событию создания заказа Shop_Payment_System_Handler.onAfterProcessOrder и внесите следующий код обработчика события. Не забудьте заменить идентификатор цели (goal_id) в коде обработчика:

PHP

  1. // Цели Яндекс.Метрики при оформлении заказа
    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'));
    // /Цели Яндекс.Метрики
    
    
  2. Проверьте оформление заказа, информация о достижении цели должна появиться в конверсиях.

Цели Метрики

Как создать цель «JavaScript-событие»

  1. Перейдите на страницу Цели в левом меню и нажмите кнопку Добавить цель.
  2. В поле Название укажите имя создаваемой цели. 
  3. Выберите тип цели JavaScript-событие.
  4. Укажите нужное условие и идентификатор цели. Под полем с идентификатором появится строка Код цели для сайта. Скопируйте код. Он понадобится для настройки метода reachGoal на вашем сайте.

    Примеры использования метода reachGoal на страницах сайта:

    Нажатие кнопки

    ...
    <form action="">
        ...
        <input type="button" onclick="ym(XXXXXX, 'reachGoal', 'TARGET_NAME'); return true;" value="Заказать" />
    </form>
    ...
    Заполнение формы
    ...
    <form action="" method="get" onsubmit="ym(XXXXXX, 'reachGoal', 'TARGET_NAME'); return true;">
        ...
    </form>
    ...
    Отправка дохода по цели
    ...
    <form action="">
        ...
        <input type="button" onclick="ym(XXXXXX, 'reachGoal', 'TARGET_NAME', {order_price: '1000.35', currency: 'RUB'}); return true;" value="Заказать"/>
    </form>
    ...
    XXXXXX — номер вашего счетчика.
    TARGET_NAME — идентификатор цели.
    order_price — доход по цели. Можно указать доход в валюте или в условных единицах.
    currency — валюта дохода по цели. Метрика распознает трехбуквенный код валюты по ISO 4217
  5. Нажмите кнопку Добавить цель. Созданная цель отобразится в списке целей. Метрика начнет сбор статистики по ней в течение нескольких минут.