如何使用 GTM 更新 Google Analytics 用户 ID?

How to update Google Analytics user id using GTM?

使用 gtag.js 我可以这样更改用户 ID:

gtag('config', 'G-XXXXXX', {
  'user_id': '12345'
});

改用 GTM,如何更改 Google Analytics 使用的用户 ID?

我目前所做的是在 GTM 中添加一个变量,并将其作为用户 属性“user_id”的值插入到分析的 TAG 中。

问题在于,以这种方式 Analytics 是使用初始 user_id 值初始化的。但在我的例子中,在单页应用程序上使用它,用户 ID 可以在已经初始化 GTM 之后更改,因此 Analytics,并且 dataLayer.push({ 'user_id': 'xxx' }) 没有对 Analytics 的影响。

dataLayer.push({ 'user_id': 'xxx' }) 本身可能没有效果,但那是因为您没有告诉 GTM 更新它的内部状态。

GTM 使用一些自定义代码覆盖数据层数组的“推送”方法,除其他外,这些代码扫描推送的对象以查找具有保留名称“事件”的键。只有找到该键,才会实际评估已推送到数据层的数据,并且在 GTM 界面的“变量”选项卡中配置的变量采用新值,如果确实为它们设置了新值新添加的数据层对象。 “事件”键还允许您创建触发器以使用更新后的值触发代码。

所以如果你这样做

dataLayer.push(
{ 
  'user_id': 'xxx',
  'event': 'updateUserId' 
}); 

您在 GTM 中的 user_id 变量将被分配新值,您可以创建一个“事件名称为“updateUserId”的自定义事件触发器”。例如,您可以向 Google 发送请求具有新值的分析(我不得不说变量名称“user_id”对于您显然希望改变很多的东西有点不高兴)。

如果在推送之后发生自动事件,例如有效的点击触发器或类似触发器。