Google 标签管理器 -(增强型)电子商务 - 如何在 <body> 标签后加载 Javascript

Google Tag Manager - (enhanced) e-commerce - how to load Javascript after <body> tag

我仍在学习 Google 跟踪代码管理器和增强型电子商务跟踪,但我有几个问题,其中一些可能非常基础:

  1. 我们在第三方系统上使用网站 - 我的模板中 HEAD 标签内已经有 Google 标签管理器,使用 Universal (Google) 分析。但是,我们只想将电子商务交易(购买)数据放入 Analytics - 所以基本的电子商务跟踪就可以了,但我宁愿使用 增强型电子商务 跟踪因为它较新 - 尽管我的直接要求只是跟踪购买情况。

所以,我需要将推送交易数据发送到dataLayer中,但由于系统限制,我不能这样做。我只能将特殊的 Javascript 代码添加到我的 "checkout complete" 页面的 BODY 标记的末尾。

在线阅读,必须在 GTM 代码到位之前在 HEAD 中定义数据层。因为我不能这样做,所以我需要在 BODY.

末尾使用 Javascript 加载数据

这可能吗,如果可能的话怎么办?我想我可以使用这里提到的自定义 Javascript 变量来做到这一点:https://developers.google.com/tag-manager/enhanced-ecommerce#macro

  1. "macro"和上面link解释的"variable"是一样的吗?它说 "macro",但 Google 跟踪代码管理器允许我定义自定义 "variable",即 "Custom Javascript"。只是检查它们是否相同。

  2. 如果我将这段代码放在 Google 跟踪代码管理器中,它实际上 "run" 会在哪里?第三方系统在脚本执行期间为我定义了一些变量,我不知道 where/when(在结帐感谢页面的页面加载期间)它会这样做,所以为了安全起见,我宁愿拥有这个在 BODY 标签关闭之前页面末尾的脚本 运行 - 如果我在 HTML 中使用纯 Javascript 手动执行此操作。在跟踪代码管理器中,我如何告诉 Javascript 到 运行 "at the end of the page"?

提前致谢!

1 - 在 BODY 末尾的自定义 Javascript 中使用 dataLayer.push()。在交易数据中包含一个事件。

例如:

    dataLayer.push( 'event' : 'custom.transaction', 'ecommerce': {} );

您可以在此处查看电子商务对象结构: https://developers.google.com/tag-manager/enhanced-ecommerce#purchases

dataLayer.push() 在页面中包含 Google 标签管理器脚本后使用,因此您无需在页面头部定义它。只需将可用的电子商务数据转换为所需的结构即可。

然后您需要在 Google 跟踪代码管理器中设置自定义事件触发器,uses/matches 您的事件 value/name。

然后创建一个使用此触发器的 Universal Analytics 事件代码。为类别、操作和标签设置您想要的内容。在“更多设置”> E-commerce 下,选中“启用增强型电子商务”,然后选中“使用数据层”。

此事件仅用于将 Ecomemrce 数据传递到 Google Analytics。

2 - 宏与变量相同。您是正确的自定义 JavaScript 变量就是您所追求的。

3 - 代码位于 Google 跟踪代码管理器变量范围内,并在使用变量 and/or 且 Google 跟踪代码管理器状态发生变化时执行。您不能将此代码 运行 放在页面末尾。此代码还需要 access/scrape 页面中的值。为确保数据可用,您只能在设置为在 Window 已加载/DOM 就绪时触发的标签上使用此变量,具体取决于页面数据何时准备就绪。

我建议使用 dataLayer.push() 并且仅在 dataLayer.push() 不可能时才使用自定义 Javascript 变量方法。