结论是:不要先删重复记录,而是先冻结一份“修复前”的原始事件快照,再在同一时间轴上标记修复动作,让修复前后可对照。这样做的条件是你能拿到事件级日志或至少能导出带事件ID、时间戳和来源参数的明细。若你只能看到汇总报表,无法下钻到单次事件,那么保留原始快照这一步就失效,此时应先补数据采集,而不是急着改转化设置。
转化事件重复触发通常意味着同一个用户动作被计了两次或多次,比如页面刷新后再次上报、确认页被回退重进、或同一订单号在客户端和服务端各上报一次。问题不在于数字偏高,而在于你修复后无法判断:转化数下降是因为重复被去掉了,还是因为修复动作误伤了正常转化。
如果修复前没有留下原始明细,修复后只剩一个更低的汇总数字,你就失去了对照基准。之后无论调整归因窗口、去重规则还是上报时机,都很难说明哪一步真正起了作用。这与seo与sem区别中的一点相关:自然搜索的转化往往跨多个会话,付费广告的转化更依赖点击标识,两者混在同一张去重表里时,重复触发的来源会互相掩盖。
至少保留以下字段,缺一项都会让对照变得含糊:
event_id:事件唯一标识,用于判断是否同一次上报。occurred_at:事件实际发生时间,不是入库时间。received_at:服务端收到时间,用来识别延迟补报。source:来源渠道或广告点击标识,用于区分自然与付费入口。conversion_key:订单号、表单ID或去重键,用来判断重复是否指向同一业务动作。trigger_path:触发路径,如页面加载、按钮点击、服务端回调。把这些列导出为一份只读快照,命名为可识别的修复前版本,不要覆盖原始表。动作本身很简单,但结果会影响下一步:有了这份快照,你才能在修复后按同一conversion_key比对,确认减少的是重复项还是正常项。
修复重复触发常见做法是加去重键、限制上报次数或改上报时机。无论选哪种,都要记录修复生效的准确时间点和改动内容,并假设它只影响该时间点之后的事件。这样修复前后就能按时间切开,而不是笼统地比较两周总量。
一个假设例子:某表单确认页在刷新时会再次上报,修复前一周同一conversion_key平均出现两次。你在周二下午加入去重键后,修复后同一键只出现一次。这时你能明确说减少来自去重,而不是来自流量下降。反过来,如果修复后所有键都只剩一次,连原本正常的二次提交也消失,就要检查去重键是否过宽,把不同业务动作误判为重复。
最典型的反例是:重复触发和正常转化共用同一个conversion_key,而该键本身不稳定。比如表单ID在每次提交时重新生成,那么去重键无法识别重复,修复前后的记录也无法对齐。此时保留快照仍然有用,但它只能证明数据不可靠,不能证明修复有效。
另一种失效情况是修复同时改了多个变量,比如既加了去重又换了归因口径。两个变化叠在一起,修复前后差异无法归因到其中任何一个。遇到这种情况,下一步不是继续调参数,而是先把改动拆开,一次只动一个变量,再重新留一份快照。
先取修复前快照中重复最集中的一批conversion_key,检查它们在修复后是否仍能对应同一业务动作。如果键稳定,就可以按时间轴比较修复前后的事件数,并保留两份记录备查。如果键不稳定,应先修采集逻辑,让同一业务动作在不同触发路径下产生相同键,再谈去重和回填。
回填要谨慎:只回填能明确判定为重复的事件,并保留原始记录和回填标记,不要直接删除。这样即使后续发现判断有误,也能还原修复前的状态,避免把一次数据修复变成不可逆的数据丢失。