先给结论:把“修复前”和“修复后”当作两段独立观察期,各自保留原始日志、口径说明和对照样本,不要用修复后的数据回写修复前的报表。重复触发往往来自页面事件绑定、异步回调或跨域跳转的叠加,单看转化总数无法判断是真实增量还是重复计数。保留两段记录的目的,是让投放、技术、运营三方对同一事实有可核对的依据,而不是先争论谁的数字对。
重复触发至少有三种可区分的原因:同一用户在一次会话内多次触发同一事件;同一转化被多个代码路径分别上报;统计口径把不同来源的同一动作合并。三者的证据不同,保留方式也不同。
如果连属于哪一类都没确认,先不要动上报逻辑。此时最该做的动作是导出一份带时间戳和来源标识的原始明细,按同一标识排序,看重复出现在哪个环节。这个动作的结果会直接决定下一步:属于会话内多次触发,就调整触发条件;属于多路径上报,就决定保留哪条路径;属于口径合并,就只改文档不改代码。
面对重复触发,团队通常在三件事之间选择,但三者并非都适用于同一阶段。
适用于修复方案尚未验证、且业务方需要继续看数的阶段。做法是修复前的记录原样存档,修复后的记录另起一份,两份都标注生效时间点。前提是你能明确说出修复是在哪一刻生效的,否则两段记录会互相污染。这个选择的代价是短期内报表数字偏高,需要在使用时说明。
适用于重复原因已经确认、且去重规则可以稳定复现的阶段。前提是去重规则要写清楚:按什么标识、在多长窗口内、保留哪一条。若规则只存在于某个人的记忆里,下次换人就会重新产生分歧。改写不等于删除原始记录,原始明细仍要留档,否则以后无法回溯规则是否合理。
适用于重复触发已经影响到出价或预算判断、但根因还没定位的阶段。做法是把该事件从当期考核口径中移出,改用另一个未被污染的动作作为参考。前提是存在这样一个替代动作,且它和原目标的业务含义足够接近。若没有替代项,退出考核只会让投放失去方向。
多个角色对同一事实理解不同时,争论往往停留在“我的报表显示多少”。更有效的做法是把分歧拆成可核对的项目,每一项都能被独立验证。
假设某次修复在周三上午上线,修复前一周日均记录为一百条,修复后一周日均记录为七十条。这个对比只能说明记录数变了,不能直接说明真实转化下降,因为修复前可能包含重复。要判断影响,需要取修复前后各一段可比区间,用同一去重规则重新计算,再看差值。这里的数字仅用于说明比较方法,不代表任何实际投放结果。
无论选择保留、改写还是退出,记录本身要能让后来者看懂,至少包含三件事。
需要提醒的是,记录数下降或某项统计归零,本身不能证明修复正确。它也可能来自流量结构变化、投放暂停、页面改版或统计链路中断。要排除这些解释,至少要看同一时段的流量来源和页面版本是否也发生了变化。把这些可能原因一并记下,下一步排查才有方向。
如果重复触发的原因还没定位,而修复动作又会影响正在跑的投放,比较稳妥的选择是先保留现状、只做记录,等确认根因后再动手。前提是你能接受短期数字偏高,并在内部说明这一点。反之,如果重复已经明显干扰出价判断,且存在可替代的参考动作,就可以先退出考核、同时继续排查。两种选择都成立,区别在于你更怕数字失真,还是更怕投放失去方向。
把修复前后的记录分开留存,并在文档里写清生效时间和口径,是让后续判断有据可依的最低成本做法。下一步该做什么,取决于你手上那份原始明细能否回答“这条记录为什么出现两次”这个问题。