#google-tag-manager #google-datalayer
Вопрос:
Я настроил отслеживание, когда пользователь завершает покупку. Прямо сейчас я выполняю несколько нажатий на слой данных-я нажимаю на общую сумму заказа, а затем отдельно нажимаю на каждый товар в корзине:
dataLayer.push({
'total': total
});
for(let i = 0; i < data.length; i ) {
const product = data[i];
dataLayer.push({
'name': product.name,
'price': product.price,
'quantity': product.quantity,
'sku': product.sku
});
}
Приемлемо ли это? Я вижу в некоторых примерах, как вся покупка продвигается как один толчок (т. Е. Набор продуктов). Ведет ли GTM себя одинаково в обоих случаях?
Ответ №1:
Вы не следуете синтаксису. https://developers.google.com/tag-manager/enhanced-ecommerce#purchases продукты предназначены для аккуратного хранения в очень специфической структуре. Не просто втолкнули в DL в надежде, что GTM волшебным образом справится с отсутствием строгой структуры.
Ответ №2:
Ваш пример не сработает.
GTM обновляет внутреннее состояние переменных только тогда, когда вы нажимаете клавишу «событие» на слой данных. В вашем примере нет ключа «событие», поэтому GTM даже не заметит, что вы что-то нажали, по крайней мере, до тех пор, пока позже не произойдет какое-то другое событие.
Даже если вы добавили событие, ваш пример все равно будет работать не так, как ожидалось.
Так как вы вводите данные о продукте с названием ключей, ценой и т. Д. на верхний уровень слоя данных они будут перезаписываться при каждом новом нажатии (так как у вас не может быть дубликатов ключей в слое данных).
Вместо этого вы бы добавили продукты в их собственный массив в своем цикле, а затем переместили весь массив на слой данных:
var products = [];
for(i = 0; i < data.length; i ) {
const product = data[i];
products.push({
'name': product.name,
'price': product.price,
'quantity': product.quantity,
'sku': product.sku
});
};
dataLayer.push({
"products":products,
"event":"updateProductData"
});
Если вы хотите использовать это для электронной коммерции GA, было бы лучше следовать советам из другого ответа и построить свой слой данных в соответствии со спецификациями в документации.
Комментарии:
1. Понял. Но почему в документации на уровне данных ничего не говорится о структуре данных, в то время как документы электронной коммерции это делают? Вот что сбивает с толку.