本指南介绍了如何将 Google Analytics Measurement Protocol 网站和应用数据流事件发送到 Google Analytics 服务器,以便在 Google Analytics 报告中查看 Measurement Protocol 事件。
请选择您想在本指南中查看哪个平台的信息:
设置请求格式
Google Analytics Measurement Protocol 仅支持 HTTP POST
请求。
如要发送事件,请使用以下格式:
POST /mp/collect HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json
PAYLOAD_DATA
必须在请求网址中提供以下内容:
api_secret
:Google Analytics 界面中生成的 API 密钥。如需创建新的密钥,请依次前往管理 > 数据收集和修改 > 数据流 > 选择您的数据流 > Measurement Protocol API 密钥 > 创建。
measurement_id
:与数据流关联的衡量 ID,可在 Google Analytics 界面的以下位置下找到:管理 > 数据流 > 选择您的数据流 > 衡量 ID。measurement_id
并不是数据流 ID。
您必须以 JSON POST 正文格式为 Measurement Protocol 提供请求正文。示例如下:
{
"client_id": "CLIENT_ID",
"events": [
{
"name": "login",
"params": {
"method": "Google",
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
}
]
}
虽然 session_start
是预留的事件名称,但创建新的 session_id
将会创建一个新会话,而无需发送 session_start
。了解会话的统计方式。
试用一下
以下示例展示了如何一次发送多个事件。此示例向您的 Google Analytics 服务器发送 tutorial_begin
事件和 join_group
事件,使用 user_location
字段包含地理位置信息,并使用 device
字段包含设备信息。
const measurementId = "MEASUREMENT_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
method: "POST",
body: JSON.stringify({
client_id: "CLIENT_ID",
events: [
{
name: "tutorial_begin",
params: {
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
},
{
name: "join_group",
params: {
"group_id": "G_12345",
"session_id": "SESSION_ID",
"engagement_time_msec": 150
}
}
],
user_location: {
city: "Mountain View",
region_id: "US-CA",
country_id: "US",
subcontinent_id: "021",
continent_id: "019"
},
device: {
category: "mobile",
language: "en",
screen_resolution: "1280x2856",
operating_system: "Android",
operating_system_version: "14",
model: "Pixel 9 Pro",
brand: "Google",
browser: "Chrome",
browser_version: "136.0.7103.60"
}
})
});
替换时间戳
对于请求中的每个事件,Measurement Protocol 会使用在以下列表中找到的第一个时间戳:
- 活动的
timestamp_micros
。 - 请求的
timestamp_micros
。 - Measurement Protocol 收到请求的时间。
以下示例发送一个请求级时间戳,该时间戳适用于请求中的所有事件。因此,Measurement Protocol 会为 tutorial_begin
和 join_group
事件分配 requestUnixEpochTimeInMicros
的时间戳。
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin"
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
]
}
以下示例同时发送请求级时间戳和事件级时间戳。因此,Measurement Protocol 会为 tutorial_begin
事件分配 tutorialBeginUnixEpochTimeInMicros
的时间戳,并为 join_group
事件分配 requestUnixEpochTimeInMicros
的时间戳。
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin",
"timestamp_micros": tutorialBeginUnixEpochTimeInMicros
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
]
}
限制
向 Google Analytics 发送 Measurement Protocol 事件时,存在以下限制:
- 请求最多可以包含 25 个事件。
- 事件最多可以包含 25 个参数。
- 事件最多可以包含 25 个用户属性。
- 用户属性名称不得超过 24 个字符。
- 用户属性值不得超过 36 个字符。
- 事件名称不得超过 40 个字符,只能包含字母数字字符和下划线,并且必须以字母字符开头。
- 参数名称(包括项参数)不得超过 40 个字符,只能包含字母数字字符和下划线,并且必须以字母字符开头。
- 对于标准 Google Analytics 媒体资源,参数值(包括商品参数值)不得超过 100 个字符;对于 Google Analytics 360 媒体资源,参数值(包括商品参数值)不得超过 500 个字符。
- 项参数中最多可以包含 10 个自定义参数。
- POST 正文必须小于 130kB。
- 发送到 Google Analytics 的应用 Measurement Protocol 事件不会在 Google Ads 中为应用用户填充搜索广告受众群体。
如需了解每个使用场景的其他要求,请参阅常见使用场景。