orders/paid 补发转化与像素重复怎么幂等
现象#
用 orders/paid 给 Meta 补发 Purchase 后,Events Manager 同一订单出现两条,退款订单还多算了一次收入。
原因#
- Webhook 是至少一次投递,超时重试会让同一订单重复进入处理函数
- orders/paid 在支付完成时触发,与浏览器 checkout_completed 时间接近,两边都发就重复
- 补发的 event_time 用了当前时间而不是下单时间,Meta 会把转化归到错误日期
- 退款与取消也会触发后续 webhook,不过滤 financial_status 会重复计入
处理步骤#
- 以订单 ID 建唯一索引,处理前先查是否已发送,重复直接返回 200
- 服务端 event_id 用
purchase:{order_id},与浏览器 eventID 完全一致 - 补发事件把
event_time设为订单created_at - 只处理
financial_status=paid且非测试单,退款走独立事件 - 在
Test Events连续触发两次同一订单,确认只计一次
验收标准#
同一订单重复投递三次后 Events Manager 只有一条 Purchase,退款订单不再新增购买。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。