GTM Cookie 变量值在 Cookie 仍设置时清除

GTM Cookie Variable Value Clears while Cookie is still set

我正在开发一个使用 GTM 容器有选择地显示跟踪像素的跟踪系统,但我 运行 遇到了一些麻烦。

设置基本上取决于客户端 cookie,该 cookie 在用户首次访问网站时根据 URL 字符串中的参数设置。目前这部分工作正常并且 cookie 被设置为适当的值。

问题是设置为获取第一方 cookie 值的 GTM 变量似乎无法在第一页之后实际获取值。 cookie 似乎仍然在浏览器中设置,所以我不明白为什么会发生这种情况。这就像当 GTM 刷新页面更改上的变量值时,由于某种原因它没有第二次看到 cookie。

如有任何关于如何解决此问题的想法或建议,我们将不胜感激!!!

更新:我发现问题在于我的 GTM 如何读取 cookie。似乎从我的 Wordpress/cart 路径到 Wordpress/checkout 路径的过渡。我想知道如何让 cookie 不那么具体,这样它就不会被限制在这样一个离散的路径上。看来目前我可以在 Wordpress/cart/* 路径上的任何地方访问它,但不能在 Wordpress/*

中访问它

我在 GTM 自定义 js 变量中像这样设置 cookie:

function() {
  return function(name, value, ms, path, domain) {
    if (!name || !value) {
      return;
    }
    var d;
    var cpath = path ? '; path=' + path : '';
    var cdomain = domain ? '; domain=' + domain : '';
    var expires = '';
    if (ms) {
      d = new Date();
      d.setTime(d.getTime() + ms);
      expires = '; expires=' + d.toUTCString();
    }
    document.cookie = name + "=" + value + expires + cpath + cdomain;
  }
}

使用在每个页面上触发的 GTM 标记并检查是否存在 cookie,如下所示:

    <script type="text/javascript">
  var source = '';
  if (window.location.search.indexOf('source=network1') !== -1) {
    source = 'network1';
  } else if (window.location.search.indexOf('source=network2') !== -1) {
    source = 'network2';

  }
  {{setCookieHelper}}('source', source, 2592000000);
</script>

任何关于如何避免路径如此特定于此 cookie 的想法将不胜感激。

因此,在对大量文档进行了漫长而冗长的审查之后,我意识到 document.cookie 设置 cookie 路径的方式使用当前页面作为默认页面。

例如,如果服务器 123.123.123.123 使用位于 123.123.123.123/folder/test/index.php 的文件中的 JS 设置 cookie,则 cookie 的路径参数将设置为 /folder/test/ 作为默认值。

这是一个问题,因为如果您使用 wordpress 购物车或出于某种原因正在更改目录,您将无法访问存储在该路径下的 cookie。 (例如,如果您让某人从 /folder/test 转到 /folder/checkout/,则 GTM 将不再看到该 cookie)

希望这对某人有所帮助!