如何将Calendly与Shopify Flow连接起来
当通过您的某一种活动类型预订或取消会议时,Calendly 会发送一个 Webhook。Workflow Webhooks 将该调用转换为 Shopify Flow 触发器,以便您的商店能够对此做出响应:为客户添加标签、添加订单备注、发送内部邮件、更新元字段 - - 任何 Shopify Flow 能做的事情。
本指南详细说明了整个流程 - - Calendly 发送请求,Workflow Webhooks 接收并验证,Shopify Flow 执行操作 - - 且每次请求都会验证 Calendly 的 HMAC 签名,因此只有 Calendly 才能启动您的工作流程。
你可以制作什么
- 给预订了造型或咨询电话的客户打上标签,以便日后进行客户细分。
- 在通话开始前,添加一条包含会议时间的客户备注。
- 收到预订后,请通过电子邮件将客户的Shopify订单记录发送给负责该订单的工作人员。
常见的待发送事件包括:invitee.created(已预订)、invitee.canceled。
开始之前
- Workflow Webhooks 已安装在您的 Shopify 商店中。
- Shopify Flow 已安装,该应用可从Shopify应用商店免费下载。
- 一个具有创建 Webhook 权限的 Calendly 账户。
步骤 1 - 在 Workflow Webhooks 上创建 Webhook
- 打开 Workflow Webhooks -> Webhook -> 创建 Webhook,并为其命名一个在 Shopify Flow 中能认出的名称,例如
Calendly events。 - 在**“身份验证**”下,选择 HMAC。
- 在**“签名提供商**”下,选择 Calendly。该应用会自动为您填写标题、算法、已签名负载和重放窗口 - - 无需进行其他配置。
- 暂时将“密钥”字段留空,然后点击“保存”。复制页面上显示的 Webhook URL。
有关其他身份验证模式,请参阅 身份验证;有关如何选择哪些字段会传输到 Shopify Flow,请参阅 负载映射和流变量。
步骤 2 - 在 Calendly 中添加端点
使用您复制的 URL,通过 Calendly API 或开发者门户创建 Webhook 订阅。签名密钥仅在创建订阅时返回一次。
如何查找您的 Calendly 签名密钥
创建 Webhook 订阅时返回的签名密钥。
Calendly 关于 Webhook 签名的官方文档 中,提供了您账户的具体表述和截图。
将该密钥粘贴到 Workflow Webhooks 中的 Webhook“Secret”字段,然后保存。从那时起,每条 Calendly 消息在到达 Shopify Flow 之前都会经过验证。
此处检查的内容
| 什么 | 值 |
|---|---|
| 签名页眉 | Calendly-Webhook-Signature |
| 签名的位置 | 在该标头的v1值中,该值包含以逗号分隔的key=value对 |
| 签署了什么 | {timestamp}.{body} |
| 签名 | HMAC-SHA256,十六进制编码 |
| 时间戳 | 签名头中的t值,以Unix秒为单位 |
| 回放保护 | 签名时间戳与当前时间相差超过6分钟的请求将被拒绝 |
| 秘密 | 作为纯文本使用。请完全按照发件人显示的内容粘贴 |
在签名后的负载中,{body} 就是原始请求正文(按字节逐字节复制),而 {timestamp} 则是上文提到的时间戳。
如果请求未通过上述任何一项检查,则会因401错误被拒绝,该错误会被记录在历史与故障排除中,且该请求永远不会启动工作流程。
步骤 3 - 构建Shopify Flow工作流程
- 在 Shopify Flow 中,创建一个工作流程,并选择“Workflow Webhooks”触发器。
- 点击**“记录事件**”,然后从 Calendly 发送一个测试事件(或在 Workflow Webhooks 中使用**“发送测试”功能**),以便 Shopify Flow 识别您的数据结构。
- 您拥有的每个 Webhook 都会触发同一个 Shopify Flow 触发器,因此请在 Webhook ID 上添加第一个条件,以确保此工作流程仅针对 Calendly。该 ID 显示在 Webhook 页面上。
- 添加操作 - - 标记客户、添加备注、发送内部邮件、更新元字段。



第 4 步 - - 进行端到端测试
在 Calendly 中触发一个真实事件。在 Workflow Webhooks -> 历史记录 中,您应该能看到状态为“成功”的调用记录。如果签名有误,您会看到一条显示失败原因的记录;验证已签名的 Webhook 介绍了签名测试工具,该工具会精确显示哪个步骤失败了。

签名不匹配▾
按以下顺序:密钥(最常见的原因 - - 多余的空格,或来自错误环境的密钥)、发送方是否使用了其他端点的密钥,以及Calendly与应用之间是否存在任何会重写请求主体的内容。签名基于原始字节进行验证,因此会重新格式化JSON的代理服务器会导致签名失效。 Webhook 页面上的签名测试工具会显示被签名的确切文本。
每次请求都会返回 401 错误▾
请确认 Webhook 的身份验证方式已设置为 HMAC,且已选择 Calendly 提供商;请确认已填写密钥;并请确认 Calendly 发送到的 URL 与应用中显示的完全一致,包括末尾的代码。
“历史”中没有显示任何内容▾
该请求从未送达。请在 Calendly 中重新检查 URL,并查看 Calendly 自身的发送日志以了解收到的响应。如果状态码为 404,则表示 Webhook 配置错误或已被删除;如果状态码为 429,则表示您已超出套餐的调用限额 - - 请参阅 套餐与使用情况。
工作流程针对错误的事件运行▾
您商店中的每个 Webhook 都会触发同一个 Shopify Flow 触发器。请在工作流程的第一步中添加一个基于 Webhook ID 的条件,或者缩小从 Calendly 发送的事件范围。
请求失败,错误信息为“时间戳超出容差范围”▾
Calendly 会在时间戳上加签,而该应用会拒绝任何超过 6 分钟的时间戳。这通常是发送方的时间同步问题,或者是 Calendly 在很久之后使用原始时间戳重试发送所致。来自同一原始请求的重试无法通过;请让 Calendly 发送一个新的事件。
相关
- 验证已签名的 Webhook - 我们核实的每家服务提供商,以及如何描述未核实的服务提供商。
- 负载映射和流变量 - 从负载中提取正确的字段并将其导入 Shopify Flow。
- 重复配送防护 - 当 Calendly 重试发送时会发生什么。
- 历史与故障排除 - 每个请求的日志,并支持回放。

