Cookie 与归因
代码会写入哪些 cookie、保留多久,以及点击如何一直存活到转化发生。
归因模型#
归因采用最后一次被跟踪的点击,归因窗口在广告系列上设定。 标识符在访客到达时写入第一方 cookie,在转化时读取。新的点击会覆盖旧的点击。
这是写在广告主域名下的第一方 cookie。我们不使用第三方 cookie, 因此浏览器对第三方 cookie 的拦截不影响归因。真正会起作用的限制,是浏览器自身 对脚本写入的第一方 cookie 所设的规则。
写入的 cookie#
全部以 moclick_ 为前缀。具体出现哪些取决于广告系列以及入口 URL 中带有的参数——
没有对应参数就不会写入对应的 cookie。
| Cookie | 作用 | 有效期 |
|---|---|---|
moclick_click_id |
点击标识符,用于把转化归因到来源。 | 广告系列的归因窗口 |
moclick_native_cid |
Moclick 平台自有测量中的点击标识符。 | 广告系列的归因窗口 |
moclick_traffic_source |
流量来源,用于按发布商归因。名称后缀随广告系列中配置的参数而变化。 | 广告系列的归因窗口 |
moclick_msxt、moclick_eventid、moclick_udid |
该广告系列所使用的已签约媒体平台要求的会话、事件和设备标识符。仅在广告系列用到时才写入。 | 广告系列的归因窗口 |
__mclk_dprobe |
技术探针,用于探测浏览器允许在哪个域名下写入 cookie。不含访客数据。 | 10 秒 |
属性#
| 属性 | 取值 |
|---|---|
Path | / |
Max-Age | 广告系列的归因窗口。默认 30 天,最长 365 天 |
SameSite | Lax |
Secure | 在 HTTPS 下存在 |
Domain | 自动推断,或取 cookie_domain 的值 |
HttpOnly | 不设置——代码需要在浏览器中读取 |
域名推断#
为了让 cookie 在所有子域名下都有效,代码会沿主机名层级向上逐个测试候选域名, 每次尝试都写入并删除那个技术探针。浏览器接受的第一个域名即为最终选择。
如果一个都不被接受——这会发生在位于 Public Suffix List 上的域名,以及某些平台配置中——
cookie 就只写在当前主机上。归因在该主机内仍然有效,但无法跨子域名。
这种情况下请显式设置 cookie_domain,做法见
子域名与跨域。
本地存储#
除 cookie 之外,代码还使用浏览器存储保存两个技术标记:一个记录转化已经发送过, 以避免页面刷新时重复发送;另一个防止同一次访问被重复记录。两者都不含访客数据。
两者都能优雅降级:存储被阻止时,服务端去重会接管职责,集成继续正常工作。
归因窗口#
按广告系列配置,可设 1 到 365 天,默认 30 天。取值取决于产品的决策周期:
| 窗口 | 适用场景 |
|---|---|
| 1 到 7 天 | 冲动型购买、限时优惠、紧迫感型广告系列 |
| 30 天(默认) | 一般电商、线索获取 |
| 60 到 90 天 | 高客单价、考虑周期长、B2B |
| 90 天以上 | 特定场景。请审慎评估:过长的窗口会虚增归因,并削弱 cookie 的法律依据 |
修改归因窗口只影响改动之后写入的 cookie。已经存在的 cookie 会保持原有有效期直到过期。
归因在什么情况下不会发生#
| 情形 | 影响 | 缓解方式 |
|---|---|---|
| Cookie 已过期 | 转化没有来源 | 按真实决策周期扩大归因窗口 |
| 用户清除了 cookie | 转化没有来源 | 客户端无解 |
| 在另一台设备上转化 | 无法归因 | 用自有标识符做 S2S 回传 |
| 在另一个域名上转化 | 无法归因 | 通过 URL 传递,或使用 S2S 回传 |
| 无痕浏览 | 仅在同一会话内有效 | 无解 |
| 脚本拦截器 | 什么都不会写入 | S2S 回传 |
| 落地页上没有代码 | 什么都不会写入 | 在所有页面上安装 |
归因损耗是浏览器端跟踪的固有属性。当测得的量与实际结算的量出现偏差时, S2S 回传是补上这个差额的途径——它既不依赖 cookie,也不依赖 JavaScript。