Google Tag Manager和Google Analytics 4(GA4)中手动触发page_view的规范方式是什么?

3
我的网站是一个单页面应用程序(SPA),不会更改浏览器历史记录或页面标题。因此,如果我想捕获页面查看事件,则我理解有两个选择:
  1. 为每个虚拟页面添加浏览器历史记录和唯一标题。
  2. 在SPA代码中手动触发页面视图。
我选择第二个选项。
我已经阅读了许多关于如何做到这一点的文章,它们往往会收敛到类似的建议,但它们总是有所不同。这可能是因为大多数文章是在GA4发布后不久编写的。在尝试这些文章中的大部分步骤之后,我并不确定我是否正确设置了虚拟页面查看。不幸的是,官方文档提供的指导非常少

或者,您始终可以在发送页面查看事件时显式设置页面参数,以确保准确性和清晰度。

当涉及到官方文档时,我只能找到使用gtag.js进行此操作的指南,但我没有使用它。我使用的是Google Tag Manager (GTM)。以下是我采取的步骤以及采取这些步骤的理由(除了一篇告诉我这样做的文章)。在列出这个列表之后,我会解释为什么我认为它没有正常工作。

  1. Login to GTM
  2. Create a Google Analytics GA4 Configuration but uncheck "Send a page view event when this configuration loads". I do this because, if I'm going to manually send page_view events, I don't want this configuration to send a duplicate.
  3. Create a custom event trigger named "Page Loaded". This allows me to control when I fire this trigger. There's nothing special about it yet. Here's how it looks: enter image description here
  4. On my SPA, I add this line above the GTM tag in the <header>:
    <script>
      window.dataLayer = window.dataLayer || [];
    </script>
    <!-- Google Tag Manager -->
    
  5. Elsewhere in my code, I manually use that dataLayer to fire my trigger:
    dataLayer.push({
      'event': 'Page Loaded',
      'page_url': ...,
      'page_title': ...,
    });
    
  6. Back in GTM, I create data layer variables for those two page_* fields: enter image description here
  7. I create a page_view tag that reacts to this trigger and uses those variables. enter image description here
  8. I click the preview button to see how it's working. enter image description here
现在,据我所知,这个标签在正确的时间触发并传递了所有正确的信息。但是我认为有问题的原因是:
如果我查看我的其他标签,Google Analytics hit信息具有页面位置页面标题值,这些值是实际页面的值,而不是虚拟页面(也就是我创建的自定义事件)。这个其他标签的触发器看起来像这样:

enter image description here

标签的样式如下:

enter image description here

谷歌分析的Hit(在标签助手页面上)看起来像这样:

enter image description here

那些红色箭头具有实际页面的值。 有什么步骤/配置我错过了吗?我期望所有标签都使用我的page_view标签的“页面标题”。
2个回答

3
好的,你新建的“事件标签”不是“配置标签”,而且你还没有将你的“配置标签”的“页面标题/位置”设置为你想要的值。由于你的所有其他事件只涉及“配置标签”,它们都会继承其默认设置,而不是你在“事件标签”中设置的内容。
如果你想要更改所有事件的“页面标题”和“页面位置”,我的想法是你应该:
1. 在你的“配置标签”的“要设置的字段”菜单中设置“page_title”和“page_location”参数值,而不是在“事件标签”中进行设置。
通过这样做,所有事件的“页面标题和位置”都将被设置为你想要的值。
请参考https://support.google.com/analytics/answer/11262438
  1. 通过配置>修改事件菜单手动修改page_titlepage_location

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

顺便提一下,我建议您只使用不同的标签来标记所需的内容。如果获取的数据过多,GA会对其进行抽样,从而使其变得无用。此外,为每个目的使用不同的标签使您更容易根据情况修改要收集的数据。


感谢您抽出时间编写此内容。虽然已经有一段时间了,但是在配置标签中是否有某些字段一旦设置后就无法在会话中修改的情况下?我只是想确保它不是“要设置的字段”。 - Daniel Kaplan
在整个会话期间没有完全设置的字段(至少我不知道有哪些)。例如自动记录的 Session ID 等标识会话本身的 Fields 可以应用;但我不确定。 另外,在一些研究之后,我发现无法通过随后触发的 Event tag 完全修改在 Configuration tag 上设置的 Fields,只有在再次触发 Configuration tag 时才进行刷新。如果在 Event tag 上进行修改,则修改后的值仅适用于相应的 Event 本身。请参阅:https://support.google.com/tagmanager/answer/9442095?hl=en - Leah
我有些困惑:如果在事件标签上进行修改,则修改后的值仅应用于相应的事件本身,这是什么意思?这是否意味着对于该事件,该值将不同,但如果下一个事件未设置该字段,则将使用配置标签中的值? - Daniel Kaplan
是的,这已经通过我进行的一些测试得到确认。如果有一个你想在某些时候重置的“字段”,你可以通过创建一个“page_view”“事件标签”来分离“page_view”事件,并在需要重置字段时触发“配置标签”。 (请参考本文的“注意事项#2”部分:https://ken-williams.com/guide/installation/should-you-manually-set-the-page_view-event-in-an-app-web-property-using-gtm/) - Leah
已经过去了几个月,但我认为如果您解释一下自己如何测试这些内容,这将有助于我(和许多其他人)。这是通过GTM的“预览”完成的吗? - Daniel Kaplan

1

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

很明显的解决方法就是将你的字段添加到点击标签中,然后就完成了。

我制作GA4标签的方式是创建一个单一的标签。所有内容都是变量,包括事件名称。所有逻辑都在正则表达式查找表或CJS中。或者两者都有:CJS使用rLUTs。

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

所以我基本上将GA4事件标签视为配置变量。在你的情况下,甚至可以将页面查看和点击事件合并为一个。

此外,没有历史更改是一个非常糟糕的做法,我会完全切换网站引擎。它会在其他地方引起严重问题,比如SEO。


fields并没有从settings变量继承。”我对这些术语不太熟悉。它们是GA4的概念吗(与GTM相对)?我也不确定CJS或rLUTs代表什么。关于您提出的单个标签的想法,那不是有点违背使用GTM的目的吗?为什么不改用gtag.js呢? - Daniel Kaplan
这些是GTM的概念。字段是您为标签设置的“事件属性”。settings变量是UA以前使用的,GA4标签使用配置标签,但从中继承的字段将停留在配置标签触发时的值,因此,您需要明确设置属性。 - BNazaruk
啊,我之前在博客里读到过你刚才说的话。我想我明白你的意思了,但是还有最后一件事我不知道该怎么做:我应该在哪里找到我要覆盖的ga4属性的名称呢?在预览中,它被称为“页面标题”(那个有大红框的图片),但通过实验,我已经发现我需要发送一个名为page_title的事件参数来更改该值。我在哪里可以找到映射参考? - Daniel Kaplan
1
是的,映射参考...嗯,再说一遍,GA4缺乏文档,特别是当你开始进行边缘情况的实现时,但这里应该足够你的目的:https://developers.google.com/analytics/devguides/collection/gtagjs/pages 还有更多信息请看这里:https://support.google.com/analytics/answer/9234069?hl=en 不要忘记关于引荐者。这对于归因很重要。 - BNazaruk
1
是的,有一个替代方案...您可以始终创建一个新标签,导出JSON,编辑它并将旧标签的尺寸复制到新标签中。我为一些客户/实现执行此操作,但我更喜欢只有几个标签,因为它有助于保持容器大小完整,并且更易于管理。 - BNazaruk
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接