防止 Google 跟踪代码管理器在本地主机上触发代码

问题描述 投票:0回答:2

我已在我的网站上成功安装了 Google 跟踪代码管理器。我已经开始从 Google 跟踪代码管理器触发一些事件,并且在使用 tag Assistant debugger 时可以看到它们出现。我已经设置了将事件发送到 Google Analytics 的标签,并且可以看到数据管道运行良好。

我想要做的是有一种简单的方法来配置所有类型为

GA4 Event
的标签,以便在非生产环境中发生触发器时not 触发。我希望我的触发器能够在非生产环境中工作(以便我可以调试触发器),我只是不希望在非生产环境中将事件通过管道传输到 Google Analytics。有没有一种简单的方法可以在 Google 跟踪代码管理器中进行设置?

我注意到,运行标签助手调试器时,有一个名为

debug_mode
的字段设置为 true。我尝试在本地环境中进行设置,如下所示:

export function maybeSetDebugMode() {
  if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') {
    window?.dataLayer?.push({"debug_mode": "true"})
  }
}

但似乎即使使用此代码,我的自定义事件仍继续通过管道传输到 GA:

从广义上讲,是否有一种方法可以将跟踪代码管理器配置为在满足特定条件(例如网址匹配或具有特定值的其他事件字段)时不将事件传送到GA?或者,是否可以将 Google Analytics 配置为在摄取过程中忽略满足某些条件的事件?

google-analytics google-tag-manager google-analytics-4
2个回答
3
投票

是的,有一些非常优雅的解决方案可以避免从底层或预览/调试向您的产品 GA 发送事件。是的,有一种方法可以阻止 GA 接受这些事件。

我将从前者开始,因为它更合适。

通常,要开始从 GTM 向 GA4 发送事件,您必须至少有一个要求您提供测量 ID 的 GA4 配置标记。好吧,没有人强迫您只提供测量 ID。给它一个 CJS 代替:

然后只需在您的配置标记中引用它,如下所示:

一般来说,这应该可以满足您的要求。每当您处于较低的环境中,或者当主机名是 localhost、well 或 127.0.0.1 时,或者当您在 prod 上预览容器时,或者您认为合适的其他任何位置时,您都会看到标签和触发器触发,但是您的关联事件将流入不同的 GA4 媒体资源。

关于不同的 GA4 属性。最好仍然收集较低的环境事件,而不是将它们发送到不存在的属性。有时您会想查看一些测试数据。只是不要将它与您的产品数据保存在一个属性中,但您知道这一点。

好的,现在让我们转向第二个选项。 GA4 当然有数据过滤器。与 GA UA 中的旧过滤系统(如大多数 GA4 功能)相比,这些过滤器还为时过早,但是,它们在某种程度上符合您的需求。特别是开发者流量过滤器。您必须向您希望在调试视图中可见但不显示在报告中的每个开发人员事件添加自定义参数。

考虑到 GA4 的原始性和缺陷以及其中的过滤器数量现在受到严重限制,我建议在 GTM 中解决它,并保留无法通过 GTM 解决的问题的过滤器。像分析垃圾邮件这样的东西,如果你收到的话。

GTM 有内置变量可供您参考。但大多数默认情况下都是禁用的。这里:

然后当您输入 {{ 并开始在 CJS 中输入 var 名称时,您将看到以下内容:

只需单击您需要的选项,它就会自动填充。

并且您应该将其视为引用变量返回的任何内容。大部分都是字符串。但你绝对可以返回一个函数并像

{{cjs that returns a function}}(param1, param2)
一样运行它。无论如何,我们正在做字符串,所以,在这里:

使用起来应该很舒服。引用内置变量的唯一尴尬的事情是很难在控制台中调试它们,所以我经常只是从全局变量中获取主机名,例如

window.location.hostname


0
投票

如果您想让事情变得简单,我建议使用查找表变量来输出直播域名的 GA4 流 ID:

GA4 LT variable configuration

对于任何其他主机名(*.local、localhost 等),GA4 流 ID 将是未定义的,并且不会发送任何命中。

© www.soinside.com 2019 - 2024. All rights reserved.