Events 订阅和经典 Webhook 到底该用哪个
现象#
shopify.app.toml 里同时有 [webhooks] 与 [events] 两段,同一商品改价收到两条通知,payload 结构完全不同,不知道该留哪套。
原因#
- Events 按 GraphQL 资源订阅,用 triggers 指定字段级变更,payload 是 query 结果
- 经典 webhook 的 topic 是「资源/动作」,Events 是对象名加 action,不能直接互换
- Events 需要 CLI 3.92 以上,且只能写在 app 配置里,无法按店铺单独创建
- 两套并存时同一变更各发一条,不按 event_id 去重就会双写
处理步骤#
- 先列出 handler 真正读的字段,能映射到 GraphQL 的才适合迁到 Events
- 在
[[events.subscription]]里写topic = "Product"与triggers - 用
query只取需要的字段,复杂度控制在 100 点以内 - 迁移期让两套写同一张幂等表,按 event_id 去重后对比差异
- 确认无差异后删除旧订阅,再
shopify app deploy发布
验收标准#
一次改价只收到一条通知,payload 字段与 query 一致,旧订阅删除后业务数据无缺口。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。