更新时间:2026年6月7号
GA4 Measurement Protocol(简称 MP)是一套用于向 GA4 直接发送事件的 HTTP 接口。
它适合记录无法由网站 Google tag、GTM 或 Firebase SDK 自动收集的互动,例如 CRM 状态变化、线下转化、POS 交易、IoT 设备事件,以及邮件打开等发生在网站外的行为。
Measurement Protocol 的作用是补充网站或 App 的正常数据采集,而不是完全取代 Google tag、GTM 或 Firebase SDK。若只依赖 MP,部分用户、会话、归因和设备数据可能不完整。
什么是Measurement Protocol?
Measurement Protocol 使用HTTPS POST请求,将JSON格式的数据发送到GA4,数据流程是:
你的服务器 → GA4 Measurement Protocol → GA4事件
常见用途包括:
- 关联线上和线下行为;
- 上传服务器端发生的事件;
- 发送 CRM、ERP、POS 等系统中的业务事件;
- 记录无法安装 GA4 SDK 的设备或应用行为;
- 将邮件Pixel请求转换为email_open事件。
相比GA4数据导入不同,Measurement Protocol 是发送事件,而不是批量导入已有报表数据。它适合在事件发生时,由受控的服务端环境提交数据。
Measurement Protocol 请求的基本结构
GA4 Measurement Protocol 仅支持HTTPS POST请求。
请求地址为:
https://www.google-analytics.com/mp/collect
Web数据流请求URL必须包含measurement_id和api_secret
请求Body使用JSON格式:
{
"client_id": "1234567890.1234567890",
"events": [
{
"name": "tutorial_begin",
"params": {
"tutorial_name": "ga4_measurement_protocol"
}
}
]
}
其中以下是必要字段:
| 字段 | 说明 |
|---|---|
| measurement_id | GA4 Web 数据流的衡量 ID,例如 G-XXXXXXXXXX |
| api_secret | 在 GA4 数据流中创建的 Measurement Protocol API Secret |
| client_id | 匿名客户端标识 |
| events | 要发送的事件数组 |
| events[].name | 事件名称 |
| events[].params | 事件参数 |
单次请求大小最大为16 KB,最多可包含25 事件;每个事件最多包含25个参数。事件名称和参数名称只能使用字母、数字和下划线,并且必须以字母开头。
API Secret必须保存在服务器环境变量中,不能放进网站前端 JavaScript、邮件 HTML。
创建Measurement Protocol API Secret
在数据流页面中,点击「Measurement Protocol API 密钥」就可以看到管理界面:
点击右上角的“创建”就可以获得一个API密钥。
API Secret不是用户身份验证机制。它泄露后,其他人仍可能向你的 GA4 发送伪造事件,因此应妥善保管并定期轮换。
如何使用Measurement Protocol发送事件?
Measurement Protocol 应由受控环境发送,例如网站后端、CRM 或 ERP 系统、Server-side GTM、云函数、内部数据处理程序。
虽然浏览器技术上也能发出HTTP请求,但不应从网页前端直接调用Measurement Protocol,因为这会暴露 api_secret。
以下是服务端JavaScript示例:
这段代码会向 GA4 发送一个tutorial_begin事件。
client_id:建议使用真实的client_id;如果获取不到真client_id,可以每位收件人生成不同的随机、伪匿名cid,不要将邮箱、邮箱 Hash、姓名、手机号或内部CRM用户ID直接作为client_id发送到GA4。
如何验证MP请求?
Google 提供 GA4 Event Builder 用于测试 Measurement Protocol 请求,可以用于:
- 验证事件格式
- 检查JSON是否正确
- 发送测试事件
上线前应先使用Event Builder或验证端点检查 Payload。
设置如下:
点击Validate event验证这个事件:
验证是有效的,接下来再点击一下将这个数据发送给GA4,到实时报告中看:
事件已经被接收到了,表示这样的数据结构发送是没问题的。
常见问题
数据归因到(not set) / (not set)
很多MP实施后会遇到:数据都划分(not set) / (not set)
原因是MP事件本身不会产生会话。
果要让MP事件关联到用户已经存在的会话,需要发送session_id和engagement_time_msec(距离上一个事件的时间不要超过24小时)
建议不要为了让数据“看起来有会话”而随意生成 session_id 或填入虚假的 engagement_time_msec。这会制造不存在的网站会话,污染会话数、参与度、跳出率及渠道报表。
如果事件本来就发生在网站外,例如邮件打开、线下交易或 CRM 状态变化,也可以不传 session_id,将它作为独立事件分析。
New Users是0
如果网站完全依赖Measurement Protocol上传数据,会发现New Users为0。
这是因为New User是基于first_visit/first_open事件计数,这两个事件属于GA4自动收集事件。
不能通过Measurement Protocol 主动发送,也不会自动产生,所以GA4 无法识别新用户,因此 New Users 通常都会是 0
如何跟踪邮件打开?
解决方式是在邮件中加入透明的 Tracking Pixel。邮件客户端或图片代理加载图片时,请求先发送到你的服务器;服务器再通过 Measurement Protocol 将这次请求发送为 email_open 事件。
总结
Measurement Protocol是GA4的服务端事件接口,适合补充网站或App无法自动收集的互动。
实施时应记住:
- GA4 MP 仅支持 HTTPS POST 与 JSON Payload;
- Web 数据流使用 measurement_id、api_secret 与 client_id;
- api_secret 必须只保存在受控服务端环境;
- 需要关联真实网页会话时,才传递真实 session_id;
- engagement_time_msec 应反映真实参与时长,不能随意填充;
- 邮件打开、CRM 变化等站外行为,可以作为独立事件发送;
- MP 不能代替网站 Google tag、GTM 或 Firebase SDK。




