先别急着把重复的转化事件删掉。更稳妥的做法是:把修复前的原始回传记录完整冻结,给每条记录标注它属于哪个版本,修复后再用同一套事件标识跑一遍对照。这样做的目的是让平台侧和业务侧都能看清“哪部分数据是旧逻辑产生的、哪部分是修复后产生的”,而不是把两段记录混成一份看起来干净却无法追溯的报表。是否要回滚或补报,取决于重复触发是发生在客户端上报、服务端回传还是平台去重环节,这三种情况的处理顺序并不相同。
信息流投放里的转化事件通常要经过三段路:页面或应用内的触发点、你自己的接收端、再回传给投放平台。重复触发可能出现在任意一段,判断错层会让修复动作打偏。
区分方法很直接:拿一条疑似重复的记录,去比对业务库里的订单号或用户动作唯一标识。如果业务库只有一条,而回传记录有多条,问题在回传段;如果业务库本身就是多条,问题在触发段。这一步决定了后面记录要保留到什么粒度。
很多人一发现重复就先去改埋点或改回传逻辑,结果改完之后再也说不清原来错在哪。正确的顺序是先把当前状态存下来。
具体动作:在接收端导出一份带时间戳的原始回传日志,字段至少包含事件标识、业务唯一键、回传时间、批次号、触发来源。把这份文件按导出时间命名并单独存放,不要覆盖。然后才去动修复逻辑。
这个动作的结果会直接影响下一步:如果冻结记录里能看出重复集中在某个批次或某个版本,你就能只针对那一段做补报或剔除;如果看不出规律,说明还需要先补上批次号或版本号字段,再谈修复。没有这份基线,后面任何“修复后数据变好了”的说法都缺少对照物。
修复不是终点,能对比才是。建议给每次改动分配一个版本号,并让这个版本号随事件一起写入回传记录。
假设一个场景:某业务在六月发现同一订单被回传两次,原因是接收端重试没有幂等。修复方案是加去重键。此时可以这样处理:
这里的关键是:不要用总转化数的下降来证明修复成功。总量下降可能来自投放量变化、归因窗口调整或用户行为波动,这些都能造成同样的现象。只有按业务唯一键去重后统计“一键多条”的比例,才能把修复效果和外部波动分开。如果 v1 中该比例明显下降,同时投放量没有同步大幅变化,才能较有把握地说重复问题被压住了。
保留记录之后,常见的问题是:已经回传出去的重复数据要不要撤回或补正。这取决于平台是否支持去重以及重复是否影响结算。
这两个条件成立与否,决定了你是“只留档”还是“留档加修正”。不要默认所有重复都必须撤回,也不要把撤回当成修复本身。
最后一步是让记录能被别人复查。建议把冻结的原始记录整理成三列结构:业务唯一键、事件版本、该键在版本内的出现次数。这样任何人拿到这份表,都能自己判断重复发生在哪个版本、影响了多少业务单据。
需要提醒的是,抓取量或回传量某天突然归零,并不能单独证明修复正确。它也可能是回传接口短暂不可用、批次延迟或统计口径切换造成的。判断修复是否成立,仍然要回到按业务唯一键去重后的对照结果,而不是看某一天的曲线形态。记录保留的意义,正是在这些解释之间提供可核对的依据。