更新时间:2025年6月30号
第一方Cookie
GA4会将Client ID存储在第一方Cookie _ga里:
在GTM中点击「变量」—「新建」—「选择一个变量类型以开始设置」——「第一方Cookie」,命名为“cookie_ga”,做如下设置:
然后创建另一个变量,在GTM中点击「变量」—「新建」—「选择一个变量类型以开始设置」——「自定义 JavaScript」,命名为“Client ID-cookie”,做如下设置:
最后在GTM里预览测试,看变量Client ID-cookies会否能获取到Client ID:
可以准确获取到。
gaGlobal
GA4跟踪代码加载后,Client ID会被赋值到window.gaGlobal.vid里 ,可以在浏览器开发者控制台里查看:
可以通过自定义 JavaScript去获取Client ID,在GTM中点击「变量」—「新建」—「选择一个变量类型以开始设置」——「自定义 JavaScript」,命名为“Client ID-gaGlobal”,做如下设置:
最后在GTM里预览测试,看变量Client ID-gaGloba会否能获取到Client ID:
注意:gaGlobalh获取Client ID会比较慢,不建议使用。
gtag()
gtag()实际是使用Google tag API ,它是需要加载gtag.js才可以使用,也就是硬编码的方式。
如果是使用GTM,它默认是没有加载gtag,所以会报错”gtag is not defined” ,如果仍要使用,需要全局加载:
function gtag() { dataLayer.push(arguments); }
然后才可以使用gtag,受限于代码执行需要使用,并不能够在所有数据发送时,都执行了上述加载,所以可能会出现一些GA4跟踪比上述加载更快,导致获取不到Client ID,所以如果使用GTM,不建议通过这种方式去获取。
customTask
GA4中不支持customTask,所以使用不了。
前两种方式都会存在不能及时获取到Client ID的情况,也就是如果将其设置为自定义维度,会有一定比例的Not set。customTask就能及时获取到,但GA4还不支持。
延伸阅读:
- 认识GA4里所使用Cookie:_ga、_ga_<容器ID>和FPID
- 认识GA4里的Client ID(客户端跟踪和服务端跟踪)
- 「GA4」Client ID和User ID之间的区别
- 如何将GA4中的Client ID设置为自定义维度?