提问人:rpman23 提问时间:9/12/2023 更新时间:9/12/2023 访问量:29
GTM dataLayer 数据如何从浏览器传输到 GTM 控制台?
How does GTM dataLayer data go from a browser to the GTM console?
问:
也许是一个非常明显的问题,所以请放纵我 - 用户浏览器上的数据层内容如何以及何时进入用户的 GTM 控制台/门户?
查看网络请求后,我看不到任何可能与此数据相对应的流量,但我的实现正在工作。我已经查看了 GTM 文档,也无法验证。那么,我们在 dataLayer 中跟踪的所有事件是如何到达 GTM 控制台/门户的呢?
需要明确的是,GTM 控制台中正在接收来自我的 GTM 实现的事件,但我不知道它是如何工作的?
我尝试在 Chrome 网络检查器中查看,但没有看到传输 dataLayer 的流量(这就是我预期的工作方式)
任何见解将不胜感激!
答:
简而言之:GTM 的 Web 容器在容器初始加载后不需要与其服务器通信。所有逻辑都在其中下载,所有决策都在本地进行。
好吧,你问这个问题是因为你有一些不正确的假设。这些是 GTM 初学者常见的误解。我只是快速浏览了一下 GTM 的文档,是的,它看起来没有努力更好地解释它,但这几乎是任何 TMS 的工作方式。
如果我们谈论的是数据目的地,则没有 GTM 门户或 GTM 控制台这样的东西。有一个带有 UI 的 GTM Web 界面用于编辑库的内容,但它不接收来自站点的流量。它所做的只是根据其 UI 用于配置它的方式来构建库。有一个 api 可以以编程方式管理它,但事实并非如此
如果我们谈论的是 Web-GTM,那么它只是一个 JS 捆绑包/库,您可以将其加载到页面上,然后从它直接将命中发送到跟踪端点,而这些端点都不是 GTM。
现在,它如何与 DL 一起工作。
当您将 GTM 容器的脚本加载到页面上时,它做的第一件事就是重写 dataLayer.push() 方法,向其添加一个侦听器,以便能够立即对推入其中的任何新内容做出反应。所有触发器/标记/变量逻辑都在 GTM 容器内的页面中,因此无需对数据进行后处理并将 DL 值发送到其他地方。
这就是为什么 GTM 需要 unsafe-eval 之类的东西来表示 CJS 变量,unsafe-inline 需要 unsafe-inline 来表示模板和 CHTML 标签的原因。
评论