Shopify 分析与像素

orders/paid 补发转化与像素重复怎么幂等

现象#

用 orders/paid 给 Meta 补发 Purchase 后,Events Manager 同一订单出现两条,退款订单还多算了一次收入。

原因#

  • Webhook 是至少一次投递,超时重试会让同一订单重复进入处理函数
  • orders/paid 在支付完成时触发,与浏览器 checkout_completed 时间接近,两边都发就重复
  • 补发的 event_time 用了当前时间而不是下单时间,Meta 会把转化归到错误日期
  • 退款与取消也会触发后续 webhook,不过滤 financial_status 会重复计入

处理步骤#

  1. 以订单 ID 建唯一索引,处理前先查是否已发送,重复直接返回 200
  2. 服务端 event_id 用 purchase:{order_id},与浏览器 eventID 完全一致
  3. 补发事件把 event_time 设为订单 created_at
  4. 只处理 financial_status=paid 且非测试单,退款走独立事件
  5. 在 Test Events 连续触发两次同一订单,确认只计一次

验收标准#

同一订单重复投递三次后 Events Manager 只有一条 Purchase,退款订单不再新增购买。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。