先给结论:重复触发本身通常不是最危险的问题,危险的是修复时直接覆盖或删除原始记录,导致你无法判断重复发生在哪一层。可行的做法是保留两份数据——原始上报流水和修复后的去重结果,并在两者之间留下可追溯的标记。这个结论有前提:你得先确认重复是同一事件被多次上报,而不是不同用户或不同转化路径被误判为重复。
转化事件从用户动作到最终计入,中间至少经过页面触发、上报请求、接收端记录三个环节。重复可能出现在任何一层,保留记录的方式也不同。
判断方法很直接:取一小段样本,把重复事件的原始字段逐列对比。如果除时间外全部一致,问题多半在页面或上报层;如果关键标识不同,就要检查接收端的匹配逻辑。这个动作的结果决定你下一步是改代码、改重试策略,还是改入库规则,而不是笼统地“去重”。
不需要复杂系统,但需要让修复动作可回溯。建议至少维护三样东西:
这样做的实际影响是:当有人质疑某天转化数变化时,你能同时拿出修复前的原始行和修复后的汇总值,而不是只有一个无法解释的数字。假设某天有 100 条原始上报,去重后得到 80 条,你能说明另外 20 条各自的重复依据,而不是简单说“系统去重了”。
如果重复触发的原因是同一用户在不同设备或不同登录状态下完成了多次真实转化,那么按设备标识或用户标识去重就会误删有效事件。此时保留修复前后记录仍然必要,但去重规则不能简单按标识合并。
这种情况下,正确顺序是先定义“什么算一次转化”:是按订单、按支付、还是按有效线索。定义不同,去重键就不同。若把真实的多设备转化当成重复删掉,修复后的数据反而比修复前更偏离事实。所以保留两份记录的意义不只是审计,也是让你能随时回退到另一种口径重新计算。
确认重复层之后,按以下顺序处理:
如果对比后发现差异量级很小且分布均匀,可以按新规则继续;如果差异集中在少数来源,说明那里可能还有未识别的触发路径,需要单独保留观察窗口。这个判断依赖你保留的原始流水,而不是修复后的汇总值。
上述方法适合你能拿到原始上报数据、且重复事件有可区分字段的情况。如果接收端只提供汇总值、不提供明细,或者重复事件在入库前已被合并且无痕迹,那么保留修复前后记录就无从谈起,只能从源头要求可追溯的明细。
另外,百度品牌广告的投放数据与转化数据可能来自不同系统,两边的时间口径和去重口径未必一致。修复转化事件时,不要假设两边会同步变化;分别记录各自的修复动作,才能避免把系统差异误判为重复触发。付费广告的转化记录与自然搜索的表现是不同机制,广告投放本身不构成自然排名的保证,修复转化数据也不会改变这一点。
下一步动作很具体:先取最近一段有代表性的原始上报样本,按上面三个层逐一比对字段,确定重复层之后再决定修复方式,并在修复前把原始流水固定下来。