【问题标题】:Reading cookies or sending info to Google Tag Manager读取 cookie 或向 Google 跟踪代码管理器发送信息
【发布时间】:2019-07-25 20:25:12
【问题描述】:

将数据发送到我的 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。我想知道用户是否接受了 cookie。

我已经阅读了有关使用 dataLayer 的内容,但我一直在配置容器内的触发器或标签。

是否可以在用户接受某个 cookie 时向我的容器发送事件?

【问题讨论】:

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


    【解决方案1】:

    当然。如果您转到变量部分并单击“新建”,则您所拥有的变量类型的一个选项是“第一部分 Cookie”。

    顺便说一句,如果代码中的“365”指的是 cookie 的生命周期(以天为单位)(我认为确实如此,因为 365 天是一年),请注意在 Safari 和 iOs 上 Cookie 的生命周期将受到限制由于他们的“Intelligent Tracking Prevention”的新版本,到 7 天。

    虽然对 GTM 使用 cookie 效果很好,但数据层通常是最佳实践(cookie 有一些注意事项 - 浏览器可能不允许它们,它们的大小是有限的,每个域的数量是有限的等等)。

    【讨论】:

      【解决方案2】:

      如前所述,在 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
      }
      

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

      【讨论】:

        猜你喜欢
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 2016-01-21
        • 1970-01-01
        • 2013-08-14
        • 1970-01-01
        相关资源
        最近更新 更多