周报里漏斗下单事件一千二百次,后台导出九百八十单,差了二百二十,运营和财务各说各的。两边都认为自己没算错。乍看像缓存或者权限的锅,追下去往往不是。
fetch('/api/order', { method: 'POST', body: payload })
.then((r) => r.json())
.then((order) => {
dataLayer.push({ event: 'order_created', order_id: order.id });
});
追下去是这么回事:漏斗统计的是点击下单按钮,订单表记的是支付成功,两个口径本来就不一样。重复点击和失败请求也被算进事件里。
「转化漏斗订单对不上」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
具体做法是,把漏斗每一步的口径写清楚,下单事件改成接口成功回调后上报;用订单号做去重,同一单只算一次;支付成功单独一个事件,别和下单混在一起。
验收就看一点,同一天对比漏斗下单数和订单表记录,差值收敛到零,重复点击不再增加事件量。
