пятница, 5 сентября 2014 г.

Как послать данные о купленных товарах в Яндекс.Метрику, RetailRocket или еще куда-нибудь, при условии что мы их уже 1 раз передали через GTM dataLayer?

Не знаю, насколько это вообще тру, но все же, раз работает, значит это кому-нибудь нужно.

1) Не забываем, что в зависимости от того, используете ли вы классический E-Commerce или Enhanced E-Commerce вам нужно по разному формировать dataLayer.

В первом случае синтаксис типа
<script>
dataLayer = [{
    'transactionId': '1234',
    'transactionAffiliation': 'Acme Clothing',
    'transactionTotal': 38.26,
    'transactionTax': 1.29,
    'transactionShipping': 5,
    'transactionProducts': [{
        'sku': 'DD44',
        'name': 'T-Shirt',
        'category': 'Apparel',
        'price': 11.99,
        'quantity': 1
    },{
        'sku': 'AA1243544',
        'name': 'Socks',
        'category': 'Apparel',
        'price': 9.99,
        'quantity': 2
    }]
}]; 
</script>

а во втором, соответственно
dataLayer.push({
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',                         // Transaction ID. Required for purchases and refunds.
        'affiliation': 'Online Store',
        'revenue': '35.43',                     // Total transaction value (incl. tax and shipping)
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      },
      'products': [{                            // List of productFieldObjects.
        'name': 'Triblend Android T-Shirt',     // Name or ID is required.
        'id': '12345',
        'price': '15.25',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Gray',
        'quantity': 1,
        'coupon': ''                            // Optional fields may be omitted or set to empty string.
       },
       {
        'name': 'Donut Friday Scented T-Shirt',
        'id': '67890',
        'price': '33.75',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Black',
        'quantity': 1
       }]
    }
  }
});



Ну т.е. разница во вложенности объекта и том, что ожидает gtm от вас получить.


Берем второй вариант для примера. Сразу на дурачка пробуем обратиться следующим образом на живом Костромском сайте с ювелиркой.

dataLayer[2].ecommerce.purchase.products[0]
Object {name: "Подвеска Т100631501", id: "2154236", price: "11180.00", brand: "test", category: "test"…}


Ну т.е. глобально наша идея, что можно использовать custom html tag, внутри него js, который будет обращаться к уже проинициализированному объекту - в порядке.


Дальше дело техники, вот так (простите за говнокод) можно пройтись по массиву с продуктами из enhanced e-commerce


for (var object in dataLayer) { if(dataLayer[object].ecommerce) for (var asd in dataLayer[object].ecommerce.purchase.products) console.log(dataLayer[object].ecommerce.purchase.products[asd].name + " " + dataLayer[object].ecommerce.purchase.products[asd].id + " " + dataLayer[object].ecommerce.purchase.products[asd].price) }


а вот так - по традиционному e-commerce


for (var object in dataLayer) { if(dataLayer[object].transactionId) for (var asd in dataLayer[object].transactionProducts) console.log(dataLayer[object].transactionProducts[asd].name + " " + dataLayer[object].transactionProducts[asd].price) }


Ну и соответственно используя этот метод можно набрать себе массив того, что вы будете отправлять уже дальше, в Метрику или куда подальше.


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

Дальше - интересней.

Вы можете создать макрос типа
И дальше обращаться к нему из custom html как к {{goods}}[0].price 
Идею вы уловили. 

Комментариев нет:

Отправить комментарий