历史与故障排除
每个发送到 Webhook 的请求都会被记录下来 - - 无论被接受还是被拒绝。当某些操作未发生时,历史记录是首先需要查看的地方。
诵读祈祷文
打开**“历史记录**”,然后点击一条记录。您将看到时间戳、状态、调用方、持续时间、负载、(经过掩码处理的)请求头、查询字符串,以及(对于失败的请求)错误信息和每次重试尝试的记录。
| 状态 | 含义 |
|---|---|
| 待定 | 已接受并排入队列,尚未交付给 Shopify Flow |
| 成功 | Shopify Flow 接受了触发器 |
| 失败 | 配送永久失败 - - 详情页显示了原因 |
“由...调用”列会告诉您调用来自何处:User(外部系统)、Flow(调用该 Webhook 的 Shopify Flow 操作)、Test(“测试”按钮)或 CURL。


被拒的情况,以及每种情况的含义
被拒绝的请求永远不会到达 Shopify Flow。响应正文中包含一个机器可读的code:
| 代码 | HTTP | 出了什么问题 | 修复 |
|---|---|---|---|
webhook_not_found |
404 | 短代码未知 | 请检查 URL;该 Webhook 可能已被删除 |
webhook_disabled |
400 | Webhook 已关闭 | 在 Webhook 页面上启用该功能 |
unauthorized |
401 | 令牌缺失或错误 | 检查令牌和标头名称 |
missing_signature |
401 | HMAC 模式,无签名头 | 发送预设所期望的签名头 |
invalid_signature |
401 | 签名不匹配 | 确认签名密钥,并确保正文在传输过程中未被篡改 |
auth_not_configured |
401 | 已设置认证模式,但未保存令牌 | 在 Webhook 中保存一个令牌 |
invalid_json |
400 | 正文不是有效的 JSON | 请发送有效的 JSON,或设置与请求主体实际类型相符的 Content-Type(表单数据和 XML 也会被读取) |
invalid_body |
400 | 无法读取表单或 XML 主体,或者主体为字符串 null |
发送一个 JSON 对象,或发送一个与该 Content-Type 匹配的请求体 |
mapping_field_missing |
400 | 负载中缺少一个已映射的字段 | 发送该字段,或取消映射该字段 |
unexpected_fields |
400 | 正文中存在未映射的字段 | 将其映射、删除,或启用**“允许自定义请求正文**”选项 |
ip_not_allowed |
403 | 呼叫方的地址不在 Webhook 的 IP 白名单中 | 参见 IP白名单 |
invalid_proxy_signature |
401 | 直接调用了应用代理地址,而非通过您店铺的域名进行调用 | 请完全按照应用中显示的格式使用 Webhook URL - - 请参阅 CORS、应用代理 URL 和浏览器调用 |
payload_too_large |
413 | Shopify Flow 负载超过 50KB | 减少发送的数据量,或关闭“请求数据”开关 |
quota_exceeded |
400 | 已达到计划限额 | 参见 套餐与使用情况 |
实时请求检查器
当你在编辑器中打开一个 Webhook 时,检查器会实时显示收到的请求 - - 包括被拒绝的请求及其原因。这是调试发送方最快捷的方式:发送一个请求,然后观察其结果。
被屏蔽的重复项也会显示在此处,并标有相应标签 - - 详见 重复配送防护。
回放
任何过去的调用均可从其详情页面进行重放。重放操作会通过相同的 Webhook 重新发送相同的数据负载。
它特别适合做两件事:
- **构建一个 Shopify Flow 工作流程。**在 Webhook 触发器上记录事件,然后重放一个真实的 调用该方法,以便 Shopify Flow 能够识别您的实际字段名称。
- **从工作流程中断中恢复。**修复工作流程,然后重放已执行的事件 尽管这是错误的。
回放会在历史记录中明确标注,且不计入您的套餐流量。
常见情况
**虽然接收到调用,但工作流程并未运行。**这几乎总是与 Webhook ID 条件有关。Webhook 触发器工作流程会接收您拥有的_每个_ Webhook 发来的事件,因此需要一个与特定 Webhook ID 匹配的条件 - - 请参阅 创建您的第一个 Webhook。
**该工作流程运行了两次。**这可能是因为有两个工作流程使用了没有明确条件的 Webhook 触发器,也可能是发件人正在重试。历史记录会告诉你具体原因:如果出现两条记录,则表示收到了两次请求。请开启重复配送防护功能。
**历史记录中完全没有相关信息。**该请求从未发送到我们这里。请检查 URL 和短代码,并确认发件方那边没有出现 TLS 或 DNS 故障。
**状态卡在“待处理”上。**系统会采用退避策略重试交付;若发生永久性失败,状态将切换为“失败”并显示具体原因。如果状态异常长时间保持“待处理”,请检查 status.codecreationlabs.cloud。

