Web Event SDK 接入指南
在客户网站中安装一次 SDK,在关键业务行为成功发生时调用事件。SDK 会负责生成事件 ID、保存待发送事件、批量请求和失败重试。
客户页面→Web Event SDK→统一事件服务
1. 安装 SDK
把下面代码放进所有页面的 <head>。服务方会为每个网站分配一个 token,请勿在不同网站之间混用。
<script>
window.EventRelay = window.EventRelay || [];
</script>
<script
async
src="https://pwa.qqqmob.com/event.js?v=20260110"
data-token="token"
data-require-consent="true">
</script>
请将示例中的
token 替换成服务方提供的实际值。v=20260110 是当前发布版本,请勿自行删除或修改,也不要修改 SDK 文件或采集接口地址。| 安装参数 | 是否必填 | 说明 |
|---|---|---|
data-token | 是 | 当前网站的公开接入标识,不是密码或服务端密钥 |
data-require-consent | 否 | true 表示获得授权前不保存或发送事件 |
data-click-param | 否 | 归因参数名,默认是 cid |
data-debug | 否 | 联调时可设为 true,正式环境请删除 |
2. 用户授权
当 data-require-consent="true" 时,应在用户同意统计或广告追踪后调用:
window.EventRelay.push(["consent", true]);
用户拒绝或撤回授权时调用:
window.EventRelay.push(["consent", false]);
撤回授权后,SDK 会清除浏览器中尚未发送的事件和已保存的归因令牌。
3. 调用事件
统一调用格式如下。该写法在 SDK 加载完成前后都可以使用:
window.EventRelay.push(["track", "事件名称", {
参数名: "参数值"
}]);
页面浏览
window.EventRelay.push(["track", "page_view"]);
搜索
window.EventRelay.push(["track", "search", {
query: "running shoes"
}]);
加入购物车
window.EventRelay.push(["track", "add_to_cart", {
content_id: "sku_123",
content_type: "product",
content_name: "Running shoes",
price: 9.9,
quantity: 2,
currency: "USD"
}]);
购买成功
window.EventRelay.push(["track", "purchase", {
content_id: "sku_123",
content_type: "product",
content_name: "Annual membership",
value: 19.8,
currency: "USD",
price: 9.9,
quantity: 2
}]);
多商品购买
window.EventRelay.push(["track", "purchase", {
value: 29.8,
currency: "USD",
items: [
{content_id: "sku_123", price: 9.9, quantity: 1},
{content_id: "sku_456", price: 19.9, quantity: 1}
]
}]);
purchase 必须在支付真正成功后触发。点击支付按钮、进入收银台或创建订单,都不能代替支付成功事件。4. 支持的事件名称
只使用下表中的固定事件名,不要自行创建事件名。
| 事件名 | 触发时机 | 必填参数 |
|---|---|---|
page_view | 页面或 SPA 路由展示完成 | 无 |
content_view | 商品或内容详情展示 | 无 |
button_click | 关键按钮被点击 | 无 |
form_submit | 表单成功提交 | 无 |
search | 用户完成搜索 | query |
add_to_cart | 商品成功加入购物车 | 无 |
add_payment_info | 支付信息添加成功 | 无 |
checkout_started | 结账流程开始 | 无 |
order_placed | 订单创建成功 | value |
purchase | 支付或购买成功 | value |
registration_completed | 注册完成 | 无 |
wishlist_added | 成功加入收藏 | 无 |
subscription_completed | 订阅完成 | 无 |
first_deposit | 首次入金完成 | 无 |
contact | 联系或咨询成功 | 无 |
download | 下载开始 | 无 |
credit_approval | 授信审批完成 | 无 |
loan_application | 贷款申请提交 | 无 |
loan_credit | 贷款审批通过 | 无 |
loan_disbursal | 贷款放款完成 | 无 |
credit_card_application | 信用卡申请提交 | 无 |
key_event | 业务关键事件 | 无 |
key_event_1 | 业务关键事件 1 | 无 |
key_event_2 | 业务关键事件 2 | 无 |
key_event_3 | 业务关键事件 3 | 无 |
ad_view | 页面内广告展示 | 无 |
ad_click | 页面内广告点击 | 无 |
5. 事件参数
| 参数 | 类型 | 说明 |
|---|---|---|
content_id | String | 商品或内容 ID |
content_type | String | 单商品传 product,商品组传 product_group |
content_category | String | 页面、商品或内容分类 |
content_name | String | 页面、商品或内容名称 |
currency | String | 大写币种代码;当前支持 BRL、IDR、USD |
value | Number | 订单总金额;purchase、order_placed 必填 |
price | Number | 单件商品价格 |
quantity | Number | 商品数量 |
query | String | 搜索关键词,供 search 使用 |
items | Array<Object> | 多商品列表;每项可包含商品 ID、单价、数量等参数 |
金额规则
所有金额使用数字,不要加币种符号或千位分隔符。例如 2 件商品、单价 10 美元,应传 price: 10、quantity: 2、value: 20、currency: "USD"。
数据安全
不要通过事件参数发送姓名、手机号、邮箱、身份证、银行卡、密码或其他个人敏感信息。页面 URL 的查询参数不会被 SDK 自动上传。
6. 点击归因参数
广告或跳转链接可能在落地页上携带 cid:
https://customer.example/landing?cid=OPAQUE_TOKEN
客户网站的 301/302 跳转、登录跳转、语言切换和 URL 规范化必须保留 cid。获得用户授权后,SDK 会保存该令牌 30 天,后续事件不需要手工传入。
7. SDK 发出的请求
客户业务代码只调用 EventRelay,不要直接请求采集接口。SDK 会自动发送:
POST https://event.qqqmob.com/collect
Content-Type: text/plain;charset=UTF-8
请求体示例:
{
"version": 1,
"token": "token",
"sent_at": "2026-08-26T08:00:00.000Z",
"events": [{
"event_id": "generated-event-id",
"name": "purchase",
"occurred_at": "2026-08-26T07:59:59.000Z",
"data": {"value": 19.8, "currency": "USD"},
"page": {"origin": "https://customer.example", "path": "/success"},
"attribution": {"click_id": "opaque-token"}
}]
}
- HTTP
2xx:事件已被采集服务接收。 - HTTP
4xx:token、域名、事件或参数不合法。 - HTTP
408、429或5xx:SDK 会保留事件并延迟重试。
如果网站启用了严格 CSP,需要放行:
script-src https://pwa.qqqmob.com
connect-src https://event.qqqmob.com
8. 联调与验收
- 使用服务方提供的测试 token 和带
cid的测试链接打开客户页面。 - 在浏览器开发者工具 Network 面板确认
https://pwa.qqqmob.com/event.js?v=20260110返回 HTTP 200。 - 完成一次真实测试动作,确认
https://event.qqqmob.com/collect返回 HTTP 202 或其他 2xx。 - 确认请求中的事件名、金额、币种和商品 ID 与实际业务一致。
- 由服务方确认事件已进入后台并完成最终验收。
单页应用需要在每次路由页面真正展示后调用一次 page_view。同一业务结果不要重复调用;SDK 会生成事件 ID,服务端也会进行重复事件检查。