Менеджер тегов Google и продвинутая электронная коммерция - транзакционные продукты

Я пытаюсь настроить расширенную аналитику электронной коммерции для чтения данных транзакций со страницы подтверждения заказа.

Я собираю данные из элементов Dom, так как это единственная доступная мне опция.

Я могу читать поля для TransactionId, транзакции, транзакции и т. Д., Но не могу прочитать транзакции. (Я могу прочитать только 1 продукт, но не более, если в заказе несколько продуктов).

Мой слой данных был добавлен как пользовательский HTML-тег, например:

<script>      
window.dataLayer = window.dataLayer || []  
    dataLayer.push({
        'transactionId': {{transactionId}},
        'transactionAffiliation': 'Company name',    
        'transactionTotal': {{transactionTotal}},
        'transactionTax': 0,
        'transactionShipping': {{transactionShipping}},
        'transactionProducts': [{
            'sku':  {{productCode}},
            'name': {{transactionName}},
            'category': 'Generic category',
            'price': {{transactionPrice}},
            'quantity': {{transactionQuantity}}
        }]
    });
</script>

Поля являются пользовательскими переменными JavaScript.

Например -

TransactionId -

function() {
    var transactionId = document.querySelector([id*='OrderNumberValue']").textContent;
return transactionId;
}

После запуска тега на странице подтверждения слой данных выглядит следующим образом (как видите, только 1 продукт транзакции возвращается, когда в заказе 2 продукта) -

Window Loaded:
    {event: 'gtm.load'}
    transactionId: '1000001',
    transactionAffiliation: 'Company name',
    transactionTotal: '10.00',
    transactionTax: 0,
    transactionShipping: '0.00',
    transactionProducts: [
    {
        sku: 'SAMPLE1',
        name: 'Sample product',
        category: 'Generic category',
        price: '5.00',
        quantity: '1'
    }]
}
{gtm.start: 1474472447660, event: 'gtm.js'}

Буду очень признателен за любые советы.

Спасибо

1 ответ

Решение

Это не совсем ответственно, если вы не показываете, как выглядит HTML для ваших продуктов, но в основном вы будете использовать Document.querySelectorAll для элементов, которые содержат продукты, а затем перебирать результаты и выбирать значения из внутренних элементов для каждый индивидуальный результат. Присвойте (временному) объекту product, добавьте в ваши TransactionProducts и т. Д. Для каждой итерации.

var results= document.querySelectorAll('.product');

transactionProducts = [];
for (i = 0; i < results.length; ++i) {
 result = results[i];
 tmp = {};
 tmp.price = result.querySelector('.sku').textContent;
 tmp.price = result.querySelector('.price').textContent;
 transactionProducts.push(tmp);
}

Не проверено или что-то еще (и, конечно, есть более элегантные способы итерировать нодлисты), но это должно дать вам представление.

Другие вопросы по тегам