Хотя ключевая концепция представлена в предыдущем ответе, есть и другие решения, которые могут дать вам лучшие результаты.
Таким образом, в основном вам нужно убедиться, что данные, которые вы хотите использовать изdataLayer доступен, когда ваш тег запущен.
Для этого вы можете задержать тег на событие Window Loaded, но вы должны знать, что это зависит от размера и типа контентавашей страницы, у определенного процента ваших пользователей не будет запущен триггер Window Loaded, поэтому вы можете пропустить часть ваших данных. (Они закрывают браузер, переходят на другую страницу до того, как будет загружено окно.)
Таким образом, другой вариант заключается в том, чтобы данные помещались в dataLayer до инициализации GTM . Таким образом, ваш код выглядел примерно так: он помещен над основным кодом GTM в <head>
:
<script>
var dataLayer = window.dataLayer || []; //define dataLayer, while avoiding overwriting its content
dataLayer.push({
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
Таким образом, событие просмотра страницы уже увидит эти данные.
Другой вариант будетчтобы оставить свой код на его текущем месте, но указать инициирующее событие , чтобы GTM узнала о новых данных:
<script>
dataLayer.push({
'event': 'productDataReady',
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
Таким образом, вам нужно изменить триггервашего тега в качестве пользовательского события, совпадающего со строкой, используемой в переменной event
. В этом случае данные доступны для данного конкретного события.
Также обратите внимание, что {{ dlv - productName }}
, вероятно, не следует использовать в качестве значения события, поскольку Google Analytics принимает только целочисленные значения, тогда как название продукта, вероятно,быть строкой.
Другое соображение: вы не указали (или, по крайней мере, не включили его в свой пост), что событие должно быть невзаимодействующим. Если вы сгенерируете интерактивное событие с загрузкой вашей страницы, при условии, что вы также запускаете просмотр страницы, вы получите крайне низкий показатель отказов.