Застрял с добавлением стандартной транзакции электронной торговли через GTM - PullRequest
0 голосов
/ 22 февраля 2020

Мы используем GTM для добавления GA на наш сайт. Стандартное отслеживание электронной коммерции включено в GA. Чтобы начать этот проект, я тестирую в нашей среде DEV, которая использует те же учетные записи GTM / GA. В GA отображаются только данные с реального сайта, поэтому DEV отфильтровывается (пока я не уверен, как это сделать). У меня две проблемы.

  1. Как настроить для «транзакции продуктов» значение l oop для товаров в корзине и отображать их отдельно, а не все вместе?
  2. Что мне делать, чтобы увидеть результаты в GA с сайта DEV - я не могу проверить это вживую - если я не создаю страницу noindex / nofollow stati c на живом сайте с поддельными данными, чтобы увидеть, он отправит его в GA.

Я создал тег GTM eCommerce для направлений GA: Тип тега: Google Analytics: Universal Analytics Тип трека : транзакция Настройки Google Analytics: Включить переопределение настроек в этом теге (у нас есть переменная GA, но я решил не использовать ее, если она может помешать) Идентификатор отслеживания: UA - ### ##### - #

Я создал триггер GTM eCommerce для направлений GA: Тип триггера: Просмотр страницы (DataLayer идет после сценария GTM) Этот триггер срабатывает on: Некоторые просмотры страницы Запустить этот триггер ...: URL-адрес страницы содержит / заказ / подтверждение

Страница подтверждения - это собственная страница, которая появляется после страницы отправки заказа.

Таким образом, DataLayer:

<script>
    if(window.location.pathname == "/order/confirmorder"){

    // capture values from the spans with the following classes
    var GAtransactionId = jQuery(".lblOrderNumber").text();
    var GAtransactionTotal = jQuery(".lblTotal").text();
    var GAtransactionTax = jQuery(".lblTax").text();
    var GAtransactionShipping = jQuery(".lblShippingHandling").text();

    // transactionProducts data from the spans with the following classes
    var GAsku = jQuery(".lblProductSKU").text();
    var GAname = jQuery(".lblProductSKU").text();
    var GAprice = jQuery(".lblYourPrice").text();
    var GAquantity = jQuery(".lblOrderItemQty").text();

    // Checking my variables before they go thru
    alert("GAtransactionId: " + GAtransactionId + " GAtransactionTotal: " + GAtransactionTotal + " GAtransactionTax: " + GAtransactionTax + " GAtransactionShipping: " + GAtransactionShipping + " GAsku: " + GAsku + " GAname: " + GAname + " GAprice: " + GAprice + " GAquantity: " + GAquantity);

    window.dataLayer = window.dataLayer || [];
            dataLayer.push({
                 'transactionId': GAtransactionId,
                 'transactionTotal': GAtransactionTotal,
                 'transactionTax': GAtransactionTax,
                 'transactionShipping': GAtransactionShipping,
                 'transactionProducts': [{
                         'sku': GAsku, // returns each item - but smooshed together
                         'name': GAname, // returns each item - but smooshed together
                         'price': GAprice,  // returns each item - but smooshed together
                         'quantity': GAquantity // returns each item - but smooshed together
                 }]
            });
        }
    </script>

В GTM Previe В режиме w я вижу текущие значения уровня данных: но если у меня в корзине более одного товара, то все «транзакции» будут все вместе.

transactionProducts: [
{
    sku: 'ABCDEFGHIJK''
    name: 'Blue CoatRed Coat',
    price: '$30.99$31.99',
    quantity: '11'
}
]

Как я могу l oop через'actionProducts ', чтобы показать каждый товар в корзине отдельно? Я думаю, что для l oop может подойти, но как бы я его настроить, а затем, где я бы добавил его в DataLayer, чтобы он ничего не сломал? Кроме того, мне нужно удалить знак «$» из результата (я знаю, как это сделать)?

И где я могу найти фильтр, который предотвращает отправку данных с сайта DEV через - так Я могу временно отключить его во время тестирования? И мне нужно опубликовать sh тег / триггер GTM, чтобы он действительно отправлял данные, или я могу использовать режим предварительного просмотра и ожидать увидеть данные DataLayer в GA Conversions> Электронная торговля> Обзор?

1 Ответ

0 голосов
/ 26 февраля 2020

Вы должны построить свой items объект, повторяющийся по элементам товара в вашей корзине, вместо того, чтобы получать объединенное текстовое значение всех span с: некоторый пример кода может выглядеть следующим образом:

var items = []
$('.some-product-selector').each(function () {
  items.push({
    'sku': $(this).find('.lblProductSKU').text(),
    'price': $(this).find('.lblYourPrice').text()
    // the same pattern for other fields
  })
})
// ...
dataLayer.push({
        'transactionId': GAtransactionId,
        'transactionTotal': GAtransactionTotal,
        'transactionTax': GAtransactionTax,
        'transactionShipping': GAtransactionShipping,
        'transactionProducts': items // use your items here
});
...