先给结论:不要急着删掉重复的转化记录,也不要直接把它当作一次有效转化。更稳妥的做法是保留原始触发日志,再写一条独立的修复记录说明哪条被剔除、依据是什么、修复后回传给广告平台的是什么。这样做的原因是,重复触发往往同时暴露两件事:页面或回传链路存在缺陷,以及历史报表已经受影响。只改代码不留下修复痕迹,后面复盘时无法区分“本来就没转化”和“被去重去掉了”。
转化事件被重复触发,常见来源不在同一层,处理方式也不同。先定位层级,再决定保留还是改写:
区分方法很直接:给每个转化事件带上一个稳定的事件 ID 或订单号,再对比触发时间、用户标识和来源参数。如果事件 ID 相同而时间接近,多半是页面或回传重试;如果事件 ID 不同但订单号相同,更可能是归因或上报逻辑问题。这一步做完,才知道该修代码、修回传,还是只修报表口径。
面对已经产生的重复记录,处理方式取决于你是否还能追溯原始触发。
保留原始记录适用于事件 ID 完整、能逐条对应到真实用户动作的情况。此时原始日志是后续对账的唯一凭据,删掉就再也无法验证去重是否误伤。保留的同时要标记哪些是重复项,而不是让它们继续参与统计。
改写为修复记录适用于原始记录已进入报表、但你能确认哪条有效的情况。做法是新增一条状态字段,例如把重复项标为已剔除,并写明剔除依据和时间。注意这是新增说明,不是覆盖原值;覆盖会让修复前后的差异消失。
退出统计只适用于无法确认哪条有效、且重复量小到不影响整体判断的场景。此时把它整体排除,并在记录里注明排除原因。如果重复量已经影响到主要结论,退出统计等于放弃这部分数据,需要重新评估是否值得。
假设某次投放中,同一表单提交在 3 秒内上报了两条转化,事件 ID 相同、订单号相同。可以这样处理:
这个例子的数字只是说明比较方法,不代表任何真实阈值。关键是每一步都能被第三方复核:看到修复记录的人,能顺着事件 ID 找到原始两条,自己判断剔除是否合理。
修复上线后,转化数量下降是正常现象,但下降本身不能证明修复正确。还要看几个可区分的信号:
这里要提醒一点:请求量、抓取量或某项统计归零,不能单独证明处理正确。它也可能是上报中断、代码未生效或权限变更造成的。判断修复是否成立,最终要回到“能否用原始记录复现去重逻辑”这一点上。
如果重复触发已经持续较长时间、原始记录缺失、事件 ID 无法回溯,继续修补的代价可能高于重建。此时更实际的选择是:停止在当前链路上继续叠加修复逻辑,改为重新定义一次有效转化的判定条件,并让新逻辑从某个明确时间点开始生效。旧数据保留但标注为不可核对,不参与后续对比。
这个退出的前提是你能接受一段历史数据不可用。如果不能接受,就必须先补上事件 ID 和原始日志,再谈去重。无论选哪条路,修复前后的记录都要分开存放,不要用同一张表覆盖写入,否则下一次出现类似问题时,你仍然没有可对照的基线。