GTM多次触发相同事件



我有一个NextJS应用程序,使用GTM将事件传递给GA4。

我使用react-gtm-module包加载GTM,并按如下方式初始化它:

TagManager.initialize({
gtmId: process.env.NEXT_PUBLIC_GOOGLE_TAG_MANAGER,
dataLayer: {
user_id: user_id,
}
})

我创建了一个自定义事件'view_faq',它有两个变量(类别和描述)。我通过在按钮单击时调用一个函数来触发事件,该函数将推送到数据层。自定义事件触发器对所有名称为'view_faq'的事件触发。

const handleClick = (index) => {
window.dataLayer.push({
event: 'view_faq',
category: 'faq',
description: 'This is a FAQ item',
})
}

当我这样做时,我看到事件在标记助理(调试模式)中触发,并且我看到事件与GA4调试视图中的正确变量一起出现。

我遇到的问题是事件连续触发大约10次。所以我在Tag Assistant和GA4中多看到了10次。我的非自定义事件都没有这样做(例如,页面浏览量,按钮点击)。

查看每个触发的事件和相应的API调用,似乎只有传递给数据层的内容随着参数engagement_time_metrics而变化…

第一个API调用是…

dataLayer.push({
event: "view_faq",
category: "faq",
description: "This is a FAQ item",
gtm.uniqueEventId: 11
})

后续的10个API调用如下所示,例外的是每次只有'engagement_time_msec'字段改变。

dataLayer.push({
event: "view_faq",
eventModel: {
category: "faq",
description: "This is a FAQ item",
user_id: "...",
engagement_time_msec: 3572,   // <=== this is changing in each of the 10 calls...
client_id: "...",
session_id: "...",
session_number: 19,
session_engaged: 0,
page_location: "http://localhost/landing?gtm_debug=...",
page_referrer: "https://tagassistant.google.com/",
page_title: "My page",
language: "en-us",
screen_resolution: "2560x1440",
_user_agent_architecture: "arm",
_user_agent_bitness: "64",
_user_agent_full_version_list: "...",
_user_agent_mobile: "0",
_user_agent_model: "",
_user_agent_platform: "macOS",
_user_agent_platform_version: "12.6.0",
_user_agent_wow64: "0"
},
gtm.uniqueEventId: 11,
gtm.priorityId: 4
})

有谁知道这是什么原因吗?

也遇到过这个问题。问题在于,在GA4中,我们创建了一个自定义事件,当它与代码中的事件匹配时就会触发。这个自定义事件与代码事件具有完全相同的名称,因此它也会在匹配自身时触发。这创建了一个自定义事件触发大约10次的"无限"循环。

要重复此问题,请执行以下操作:

  1. 在GTM中用'my_test_event'作为事件名称创建一个触发器
  2. 在GA4中创建一个名为"my_test_event"的自定义事件,并在事件名称与"my_test_event"匹配时触发。编写一些代码将自定义事件推送到dataLayer上:
    window.dataLayer.push({
    event: 'my_test_event',
    })
    

在GTM中调试,您将看到多个事件为同一事件触发,因为GA4将其自定义事件'my_test_event'推送到数据层,然后GTM处理它并触发相同的标记。GA4事件有额外的数据,这就是为什么第二个和随后的事件有更多的信息。

Code Event ->GTM→GA4→GTM ->GA4 ->GTM→GA4(重复10次)

底线:为了避免这个问题,不要在GA4中创建一个自定义事件,当事件名称与自身匹配时触发。

遇到了同样的问题,并发现这是由于在GA4配置中不必要地创建自定义事件("从现有事件创建新事件")。

经过一些修改后,通过创建新标记和触发器并为事件赋予新名称解决了这个问题。在标签管理器中,新旧标签具有相同的设置(只是事件名称不同),但新标签的工作方式与预期一致。

最新更新