Google analytics 现有谷歌分析事件和谷歌标签管理器

Google analytics 现有谷歌分析事件和谷歌标签管理器,google-analytics,google-tag-manager,universal-analytics,Google Analytics,Google Tag Manager,Universal Analytics,我已经在我的网站上实现了Google Analytics(GA),我通过GA(“发送”、“事件”…)发送了几个自定义事件函数,它运行良好 我正在试验谷歌标签管理器(GTM)。我已经删除了最初的GA代码段,现在我使用GTM在我的站点上注入GA标记,并且正确地跟踪了页面浏览。无法正常工作的是ga()函数发送的自定义事件 我注意到,GA create有tracker name变量,如 ga("create", "UA-12345678-1", {name: "gtm0123456789", allow

我已经在我的网站上实现了Google Analytics(GA),我通过
GA(“发送”、“事件”…)发送了几个自定义事件函数,它运行良好

我正在试验谷歌标签管理器(GTM)。我已经删除了最初的GA代码段,现在我使用GTM在我的站点上注入GA标记,并且正确地跟踪了页面浏览。无法正常工作的是ga()函数发送的自定义事件

我注意到,
GA create
有tracker name变量,如

ga("create", "UA-12345678-1", {name: "gtm0123456789", allowLinker: false});
和Google Chrome reports的Google Analytics调试器扩展
命令被忽略。未知目标:未定义

我发现send事件调用应该包括tracker name,所以它应该看起来像
ga(“gtm0123456789.send”,“event”,等等)
,但我不想更改所有现有的
GA send event
调用

我在GTM设置中将tracker name设置为空字符串(
Edit Tag->More settings->Advanced Configuration->☑ Tracker Name
,将文本框留空)现在它可以工作了,但我认为这不是一个很好的解决方案


是否有任何其他选项可以让我现有的
GA发送事件
呼叫并通过GTM使用事件跟踪?

最好的方法是使用GTM实现所有跟踪。它将使您能够更好地控制跟踪代码,并在部署新标记时具有更大的灵活性

有一种方法-您可以在标记管理器(高级配置,全局函数名)中重命名ga函数,例如,将其重命名为“real_ga”。然后,您可以在自己的页面中创建一个自定义ga函数,该函数从事件跟踪调用中获取参数并将其传递给真正的_ga-function(因此您只需要在一个位置更改跟踪器名称),或者更好地将其推送到数据层(然后您可以在GTM中使用数据层值进行事件跟踪)


但你为什么要这么做?你实际上没有问题,你只是对你的解决方法感到不好。正确的答案是,只要它能工作,就不要感觉不好。

我有类似的配置(谷歌标签管理器中的Universal Analytics标签),我想通过点击按钮触发事件

我用petriq的评论来解决我的问题,因此想添加我的注释

Universal Analytics默认事件代码采用以下格式:

ga("send", "event", ...);
您可以使用跟踪器名称从代码中触发Universal Analytics事件:

ga("gtmXXXXXXXXXX.send", "event", ...);
但是,每个gtm负载中的跟踪器名称都会发生变化,因此我更改了如下代码:

var trackerName = ga.getAll()[0].get('name');
ga(trackerName + '.send', 'event', { eventCategory: 'category1', eventAction: 'action1', eventValue: 0 });
希望有帮助

在GTM页面视图标签中,导航到更多设置>高级 配置选中“跟踪器名称”复选框,但保留该字段 空白


您可以保留GA代码段,但请确保没有复制任何点击,如页面浏览或其他事件。如果遇到同样的问题,在Tag Manager中设置一个空白的跟踪器名称会让人觉得可笑,但是它很有魅力。请做一些解释来理解你的答案这是一个很好的解决方案,特别是在以下情况下:你有一个工作的GA帐户,该帐户已更新为使用Google Tag Manager,特别是在单页应用程序中,很难将id附加到按钮和链接以外的内容。如何确保第0个索引跟踪器设置了“名称”字段。如果不是,它将给出一个错误。@ajayv ga至少包含一个trackeri同意。。。此处getAll()将返回跟踪器的数组。。现在您将找到第一个跟踪器的名称字段。。如果此跟踪器没有名称集该怎么办..另外getAll()将处理完整的DOM以收集所有跟踪器。。这可能不是发送跟踪器的好方法。。所以我所做的就是通过数据层将其发送到GTM。