转化对象
如何在确认页上报交易金额和标识符,以及每种情况下会发生什么。
声明方式#
在订单确认页上定义 window.MoclickConversion:
HTML确认页
<script> window.MoclickConversion = { value: 150.00, transaction_id: "ORDER-12345" }; </script>
它在文档中的位置无关紧要:放在全局代码之前或之后都可以。参见 转化是如何被侦测到的。
参数#
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | number | 数字字符串 | 建议 | 转化的金额。发送时保留两位小数。 |
transaction_id | string | 建议 | 订单、线索或事件的唯一标识符。这是去重的键。 |
技术上可选,实际运营中必填
代码接受 window.MoclickConversion = {} 并仍会尝试记录。省略它们的代价是:
-
没有
value:转化被记录为无金额。收入和 CPA 报表将残缺不全。 -
没有
transaction_id:去重只能退回到仅按点击标识符判断。 该访客因此每次点击只会记录一笔转化——同一用户的第二次购买会被当作重复项静默丢弃。
金额格式#
- 接受数字(
150.5)或数字字符串("150.50") - 小数分隔符必须用点号。逗号不会被解析
- 不要包含货币符号或千位分隔符
- 发送时始终保留两位小数;存储时也是两位小数
JavaScript示例
// 正确 { value: 1499.9, transaction_id: "A-1001" } // → 1499.90 { value: "1499.90", transaction_id: "A-1001" } { value: 0, transaction_id: "LEAD-77" } // 无收入的线索 // 错误 { value: "1.499,90", transaction_id: "A-1001" } // 逗号小数点 → 被忽略 { value: "R$ 1499,90", transaction_id: "A-1001" } // 货币符号 → 被忽略
如何选择 transaction_id#
它必须每笔转化唯一且稳定——同一笔订单无论页面刷新多少次, 都必须产生同一个标识符。
| 取值来源 | 是否合适 |
|---|---|
| 电商订单号 | 合适——这是默认选择 |
| 支付渠道的交易 ID | 合适 |
| CRM 中的线索 ID | 合适,适用于线索获取类广告系列 |
| 时间戳或随机数 | 不合适——刷新页面就会产生重复转化 |
| 客户 ID 或邮箱地址 | 不合适——同一客户的第二次购买会被丢弃 |
| 始终是同一个固定值 | 不合适——只有第一笔转化会被记录 |
不要把个人数据用作 transaction_id。把邮箱、身份证件号或电话号码放进该字段,
它们就会作为交易标识符被存储,从而毫无必要地扩大了所处理的个人数据范围。请使用订单号。
去重#
去重发生在两个彼此独立的层面。刷新确认页、通过浏览器历史回到该页,或收到重复的回传, 都不会产生重复转化。
浏览器端#
代码会在本地标记该转化已经发送过,从而避免页面刷新时重复发送。如果本地存储被阻止, 服务端去重会接管这一职责。
服务端#
以事件类型、点击标识符和 transaction_id 组成唯一键:
- 每个点击标识符只记录一条点击
- 每一对「点击标识符 +
transaction_id」只记录一笔转化 - 没有
transaction_id的转化只按点击标识符去重
重复请求按成功处理:响应正常,且不会写入两次。这让重发变得安全——参见 重发与幂等性。
同一页面上的多笔转化#
若要在不刷新页面的情况下记录多笔转化——比如购物车中拆分成多个订单、分步骤的订阅流程——
只需重新给该对象赋值。每一次赋值都会被侦测并处理,而不同的 transaction_id
可确保它不会被当成重复项:
JavaScript
window.MoclickConversion = { value: 150, transaction_id: "A-1" }; // 稍后,在同一次页面加载中 window.MoclickConversion = { value: 89.9, transaction_id: "A-2" };