Shopify Webhooks

Events 订阅和经典 Webhook 到底该用哪个

现象#

shopify.app.toml 里同时有 [webhooks] 与 [events] 两段,同一商品改价收到两条通知,payload 结构完全不同,不知道该留哪套。

原因#

  • Events 按 GraphQL 资源订阅,用 triggers 指定字段级变更,payload 是 query 结果
  • 经典 webhook 的 topic 是「资源/动作」,Events 是对象名加 action,不能直接互换
  • Events 需要 CLI 3.92 以上,且只能写在 app 配置里,无法按店铺单独创建
  • 两套并存时同一变更各发一条,不按 event_id 去重就会双写

处理步骤#

  1. 先列出 handler 真正读的字段,能映射到 GraphQL 的才适合迁到 Events
  2. 在 [[events.subscription]] 里写 topic = "Product" 与 triggers
  3. 用 query 只取需要的字段,复杂度控制在 100 点以内
  4. 迁移期让两套写同一张幂等表,按 event_id 去重后对比差异
  5. 确认无差异后删除旧订阅,再 shopify app deploy 发布

验收标准#

一次改价只收到一条通知,payload 字段与 query 一致,旧订阅删除后业务数据无缺口。

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