如何对 datalayer.push 进行排序?

How to sequence datalayer.push?

提问人:Michael Hammer 提问时间:5/5/2023 更新时间:5/6/2023 访问量:181

问:

我有一个关于GA4增强型电子商务跟踪和GTM的问题 - 尽管问题并非特定于GA4或电子商务跟踪。

现状

  • 该商店确实使用以用户为中心的 cookie 管理解决方案
  • 所有 GTM 标签仅在用户接受必要的 cookie 时才有效:在用户与 cookie 通知交互后,Usercentrics 会执行一个名为“consent_status”的 datalayer.push 事件,并根据值 GTM 标签 shoo 或不
  • 在结帐时,有一个名为“begin_checkout”的 DataLayer.push 事件

问题在 GTM 调试模式下,我可以看到,begin_checkout在consent_status之前拍摄,因此 gtm 不处理 begin_checkout 的数据层值。

问题是否有可能在consent_status后对begin_checkout进行排序?数据层的顺序取决于什么?

进一步的想法

  • 基本的跟踪功能(例如网页浏览量)可以正常工作
  • 像“add_to_cart”这样的 datalayer.push 也可以正常工作,但结帐方法不同:当将项目添加到卡片时,add_to_card Datalayer 在页面源代码中可见,但只有在用户与网站交互并单击带有文本“添加到购物车”的按钮之后 - 在此之前没有名为“add_to_card”的 datalayer.push。因此,当然,consent_status事件已经处理完毕,数据层的排序是正确的
  • 相反,在结帐页面上,DataLayer.Push 事件直接拍摄,无需进一步的用户交互。这里 Datalayer.push 的排序很重要,但我不明白如何在电子商务事件“begin_checkout”之前优先考虑以用户为中心的事件“consent_status”

我试过了什么

  • 我尝试删除有关用户中心和 gtm 的 async、dns-prefetch 和 preconnect 标签
  • 我尝试玩弄脚本的顺序,但没有结果
google-tag-manager google-datalayer 排序

评论


答:

0赞 BNazaruk 5/6/2023 #1

看起来您的方法不是最佳方法。玩弄事件排序是一件非常值得避免的事情。

这里好的解决方案是找出同意信息的存储位置(在大多数情况下是 cookie 或本地存储),然后直接从那里读取,而不是等待第三方回调为您执行。

而且,这不仅仅是您的begin_checkout的问题。在其他情况下也可能发生这种情况,由于您没有注意或由于没有那么明显的竞争条件,您没有看到它。因此,您可能需要重新审视如何阻止其他规则触发。

您唯一想等待的地方是网页浏览量。并且仅在尚未给予同意的情况下。因此,您只需在网页浏览量上设置两个触发器:一个带有 Cookie 拦截器/异常的普通网页浏览触发器,另一个用于侦听同意管理系统回调的触发器。这样一来,给予同意的人就会被毫不拖延地跟踪,而尚未给予同意的人在他们给予同意之前不会被跟踪。