在 Google 跟踪代码管理器和 Google Analytics 4 (GA4) 中手动触发 page_view 的规范方法是什么?

What is the canonical way to manually fire page_view in Google Tag Manager and Google Analytics 4 (GA4)?

我的网站是一个单页应用程序 (SPA),从不更改浏览器历史记录或页面标题。因此,据我了解,如果我想捕获 page_view 事件,我有两个选择:

  1. 为每个虚拟页面添加浏览器历史记录和唯一标题。
  2. 在 SPA 代码中手动触发 page_view。

我选择选项 2。

我已经阅读了很多关于如何做到这一点的文章,它们倾向于集中在相似的建议上,但它们之间总是有一点不同。这可能是因为大多数是在 GA4 发布后不久编写的。在尝试了这些文章中的大部分步骤后,我不确定自己是否正确设置了虚拟综合浏览量。不幸的是,the official documentation provides little guidance:

Alternatively, you can always explicitly set page parameters when sending a page_view event to ensure accuracy and clarity.

当谈到官方文档时,I've only been able to find guidance on doing this with gtag.js,但我没有使用它。我正在使用 Google 跟踪代码管理器 (GTM)。以下是我采取的步骤以及我采取这些步骤的理由(除了一篇告诉我这样做的文章)。在此列表之后,我将解释为什么我认为它无法正常工作。

  1. 登录 GTM
  2. 创建 Google Analytics GA4 配置,但 取消选中 “加载此配置时发送页面查看事件”。我这样做是因为,如果我要手动发送 page_view 事件,我不希望此配置发送重复项。
  3. 创建一个名为“页面已加载”的自定义事件触发器。这使我可以控制何时触发此触发器。目前还没有什么特别之处。这是它的样子:
  4. 在我的 SPA 上,我在 <header> 中的 GTM 标签上方添加了这一行:
    <script>
      window.dataLayer = window.dataLayer || [];
    </script>
    <!-- Google Tag Manager -->
    
  5. 在我的代码的其他地方,我手动使用 dataLayer 来触发我的触发器:
    dataLayer.push({
      'event': 'Page Loaded',
      'page_url': ...,
      'page_title': ...,
    });
    
  6. 回到 GTM,我为这两个 page_* 字段创建了数据层变量:
  7. 我创建了一个 page_view 标签来响应这个触发器并使用这些变量。
  8. 我单击预览按钮以查看它的工作原理。

现在,据我所知,这个标签在正确的时间触发并传递了所有正确的信息。但这就是我认为有问题的原因:

如果我查看我的 other 标签,google 分析命中 信息有 Page LocationPage Title 实际 页面的值,而不是虚拟页面(也就是我创建的自定义事件)。此其他标签的触发器如下所示:

标签如下所示:

Google 分析命中如下所示(在 Tag Assistant 页面上):

那些红色箭头具有实际页面的值。

有没有一些 step/configuration 我不见了?我希望所有标签都使用我的 page_view 标签的 Page Title

是的,那是因为字段没有从设置变量继承(我之前注意到 GA4 中的行为)或者你的 DL 变量的值在那个时候没有设置(这不太可能)。

一个明显的解决方法是将您的字段添加到点击标签并完成它。

我制作 GA4 标签的方式是制作一个标签。为了一切。它的所有内容都是变量,包括事件的名称。它的所有逻辑要么在正则表达式查找表中,要么在 CJS 中。或者两者兼而有之:使用 rLUT 的 CJS。

现在它可能看起来复杂和过度设计,但现在你的 GA4 设置的大小很小(记住:容器的大小是有限的),如果你喜欢你的 JS,它很容易管理(所有逻辑都在一个地方)并且您不需要每次需要触发新事件时都遍历所有维度。

所以我基本上将 GA4 事件代码视为配置变量。在您的情况下,您甚至可以将综合浏览量和点击事件合并为一个。

此外,不更改历史记录是一种非常糟糕的做法,我会完全切换站点引擎。它会在其他地方引起戏剧性的问题,比如 SEO。

好吧,您新创建的 Event tag 不是 Configuration tag,并且您还没有将 Configuration tagpage title/location 设置为您想要的值。 由于您的所有其他事件仅引用 Configuration tags,它们必然会 继承其默认设置 ,而不是您在 Event tag.[=28 中设置的内容=]

如果您想更改所有活动的 page_titlepage_location,我认为您应该:

  1. Configuration tagFields to Set 菜单中设置 page_titlepage_location 参数值,Event tag

-> 这样 all 您的事件 page title and locations 将被设置为您希望的任何值

->参考https://support.google.com/analytics/answer/11262438

  1. 通过配置>修改事件菜单
  2. 手动修改page_titlepage_location

->参考https://support.google.com/analytics/answer/10085872?hl=en&ref_topic=9756175#zippy=%2Cin-this-articlehttps://support.google.com/analytics/answer/11091026?hl=en#zippy=%2Cin-this-article

顺便说一句,我建议只标记您需要的内容,并为每个目的使用不同的标签。如果您捕获了太多数据,GA 将对其进行采样,从而使其无用。此外,为每个目的使用不同的标签,可以更轻松地根据情况修改您希望收集的数据。