历史与故障排除

每个发送到 Webhook 的请求都会被记录下来 - - 无论被接受还是被拒绝。当某些操作未发生时,历史记录是首先需要查看的地方。

诵读祈祷文

打开**“历史记录**”,然后点击一条记录。您将看到时间戳、状态、调用方、持续时间、负载、(经过掩码处理的)请求头、查询字符串,以及(对于失败的请求)错误信息和每次重试尝试的记录。

状态 含义
待定 已接受并排入队列,尚未交付给 Shopify Flow
成功 Shopify Flow 接受了触发器
失败 配送永久失败 - - 详情页显示了原因

“由...调用”列会告诉您调用来自何处:User(外部系统)、Flow(调用该 Webhook 的 Shopify Flow 操作)、Test(“测试”按钮)或 CURL。

已将 Webhook 历史记录筛选为一个 Webhook,列出了状态为“成功”且来源为“外部系统”的调用
Webhook 历史记录,已筛选为一个 Webhook。每个请求都会列出其状态和来源。
“History”中打开了一个调用,其中包含其请求头、负载、状态、持续时间和标识符
一次调用,已展开:请求头(令牌已遮盖)、负载、耗时,以及右上角的“重放 Webhook”。

被拒的情况,以及每种情况的含义

被拒绝的请求永远不会到达 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。