【问题标题】:Existing Google Analytics events and Google Tag Manager现有的 Google Analytics 事件和 Google Tag Manager
【发布时间】:2015-04-30 05:00:18
【问题描述】:

我已经在我的网站上实现了 Google Analytics (GA),我通过 ga("send", "event", ...); 函数发送了几个自定义事件,它运行良好。

我正在尝试使用 Google 跟踪代码管理器 (GTM)。我已经删除了原始的 GA sn-p,现在我使用 GTM 在我的网站上注入 GA 标签,并且可以正确跟踪浏览量。不能正常工作的是我由 ga() 函数发送的自定义事件。

我注意到GA create 有跟踪器名称变量,如

ga("create", "UA-12345678-1", {name: "gtm0123456789", allowLinker: false});

和用于 Google Chrome 的 Google Analytics 调试器扩展报告 Command ignored. Unknown target: undefined

我发现发送事件调用应该包含跟踪器名称,​​因此它应该看起来像 ga("gtm0123456789.send", "event", ...);,但我不想更改我现有的所有 GA send event 调用。

我通过在 GTM 设置中将跟踪器名称设置为空字符串(Edit Tag -> More Settings -> Advanced Configuration -> ☑ Tracker Name,将文本框留空)快速修复了它,现在它可以工作了,但我认为这不是很好的解决方案。

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

【问题讨论】:

  • 您可以保留 GA sn-p,但请确保您没有重复任何点击,例如综合浏览量或其他事件。
  • 有同样的问题,在跟踪代码管理器中设置一个空白的跟踪器名称感觉很荒谬,但它就像一个魅力。

标签: google-analytics google-tag-manager universal-analytics


【解决方案1】:

最好的方法是使用 GTM 实现所有跟踪。它可以让您更好地控制跟踪代码,并在部署新标签时更加灵活。

【讨论】:

    【解决方案2】:

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

    但是你为什么要这样做呢?您实际上没有问题,您只是对您的解决方法感到难过。正确的答案是,只要它有效,就不会感觉不好。

    【讨论】:

      【解决方案3】:

      我有类似的配置(Google 跟踪代码管理器中的通用分析代码),我想在点击按钮时触发事件。

      我使用 petriq 的 cmets 解决了我的问题,因此想添加我的笔记。

      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 });
      

      【讨论】:

      • 这是一个很好的解决方案,尤其适用于以下情况:您有一个有效的 GA 帐户,该帐户已更新为使用 Google 跟踪代码管理器,尤其是在难以将 id 附加到其他内容的单页应用程序中而不是按钮和链接。
      • 如何确保第 0 个索引跟踪器设置了“名称”字段。如果,它不是那么它会给出一个错误。
      • @ajayv ga 包含至少一个跟踪器
      • 我同意...这里 getAll() 将返回跟踪器数组。现在您正在查找第一个跟踪器的名称字段。如果此跟踪器没有设置名称怎么办......跨度>
      • 此外,getAll() 将处理完整的 DOM 以收集所有跟踪器。这可能不是发送跟踪器的好方法。所以我所做的是通过 dataLayer 将其发送到 GTM。
      【解决方案4】:

      http://www.lunametrics.com/blog/2015/01/21/gtm-existing-tracking/

      在您的 GTM 网页浏览标签中,导航至更多设置 > 高级 配置。选中“跟踪器名称”复选框,但保留该字段 空白。

      【讨论】:

      • 请解释一下以了解您的回答
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2023-03-14
      • 2014-04-22
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多