Webhook 失败到底重试几次,48 小时的说法对吗
现象#
端点宕机两小时后恢复,只补收到几条重试,更早的事件彻底没有了;团队照「48 小时内重试 19 次」写的补偿任务对不上账。
原因#
- 现行策略是失败后 4 小时内最多重试 8 次,间隔逐次拉长,不是早期的 48 小时 19 次
- 8 次连续失败后,用 Admin API 创建的订阅会被自动删除,之后不再投递
- 写在 TOML 里的 app-specific 订阅不会被删,但同样只重试 8 次,缺口得靠对账补
- 重试只覆盖非 2xx、超时与连接失败,业务层吞异常返回 200 的情况不会重试
处理步骤#
- 在
Logs里打开一条失败投递,看Delivery attempt是否停在 8 - 查
webhookSubscriptions确认订阅是否已被删除,删掉的用 mutation 重建 - 把关键订阅迁到
shopify.app.toml的[[webhooks.subscriptions]] - 建按
updated_at增量拉单的对账任务,窗口覆盖停机时长而非固定 48 小时 - 对失败率设 0.5% 的告警阈值,别等订阅被删才发现
验收标准#
人为让端点返回 500 后,Logs 里该投递停在 attempt 8;恢复后对账任务能补齐缺失订单。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。