先给结论:不要删掉重复事件,也不要只留一条“正确”记录。把修复前的原始触发日志、修复动作和修复后的对照数据放在同一时间轴上,让运营、投放、数据三方都能看到“哪一段是脏的、哪一段是干净的、依据是什么”。重复触发本身不是错误结论,错误结论是拿修复后的干净数据去覆盖修复前已经用于出价和复盘的事实。
重复触发通常落在两种情形里,处理方式完全不同。第一种是客户端重复上报:页面刷新、返回、二次点击、浏览器回退导致同一动作被再次发送。第二种是服务端与客户端同时上报,或第三方回传链路重试,导致同一笔转化在多个通道各记一次。两者的证据位置不同,前者看前端事件日志和会话轨迹,后者看服务端接收日志与回传状态。
判断依据可以抓三点:同一用户标识在短时间内是否出现多次相同事件;这些事件的参数是否几乎一致;重复是否集中在某次页面改版、脚本调整或回传配置变更之后。如果三点都指向同一时间点,优先按“配置或代码变更引发的系统性重复”处理;如果重复零散分布、参数差异大,更可能是用户行为导致的偶发重复。这个区分决定你后面是改代码还是改归因规则。
发现重复后,第一动作不是立刻改代码,而是把当前状态固定下来。具体做法是导出一份带时间戳的原始事件明细,保留事件名、用户标识、触发时间、来源参数和接收端返回值,存放在改动范围之外的目录。这份冻结记录的作用是:修复之后你仍然能回答“当时系统看到的是什么”。
接下来才决定要不要暂停依赖。如果重复量已经明显影响成本判断,可以暂时降低对转化数据的自动出价依赖,改为人工观察;如果重复只占很小比例,且你能在报表层按规则去重,就不必打断投放节奏。这里的取舍标准是:修复动作本身会不会引入新的数据断层。会引入断层的,先冻结再改;不会的,可以边投边改。
一个假设例子:某账户在落地页改版后,同一表单提交被记录两次。运营先导出改版前后各三天的原始事件,发现重复只出现在改版后的移动端。此时可以判断问题出在新版脚本,而不是出价策略,于是先回滚脚本,再对比回滚前后的接收日志,而不是直接删掉重复行。
多个角色对“到底修好了没有”有分歧,往往是因为改动没有被写成可核对的项目。建议用一张最小清单记录每一步:改了什么、改在哪个环节、谁执行的、执行时间、预期结果、实际观察到的结果。清单不需要复杂,但必须让投放、数据、技术三方都能对照同一份记录。
执行后立刻做一次对照:用同一套筛选条件分别跑修复前和修复后的明细,看重复事件的绝对数量和分布是否变化。如果数量下降但分布没变,说明可能只是流量波动,不是修复生效;如果分布明显收敛到正常范围,才可以把这次改动标记为有效。这个动作直接决定下一步:有效就进入观察期,无效就回到冻结记录重新定位。
修复完成后不要只留一份“干净数据”。更稳妥的做法是保留两个版本:一个是原始接收版本,包含重复事件;一个是按既定规则去重后的分析版本。两份都标注生成时间、去重规则和适用范围。这样当投放方说“成本变好了”、数据方说“转化没涨”时,双方能回到同一份原始记录上核对,而不是各拿一份口径不同的报表争论。
去重规则本身也要写清楚,例如按用户标识加事件名加时间窗口去重,还是按订单号去重。规则不同,结果就不同。把规则写进记录,等于把“谁的理解算数”这个问题转成了“哪条规则被采用、为什么采用”。这比反复解释更有用。
有两种例外值得注意。第一,当重复事件可能对应真实的多笔转化时,比如同一用户在不同设备上完成了两次独立购买,机械去重会抹掉真实业务。第二,当平台回传延迟导致事件晚到时,短时间内看到的“重复”可能只是尚未归并的正常数据。这两种情况下,先扩大观察窗口,确认是否真的重复,再决定是否去重。急着处理反而会让记录失去可信度。
最后提醒一点:付费广告的转化数据与自然搜索的统计机制不同,广告侧的转化记录不能直接用来推断自然流量的表现。修复转化事件时,聚焦广告投放链路内部的记录一致性即可,不必把两套机制混在一起解释。