如何將 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 App Store 免費下載。
- 一個具備建立 Webhook 權限的 Calendly 帳戶。
步驟 1 - 在 Workflow Webhooks 建立 Webhook
- 開啟 Workflow Webhooks → Webhooks → 建立 Webhook,並為其取一個您在 Shopify Flow 中能辨識的名稱,例如
Calendly events。 - 在「驗證」下,選擇 HMAC。
- 在「**簽名提供者」**下,選擇 Calendly。該應用程式會自動為您填入標頭、演算法、已簽名有效載荷及重播視窗 - - 無需進行其他設定。
- 目前請將「祕密」欄位留空,然後按下**「儲存」**。複製頁面顯示的 webhook URL。
有關其他驗證模式,請參閱 驗證;若要選擇哪些欄位會傳送至 Shopify Flow,請參閱 有效載荷映射與 Shopify Flow 變數。
步驟 2 - 在 Calendly 中新增端點
請透過 Calendly API 或開發者入口網站,使用您複製的 URL 建立 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 變數 - 從載荷中擷取正確的欄位,並將其傳入
Shopify Flow。 - 重複送達防護 - 当 Calendly 重试发送时会发生什么。
- 歷史與故障排除 - 每個請求的日誌,並附有重播功能。

