第3章 Reach指标口径设计:定义曝光、点击、独立用户等口径,区分绝对值与渗透率,确定埋点触发时机
本章核心目标:统一团队对Reach指标体系中曝光、点击、独立用户三个基础口径的理解,明确绝对值和渗透率的业务含义与计算公式,并给出埋点触发时机的标准化判断逻辑。只有口径一致,RICE评分中的Reach才能在不同功能之间可比。
3.1 三大基础指标定义
Reach指标衡量功能触达用户的能力,核心包含三个层级:曝光(Impressions)、点击(Clicks)strong>、独立用户(Unique Users)。三者构成漏斗关系,每层口径必须严格区分“一次事件”与“一个用户”。
| 指标 | 口径定义 | 计数单位 | 典型埋点事件名 |
|---|---|---|---|
| 曝光(Imp) | 功能/元素被用户看到一次(进入屏幕可视区) | 次数(可累加) | view_impression |
| 点击(Click) | 用户对功能/元素完成一次主动交互(点击/触摸) | 次数(可累加) | element_click |
| 独立用户(UV) | 在选定时间周期内触发过曝光或点击的唯一设备/账号 | 人数(去重) | 基于user_id或device_id去重 |
⚠️ 常见口径混淆:曝光次数(Imp Count) ≠ 曝光用户数(Imp UV)。前者是PV口径,后者是UV口径。在RICE评分中,Reach得分应优先使用独立用户数(UV)而非曝光次数,避免因同一用户高频曝光而高估触达面。
3.2 绝对值 vs 渗透率
绝对值反映规模,渗透率反映相对覆盖力。两者在RICE评分中用于不同决策阶段:
| 口径类型 | 定义 | 公式 | 适用场景 |
|---|---|---|---|
| 绝对值 | 指标的实际原始数值 | 直接计数(去重或非去重) | 评估功能影响面、计算ROI、排定优先级 |
| 渗透率 | 指标占全体目标用户的比率 | 指标绝对值 ÷ 目标用户基数 × 100% |
对比不同功能在相同用户池中的相对触达效率 |
示例:某功能曝光UV为12万,目标用户基数为60万,则曝光渗透率 = 12万 ÷ 60万 = 20%。若另一个功能曝光UV为8万,渗透率也为20%,说明两者在目标用户中的相对触达力相同,但绝对值不同,需结合RICE其他维度决策。
RICE评分最佳实践:在评分卡片中同时展示“绝对值”和“渗透率”,用绝对值参与Reach分值计算,用渗透率作为辅助判断是否存在用户覆盖天花板。
3.3 埋点触发时机判断逻辑
不同指标对应不同的埋点触发时机,错误时机将导致数据偏差。下表给出标准化判断标准:
| 指标 | 触发时机 | 判断条件 | 反例(避免) |
|---|---|---|---|
| 曝光 | 元素进入浏览器可视区且停留 ≥ 300ms | IntersectionObserver.intersectionRatio > 0 |
页面加载即触发(未真正被用户看到) |
| 点击 | 用户手指/鼠标在元素上触发 click 或 touchstart |
事件冒泡至目标元素 | 同时触发 blur 或 focus 事件误计入点击 |
| 独立用户 | 每周期首次触发曝光或点击事件时标记 | 以日期+用户ID做首次命中判断 | 每次事件都重复计算用户计数 |
⚠️ 曝光埋点常见陷阱:仅依赖 DOMContentLoaded 或 window.onload 触发曝光,会漏掉首屏下方需要滚动才能看到的元素。必须使用 IntersectionObserver 或 scroll 事件配合可视区计算。
3.4 Reach指标口径分层关系图
下图展示从“原始事件”到“业务可评分指标”的口径流转过程,以及埋点触发时机在流程中的位置:
读图指引:自上而下依次经过“原始事件采集 → 触发时机过滤 → 核心指标计算 → RICE评分输入”。曝光和点击经过不同的过滤逻辑后,统一进入UV去重环节,最终生成绝对值与渗透率两个维度的输出。
3.5 维度拆解与看板结构
Reach指标在落地看板时,需要按以下维度进行拆解,以便定位触达瓶颈:
| 维度 | 拆解粒度 | 典型值示例 | 分析价值 |
|---|---|---|---|
| 时间 | 日 / 周 / 月 / 版本周期 | 2025-01-13 ~ 2025-01-19 | 观察功能触达的稳定性与趋势 |
| 用户分群 | 新用户 / 老用户 / 会员 / 非会员 | 新用户曝光渗透率 35% | 判断功能是否对新用户友好 |
| 渠道 | 首页入口 / 搜索结果页 / 推送 | 首页入口点击UV占比62% | 优化高流量入口的转化效率 |
| 设备/平台 | iOS / Android / Web | Web端曝光UV渗透率偏低 | 定位平台兼容性或性能问题 |
3.6 异常解释与排查 checklist
当Reach指标出现异常波动时,按以下顺序排查:
- 确认埋点是否正常触发:检查事件日志中
view_impression和element_click的数量级是否与版本发布时间吻合。 - 检查触发时机逻辑:是否因前端代码合并导致
IntersectionObserver被误移除或延迟初始化。 - 验证去重口径:确认 UV 计算使用的用户 ID 字段是否完整,是否存在空值或匿名 ID 暴增。
- 对比渗透率与绝对值:若绝对值下降但渗透率不变,说明目标用户基数同步缩小(如版本灰度范围调整),非功能本身问题。
- 核对维度变化:拆解到渠道/平台维度,查看是否存在某个渠道的曝光量骤降,定位到具体版本或配置变更。
⚠️ 高频异常场景:“曝光 UV 正常但点击 UV 接近 0”。优先排查按钮元素的 click 事件是否被父容器拦截,或埋点代码是否在 A/B 实验对照组中被移除。
3.7 业务动作与复盘分析
基于Reach指标数据,可驱动以下业务动作与复盘结论:
| 数据信号 | 可执行的业务动作 | 复盘分析结论模板 |
|---|---|---|
| 曝光渗透率低(< 10%) | 增加功能入口、优化推荐策略、调整曝光时机 | “功能入口层级过深,需提升至首屏或首页” |
| 点击率(CTR)低于预期 | 优化文案/视觉样式、调整按钮位置 | “用户对当前功能价值感知不足,需强化引导” |
| UV 绝对值高但渗透率停滞 | 扩大目标用户池定义或调整推广渠道 | “功能已触达存量核心用户,需拓展新客群” |
| 设备维度渗透率差异大 | 针对性兼容优化或分平台灰度策略 | “Android端曝光性能瓶颈,需优化渲染速度” |
3.8 埋点配置示例
以下是一个基于 IntersectionObserver 的曝光埋点配置示例(JavaScript + 自定义事件上报):
// 曝光埋点 - 基于 IntersectionObserver
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const element = entry.target;
const startTime = performance.now();
// 等待 300ms 确认用户真正看到
setTimeout(() => {
const endTime = performance.now();
if (endTime - startTime >= 300) {
window.dataLayer.push({
event: 'view_impression',
element_id: element.dataset.trackingId,
timestamp: new Date().toISOString(),
view_duration_ms: endTime - startTime
});
}
}, 300);
// 可选:只触发一次
observer.unobserve(element);
}
});
}, { threshold: 0.0 });
// 注册需要追踪曝光的元素
document.querySelectorAll('[data-tracking-id]').forEach(el => observer.observe(el));
📌 埋点验收检查项:上线前请确认 (1) 埋点事件名与产品文档一致;(2) 触发时机满足可视区+300ms条件;(3) user_id 字段在曝光事件中非空;(4) 测试环境已验证曝光次数与手动计数的误差在 ±5% 以内。
3.9 本章要点汇总
- 三大基础指标:曝光(次数)、点击(次数)、独立用户(去重人数),单位不同不可混用。
- 绝对值 vs 渗透率:绝对值用于评分计算,渗透率用于评估触达效率与天花板。
- 触发时机:曝光必须满足可视区 + 300ms 停留;点击使用原生 click/touchstart 事件;UV 按周期首次命中做去重。
- 看板维度:至少包含时间、用户分群、渠道、设备四个拆解维度。
- 异常排查:遵循“埋点触发 → 时机逻辑 → 去重口径 → 维度拆解”的链路。
- 业务动作:根据渗透率和点击率的组合信号,制定对应的入口优化、文案调优或客群拓展策略。