自Google Optimize正式下线后,很多人以为GA4 已经“不能再做 A/B 测试”了。
实际上,只要你的需求不是特别复杂(例如不需要自动显著性计算、复杂流量分配或可视化编辑),仍然可以通过Google Analytics 4(GA4)和Google Tag Manager(GTM)完成基础 A/B 测试。
GA4上做AB测试的核心思路
GA4本身并不负责「分流」或「版本展示」,它的角色是记录实验结果。
因此,整体逻辑可以拆解为三件事:
1、开发负责分流:将用户随机分配到不同版本(A/B),并在页面上展示不同内容
2、通过参数标记用户属于哪个版本,常见方式:URL参数、Cookie、LocalStorage,如:
- 实验组带有参数A
- 对照组带有参数B
3、GA4 负责统计不同版本的行为与转化:通过GTM将参数设为用户属性(User Property),就可以在GA4报告里使用该维度用于区分数据,看分组的表现情况。
这种方式虽然不如专业实验平台(如 Optimize、VWO、Optimizely)那样精细,但足以完成简单的文案或按钮测试。
AB测试案例
假设现在有个活动页面上有个按钮,文案是“注册”,这个文案虽然清晰,但太中性、缺乏行动激励,想测试不同文案,比从以下几个方向去考虑:
| 优化方向 | 示例文案 | 说明 |
|---|---|---|
| 增加动词和紧迫感 | 立刻注册 / 立即加入 / 马上开始 | 让用户有“马上行动”的心理驱动 |
| 强调收益或结果 | 免费注册,开始体验 / 注册即可领取优惠 / 注册开启你的专属数据分析 | 让用户知道“为什么要注册” |
| 降低心理门槛 | 免费注册 / 一键注册 / 30秒完成注册 | 消除“注册很麻烦”的顾虑 |
内部讨论是选择“ 立即加入”去测试。
Step 1:开发添加AB参数(分流)
开发在分流逻辑(可由后端随机分配或前端脚本实现)中,为不同的访问者分配版本参数。例如:
- 实验组页面URL带上参数
?ab_version=A,文案是“ 立即加入” - 对照组页面URL带上参数
?ab_version=B,文案是“ 注册”
示例:
https://example.com/landing?ab_version=A https://example.com/landing?ab_version=B
Step 2:GTM中将参数设定为用户属性
把URL中的参数值传入GA4,作为用户属性保存。
首先,用变量获取参数,在GTM中点击「变量」—「新建」—「选择一个变量类型以开始设置」——「网页」,命名为“Version”,做如下设置:
然后将Version变量设置为用户属性(User Property)。
在GTM中点击「变量」—「新建」—「选择一个变量类型以开始设置」——「Google 代码:事件设置」,命名为“Common Event Parameter”,在Google Analytics User Properties里设置属性名称ab_version_cd(建议将属性名称命名为name_cd的结构,cd表示custom dimension),如下设置
Step 3:GA4自定义设置
这一步在GA4中启用自定义维度,使属性在报告中可见。
在GA4中点击「管理」——「自定义设置」——「创建自定义维度」,然后做如下配置:
保存后等待数据进入(通常24小时后生效)。
Step 4:AB测试数据报告
AB测试要监测不同版本的表现差异,你可以在GA4里生成报告,但我通常是分别将会话数、事件数下载下来,然后在Excel里计算点击率,再去对比:
| 组别 | 会话数 | 事件数 | 点击率 |
|---|---|---|---|
| 实验组A | 4478 | 657 | 14.67% |
| 对照组B | 4534 | 540 | 11.91% |
实验组A的点击率更高,胜出。
这种测试方式的优缺点
优点:不依赖第三方实验工具、实现成本低、完全可控、可定制、适合文案 / 简单 UI 测试
缺点:没有自动显著性分析;无可视化编辑;无流量比例控制;不适合复杂多变量实验
什么时候该用专业AB测试工具?
若需更复杂的实验(如用户分层、精确流量控制、多实验并行、可视化页面编辑等),建议使用Optimizely、VWO、Convert,延伸阅读:能与GA4结合使用的几个A/B测试工具




