读取Cookie或将信息发送到Google跟踪代码管理器

时间:2019-03-04 13:52:13

标签: cookies google-tag-manager google-datalayer

将数据发送到我的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时,是否可以将事件发送到我的容器?

2 个答案:

答案 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
}

希望这有助于您走上正确的轨道。