将数据发送到我的Google跟踪代码管理器的正确方法是什么?
我收到了Cookie通知,使用户有机会接受某些Cookie(性能,营销和分析)。到目前为止,我已经获得了该脚本来读取用户的选择:
...
if (e.detail.performance) {
setCookie('cookie_performance', e.detail.performance, 365);
}
if (e.detail.analytics) {
setCookie('cookie_analytics', e.detail.analytics, 365);
}
if (e.detail.marketing) {
setCookie('cookie_marketing', e.detail.marketing, 365);
}
...
但是,这只会在用户的浏览器中设置一个cookie。我想知道我的Google跟踪代码管理器容器中的用户是否接受了Cookie。
我已经阅读了有关使用dataLayer
的内容,但是我仍然无法在容器中配置触发器或标签。
每当用户接受某个cookie时,是否可以将事件发送到我的容器?
答案 0 :(得分:0)
好的。如果转到变量部分,然后单击“新建”,则变量类型的一个选择就是“第一部分Cookie”。
顺便说一句,如果代码中的“ 365”是指Cookie的生命周期(以天为单位)(我想是这样,因为365天是一年),请注意,在Safari和iOs上,Cookie生命周期会受到限制由于使用了新版本的“ Intelligent Tracking Prevention”,最多需要7天。
虽然使用Cookie可以在GTM上正常工作,但数据层通常是最佳做法(Cookie附带一些警告-浏览器可能不允许使用,Cookie的大小受到限制,每个域的数量受到限制等)。
答案 1 :(得分:0)
如前所述,在GTM中有内置的Cookie变量供您使用,这样,您可以在GTM代码中使用{{cookieVar_Name}}在if语句中引用这些变量。
但是,要回答有关GTM中有关这些cookie线索的问题,一种方法是可能将dataLayer.push事件与必要的数据一起发送。
例如,您可以修改当前代码以在设置这些Cookie时推送事件:
...
if (e.detail.performance) {
setCookie('cookie_performance', e.detail.performance, 365);
window.dataLayer.push({
event: 'performanceEvent',
cookie_performance: true
});
}
if (e.detail.analytics) {
setCookie('cookie_analytics', e.detail.analytics, 365);
window.dataLayer.push({
event: 'analyticsEvent',
cookie_analytics: true
});
}
if (e.detail.marketing) {
setCookie('cookie_marketing', e.detail.marketing, 365);
window.dataLayer.push({
event: 'marketingEvent',
cookie_marketing: true
});
}
...
这时,您可以创建一个名为“ marketingEvent”的自定义事件触发器,然后可以在操作或同意dataLayer.push时使用此触发器来触发标签。
关于读取回头客的cookie,您可以使用具有cookie读取功能的customHTML标记:
//This function can be used to retrieve a cookie and its value by its key(name)
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
getCookie(cookie_marketing);
或将cookie值存储在内置的GTM cookie变量中,并编写一条if语句:
if({{cookie_marketing}} == true){
// fire code here
}
希望这有助于您走上正确的轨道。