Published using Google Docs
ТЗ Электромолл
Updated automatically every 5 minutes

ТЗ Электромолл

Показ товара в категории

В уровне данных на страницах категорий, главной, результатах поиска необходимо формировать объект после GTM со следующими переменными:

<script>

dataLayer.push({

  'ecommerce': {

        'currencyCode': 'RUB',                           

        'impressions': [

         {

           'name': 'Triblend Android T-Shirt', // Название товара

           'id': '12345', // Артикул товара

       'price': '15.25', // Стоимость товара. Необязательный параметр.

           'brand': 'Google', //Бренд или производитель. Необязательный параметр.

           'category': 'Apparel', // Категория товара. Необязательный параметр.

           'variant': 'Gray', // Вариант товара. Здесь можно указать какие-то отличительные признаки, если они нужны. Например, из какого материала или еще что-то. Необязательный параметр.

           'list': 'Search Results', // Указываем список, в котором был показан товар. Указываем категорию, в которой был инициализированы показы товара. Например, "Электросамокаты" или "Электровелосипеды Airwheel", по последнему элементу вложенности. Для главной страницы – передаём значение: "Главная", для результатов поиска "Поиск" или "Результаты поиска". Необязательный параметр.

           'position': 1 // Порядковый номер товара на странице. Необязательный параметр.

         },

         {

           'name': 'Donut Friday Scented T-Shirt',

           'id': '67890',

           'price': '33.75',

           'brand': 'Google',

           'category': 'Apparel',

           'variant': 'Black',

           'list': ‘Search Results’, // на странице категории, нижний блок

           'position': 2

         }]

  }

});

</script>

 

Большинство переменных для этого пункта отслеживания необязательны. Также есть ограничение в 8 кб данных на передачу массива. Параметры выделенные жирным шрифтом наиболее важные.

Справка по переменным и обязательным полям: https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce?hl=ru

 

Клик по товару

 

Шаблон JS кода должен срабатывать при каждом клике при переходе на карточку товара. Аналогично, после кода GTM.

 

<script>

dataLayer.push({

        'event': 'productClick',

        'ecommerce': {

          'click': {

            'actionField': {'list': 'Категория товара'}, // аналогично показам товаров в категории
           'products': [{

              'name': 'Triblend Android T-Shirt',

              'id': '12345',

              'price': '15.25',

              'brand': 'Google',

              'category': 'Apparel', // можно передавать до 5-ти уровней вложенности

разделенных "/"

              'variant': 'Gray',

              'position': '1' // позиция на странице

             }]

           }

         }

  });

</script>

 

Параметры выделенные жирным шрифтом наиболее важные. На сайте есть быстрый просмотр. Есть смысл генерировать объект также и при клике на быстрый просмотр.

 

Детальный просмотр карточки товара

Объект данных должен формироваться на детальной странице каждой карточки товара.

<script>

dataLayer.push({

  'ecommerce': {

  'detail': {

          'actionField': {'list': 'Карточка товара'}, // оставляем так, как приведено в шаблоне

          'products': [{

           'name': 'Triblend Android T-Shirt',

           'id': '12345',                        

       'price': '15.25',                      

           'brand': 'Google',                     

           'category': 'Apparel', // можно передавать до 5-ти уровней вложенности

разделенных "/"                

           'variant': 'Gray'                    

           }]

         }

   }

});

</script>

 

Добавление товара в корзину

 

Шаблон JS кода должен срабатывать при каждом добавлении товара в корзину. Аналогично, после кода GTM.

 

<script>

dataLayer.push({

  'event': 'addToCart',

  'ecommerce': {

        'currencyCode': 'RUB',

        'add': {                                   

          'products': [{                           

            'name': 'Triblend Android T-Shirt',

            'id': '12345',

            'price': '15.25',

            'brand': 'Google',

            'category': 'Apparel',

            'variant': 'Gray',

            'quantity': 1 // количество добавленного товара в корзину

           }]

        }

  }

});

</script>

 

Разумно передавать все из описанных параметров при их наличии.

 

Удаление товара из корзины

 

Шаблон JS кода должен срабатывать при каждом удалении добавленного в корзину товара. Аналогично, после кода GTM.

 

<script>

dataLayer.push({

  'event': 'removeFromCart',

  'ecommerce': {

        'remove': {                                  

          'products': [{                             

              'name': 'Triblend Android T-Shirt',

              'id': '12345',

              'price': '15.25',

              'brand': 'Google',

              'category': 'Apparel',

              'variant': 'Gray',

              'quantity': 1

          }]

        }

  }

});

</script>

 

Передаваемые параметры должны быть аналогичны событию 'addToCart'.

Заказ товара

Шаблон JS кода должен быть сгенерирован на странице "Спасибо за покупку" после GTM.

<script>

dataLayer.push({

  'ecommerce': {

        'purchase': {

          'actionField': {

            'id': 'T12345', // номер заказа

            'affiliation': 'Online Store', // название магазина

            'revenue': '35.43', // общая сумма заказа

            'tax':'4.90', // сумма налогов (можно передать 0.00)

            'shipping': '5.99', // стоимость доставки (можно передать 0.00)

            'coupon': 'SUMMER_SALE' // текст купона (необязательный параметр, у нас его нет)        

          },

          'products': [{                               

            'name': 'Triblend Android T-Shirt',        

            'id': '12345',

            'price': '15.25',

            'brand': 'Google',

            'category': 'Apparel',

            'variant': 'Gray',

            'quantity': 1,

            'coupon': '' // купон для товара

           },

           {

            'name': 'Donut Friday Scented T-Shirt',

            'id': '67890',

            'price': '33.75',

            'brand': 'Google',

            'category': 'Apparel',

            'variant': 'Black',

            'quantity': 1

           }]

        }

  }

});

</script>

--------------------------------------

На странице чекаута (https://elektro-mall.ru/simplecheckout/) необходимо сделать скрытое поле (инпут) c name="cid".

---------------------------------------

В момент отправки заказа необходимо перехватывать данные из формы чекаута и иницииализировать передачу данных в следующий скрипт:

// формируем URL в переменной $queryUrl

$queryUrl = ‘https://gyroworld.bitrix24.ru/rest/11/95d6f5ya3sx1vh93/crm.lead.add.json'; // оставляем как есть

// формируем параметры для создания лида в переменной $queryData

$queryData = http_build_query(array(

  'fields' => array( // dev.1c-bitrix.ru/rest_help/crm/fields.php

    'TITLE' => 'Лид с корзины Elektro-mall.ru', // название лида, которое будет отображаться в CRM

    'NAME' => $Name, // поле имени

    'PHONE' => array(array('VALUE' => $Phone, "VALUE_TYPE" => 'PHONE_MOBILE' )), // обязательно передаем данные многономерным массивом: значение/тип

    'EMAIL' => $Email, // поле почты

    'ADDRESS_CITY' => $City, // поле города

    'ASSIGNED_BY_ID' => 1, // ID ответственного в B24, оставляем, как есть

    'UF_CRM_GA_CID' => $GA_CID, // передаем то, что упало в скрытое поле “cid” на чекауте

    'SOURCE_ID' => 'WEB', // источник по дефолтным ID //dev.1c-bitrix.ru/rest_help/crm/fields.php

  ),

  'params' => array("REGISTER_SONET_EVENT" => "Y")

));

// запрос к B24 при помощи функции curl_exec

$curl = curl_init();

curl_setopt_array($curl, array(

  CURLOPT_SSL_VERIFYPEER => 0,

  CURLOPT_POST => 1,

  CURLOPT_HEADER => 0,

  CURLOPT_RETURNTRANSFER => 1,

  CURLOPT_URL => $queryUrl,

  CURLOPT_POSTFIELDS => $queryData,

));

$result = curl_exec($curl);

curl_close($curl);

$result = json_decode($result, 1);

Итого: $Name – передаем имя из чекаута,  $Email – мыло, $Phone – номер телефона, $GA_CID – данные из скрытого инпута name="cid", $City – город из поля на чекауте.