先给结论:不要为了止住重复触发就立即覆盖旧配置或删除旧数据。更稳妥的做法是先把重复触发的时间窗、页面路径和参数特征留档,再决定是“只改采集端”还是“采集端和回传端一起改”。因为百度广告的转化回传通常来自页面或服务端事件,修复后如果只剩新记录,你无法判断重复是来自事件绑定、页面刷新还是回传重试,也就无法验证修复是否有效。
这两种情况的选择不同。同一次会话内重复,通常表现为用户一次点击后,短时间内同一转化动作被记录多次;跨会话重复,则可能是同一用户隔天再次完成动作,或服务端回传重试导致。前者优先检查页面上的事件绑定和跳转逻辑,后者优先检查回传接口的幂等处理和订单号去重。
判断依据可以看三个字段:事件时间戳、用户标识或设备标识、业务订单号或表单编号。如果时间戳集中在几秒内、业务编号相同,基本可判断为同一次动作被重复采集;如果业务编号不同但用户标识相同,更可能是用户真实重复完成动作,不应简单当作异常删除。
实际动作是:在修改任何采集逻辑之前,把当前一段时间内的原始转化记录导出到独立文件或独立表,保留原始字段,不先做去重。结果是你后续可以用同一批数据对比修复前后的差异,而不是只能看到修复后的“干净数据”。这一步会影响下一步:如果原始记录里已经缺少业务订单号,那么修复重点应放在补全业务标识,而不是只改前端触发次数。
留档时至少保留:事件名称、触发时间、页面地址、广告来源参数、业务编号、回传状态。假设某条记录只有事件名称和时间,没有业务编号,那么修复后你无法确认两条记录是否属于同一笔业务,这时应先把业务编号补进采集字段,再谈去重。
如果确认是重复触发,可以在数据表中增加一个“处理标记”字段,把修复前的记录标为待核对,把修复后的记录标为已修正,而不是物理删除。这样做的结果是,你可以统计修复前后同一时间段的记录数量变化,判断重复是否真的减少。若修复后记录数下降,但业务编号覆盖也同时下降,说明可能误删了真实转化,需要回退检查。
对于服务端回传,优先检查是否可以用业务订单号做幂等键。若接口不支持幂等,至少在回传前查询该业务编号是否已回传成功,避免同一笔业务重复发送。这个动作会影响下一步:如果业务系统本身不提供唯一编号,那么修复重点应转为在广告落地页生成一次性的转化标识,而不是继续在回传端做模糊去重。
小范围测试时,可能只有某一种浏览器或某一条广告计划出现重复,修复后该样本消失,但这不代表所有计划都正常。规模化后常见的例外是:不同落地页模板的事件绑定方式不同,或部分旧页面仍在用旧版采集代码。此时不能直接把单个样本的修复方案全量推送,而应先按页面模板和广告计划分组对比。
可区分的证据是:同一业务编号在不同页面模板下的重复次数不同。如果只有旧模板重复,说明问题在页面代码而非回传接口;如果所有模板都重复,才需要优先检查回传链路。这个判断会决定你是先改页面还是先改回传。
验证时不要只看转化总数是否下降。转化数下降可能是重复被去掉,也可能是采集失败或用户行为变化。更可靠的验证是:同一业务编号在修复后只出现一次,且修复前后的业务编号覆盖范围没有明显缩小。若覆盖范围缩小,说明部分真实转化被误判为重复。
另外,回传成功数归零或抓取量下降,也不能单独证明修复正确,因为还可能是网络延迟、接口限流或统计口径变化。必要条件是:你保留了修复前的原始记录,并且能用业务编号把修复前后的记录对应起来。没有这个前提,任何“看起来正常”的结果都只能算暂时观察,不能当作最终结论。