Shopify 应用与扩展

Shopify 应用重复订阅 webhook 导致事件处理多次

现象#

同一订单创建事件被处理两三遍,日志里同一个 X-Shopify-Event-Id 出现多次。

原因#

  • 每次启动或每次安装都调用 webhookSubscriptionCreate,没有先查重
  • 开发环境与生产环境共用同一店铺,两边都订阅了
  • 应用重装后旧订阅未删除,新订阅叠加
  • 同一 topic 同时用 REST 与 GraphQL 各建了一条

处理步骤#

  1. 创建前先查 webhookSubscriptions,按 topic + endpoint 去重
  2. 用固定的 callbackUrl 命名规范,便于识别与清理
  3. 处理端按 X-Shopify-Event-Id 做幂等,唯一索引兜底
  4. 上线前用脚本列出全部订阅,删除历史遗留项

验收标准#

同一事件只被处理一次;订阅列表里每个 topic 只有一条指向当前环境的记录。

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