Shopify 应用重复订阅 webhook 导致事件处理多次
现象#
同一订单创建事件被处理两三遍,日志里同一个 X-Shopify-Event-Id 出现多次。
原因#
- 每次启动或每次安装都调用
webhookSubscriptionCreate,没有先查重 - 开发环境与生产环境共用同一店铺,两边都订阅了
- 应用重装后旧订阅未删除,新订阅叠加
- 同一 topic 同时用 REST 与 GraphQL 各建了一条
处理步骤#
- 创建前先查
webhookSubscriptions,按 topic + endpoint 去重 - 用固定的
callbackUrl命名规范,便于识别与清理 - 处理端按
X-Shopify-Event-Id做幂等,唯一索引兜底 - 上线前用脚本列出全部订阅,删除历史遗留项
验收标准#
同一事件只被处理一次;订阅列表里每个 topic 只有一条指向当前环境的记录。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。