同一个提示说五遍就被投诉了:主动提醒要有频控与预算
提醒这件事有一个不太舒服的对称性:实现它最便宜的部分,恰好是用户最反感的部分。在同一条判断外面套一个定时器,就能”再提醒一次”,代码改动几行,测试用例甚至不用更新。接收方付出的是三样东西:手上操作被打断之后的重启成本、在旁人面前被公开提示的面子成本、以及一条判断反复出现所带来的被监督感。绝大多数被投诉的提醒不是因为内容写错了,而是因为它没有停止条件。

把提醒当成一种要分配的稀缺资源而不是一种功能,后面的问题会变得可解:谁有资格占用注意力、占用几次、什么条件下必须归还、额度用完之后怎么办。
一、每条提醒都由四段构成,第四段最常被省略
一条完整的提醒至少有四个环节:触发条件、呈现方式、用户可做的动作、停止条件。前三段几乎每个团队都会做,第四段最常被漏掉,漏掉的直接表现就是”关掉之后还会再弹”和”同一件事一天弹五次”。
判定一条提醒设计是否完成,可以看一句很硬的话:它能不能说出”在什么情况下不再出现”。说不出,就说明这条规则只有一个入口没有出口,剩下的都是运气。停止条件通常有四类来源,写规则时要明确是哪一类:
- 已有效应答:用户的下一步行为与提醒内容一致(看到改期通知后真的改了预约)。
- 条件本身消失:触发前提不再成立(待办已完成、风险已解除)。
- 用户显式关闭:点了”不再提醒”,这是承诺而不是偏好。
- 过期失效:提醒承载的信息有时效,过期后继续呈现只会误导。
其中第一条最容易做错。系统习惯把”已展示”当成”已送达”,把”已读”当成”已应答”,于是停止条件绑在了展示次数上:弹了三次就算提醒过了。真实情况是一条没人注意的横幅既没停止也没生效,用户要么没看见,要么看见了但没做任何事。必达类提醒的停止条件应该绑在应答上,绑在展示上只能得到”重复曝光”。
二、意图分级与打扰预算
预算的意思是:一个用户在一次会话里、一天里能承受的打扰总量是有上限的,这个上限是共享的,不是每条规则各自申请、系统免费发放。没有预算概念时,十条各自”一天提醒两次”的规则叠加起来就是二十次,而每一条单独看都很克制。
先按意图分级,因为不同意图的目标函数根本不同。
| 意图等级 | 判定问题 | 典型内容 | 必达性 | 允许的呈现上限 |
|---|---|---|---|---|
| L0 安全与风险告知 | 不提醒会造成人身、设备或资金损失 | 异常状态、超温、支付风险 | 必达,可中断当前操作 | 阻断式、语音、人工提示 |
| L1 合规保护类 | 规则要求必须展示到用户 | 使用时长提示、青少年保护说明 | 必达,不可关闭但可降噪 | 送达并记录,不占营销额度 |
| L2 本单必须确认 | 用户不选就无法继续 | 履约信息核对、改期确认 | 必达,但只在本单生命周期内有效 | 流程内嵌,不外溢到其他渠道 |
| L3 服务与经营建议 | 提醒了大概率省一步、避一次错 | 保养到期、补货、待办 | 可牺牲,预算内投递 | 角标、列表内嵌、弱横幅 |
| L4 营销与召回 | 目的是业务方拿转化 | 优惠、活动 | 可牺牲,需显式同意 | 只在弱呈现档位,不进阻断式 |
预算分配要落到三个粒度上:每会话、每日、每周。L3 与 L4 合并计数,L0 到 L2 不占额度但占次数上限——否则会出现”每条都合规、加起来是骚扰”。额度用完之后的动作也要定义清楚:是降级成弱呈现、延迟到下一个合适窗口,还是直接丢弃。丢弃必须是可查询的状态,不能是静默失败,否则规则改完无法解释为什么某条提醒没出现。
三、触发、呈现、确认、抑制四段状态机
第一节的四段讲的是一条提醒的内容结构,这一节的四段讲的是它在系统里的运行状态:前者回答”这条提醒由什么组成”,后者回答”命中之后由谁决定说不说”。
条件命中不等于要弹。这是抑制层存在的理由:它把”该不该说”从业务规则里独立出来,集中在一处判断。
- 触发:条件成立后先看上下文——用户此刻是否正在输入或处在流程的关键步、是否刚拒绝过同类提醒、屏幕上是否已经有一条同类在展示、当前是否处在不可中断的操作里(比如正在核对单据)。这四问任何一问为真,都应该走抑制而不是走呈现。
- 呈现:同一时刻只呈现一条,其余排队;同类合并成一条并带计数,而不是并排三条说同一件事。
- 确认:把展示、送达、应答三个状态分开记账。展示是渲染成功,送达是用户有机会看到(在可视区域且停留足够久),应答是行为与内容一致。必达类提醒要等到”送达”以上才算完成,等到”应答”才能停止。
- 抑制:规则要能写成可测的断言——同类合并、时间窗冷却、拒绝后降级为弱提示、显式关闭后不得再强提示。最后一条例外要写死:合规必达项不因用户关闭而消失,但可以因关闭而降噪。
一条策略可以声明成这样:
- id: maintenance-due |
这套声明的价值不在字段多,在于它强制每一条提醒都必须填 stop_when。评审时看这一列有没有值,比讨论文案要不要再客气一点有效得多。
四、呈现强度要按意图选,不能按点击率选
| 呈现方式 | 打断成本 | 被用户忽略的可能 | 适配等级 |
|---|---|---|---|
| 角标或未读点 | 极低 | 高 | L3、L4 |
| 列表内嵌一行 | 低 | 中 | L2、L3 |
| 自动消失的横幅 | 低到中 | 高 | L1、L3 |
| 需手动关闭的横幅 | 中 | 中 | L1、L2 |
| 中心弹窗(阻断操作) | 高 | 低 | L0、L1 |
| 语音播报 | 高,且旁人可闻、说了收不回 | 低 | L0 |
| 人工口头提示 | 最高,成本转给具体的人 | 低 | L0、L1 |
把营销内容放到最强档位,是最容易短期有效、长期失效的做法:强档位的注意力是借来的,用完一次,用户对这一档的信任就掉一点。反过来,把必达项放在弱档位,然后用”再弹一次”来补偿,等于用重复次数顶替呈现强度——这是同一个错误的两种写法。
五、有人在场时,提醒的成本会换一种形态付
线下柜台和门店场景里,系统给员工下发的任务提示,本质是让一个人对另一个人开口。如果考核口径是”提醒次数””话术完成率”,那么”顾客被反复提醒”不是执行走样,而是这套指标必然导出的结果:系统把不确定的转化,换成确定的执行动作,成本由现场人员和顾客承担。
处理方式是在系统层面限死次数,而不是在管理层面加压力:
- 已提醒次数作为字段回传到任务卡上,员工看得见,超过上限就不再派发该动作;
- 店内场景默认弱呈现——信息对员工可见,不默认对外发声;
- 语音播报要有场景开关,有第三人在场时降音量、换措辞或改为屏显;
- 同一件事在同一次到店过程中只允许发生一次,二次提醒需要员工显式确认理由。
合规与保护类提醒有另一套边界:必达、可以被降噪但不能被关闭、频次要有可引用的依据口径(规则要求的展示时机与次数),不能被当成曝光位复用。在同一条必达横幅里塞推广内容,会让这条横幅整体失去可信度,用户学会无视它之后,必达的那部分也一起失效了。
六、洹拓视角:把”少打扰”写成验收指标
度量要成组看,单看任何一项都会给出错误激励。
- 关闭率,以及关闭之后是否重新开启。
- 投诉与负反馈量,按提醒标识归因,而不是只统计总量。
- 有效应答率:应答数除以呈现数,这一项才是提醒质量的分子。
- 每用户每日有效打扰次数:把预算用没用满显示出来。
- 误触发率:不该弹却弹了的比例,通常来自条件命中但上下文不成立。
点击率高不等于体验好,它只衡量了打扰的收效,没衡量打扰的成本。真正能拿来对比方案的是一个组合口径:每换来一次有效应答,花掉了多少次呈现。这个数越小越好,而且它的改进方向是改判定条件,不是加提醒次数——这正是我们想激励的动作。
一份可以直接落库的提醒配置字段清单:
| 字段 | 作用 | 说明 |
|---|---|---|
| 提醒标识与所属场景 | 唯一键 | 抑制与合并按它分组 |
| 触发条件 | 何时算命中 | 表达式、数据来源、生效时段分开写 |
| 意图等级 | L0 到 L4 | 决定预算档位与呈现上限 |
| 渠道与档位 | 在哪儿、用什么强度 | 端上只允许降级,不允许升级 |
| 频次上限 | 会话、日、周三档 | 超预算的处理动作必须显式声明 |
| 冷却时长 | 一次呈现后的静默窗口 | 同类共用冷却 |
| 合并策略 | 合并计数或保留后到的一条 | 避免并排多条同源提示 |
| 停止条件 | 必填 | 应答、失效、条件消失、用户关闭,四选一或组合 |
| 例外规则 | 哪一级可突破预算 | 必达项如何记录与免打扰如何降噪 |
| 责任人与复盘周期 | 谁能改、多久审一次 | 复盘看命中率与负反馈分布 |
交付时我们会把两条写进验收条款:每条提醒必须有停止条件,没有的不进发布清单;抑制规则必须可测——给一段用户行为序列,断言第 N 次不再呈现。前者管设计完整性,后者管它是不是真的生效。一个团队会不会主动给提醒设预算和上限,比它能不能做出更醒目的弹窗更能说明工程成熟度。