剛開始接觸 n8n 的時候,Webhook 這個節點真的讓我既期待又怕受傷害。我知道它是打通各個系統之間數據交換的關鍵,但也常常因為一些小細節卡關。這篇教學就是我踩過各種坑之後的總結,希望能帶你從基礎設定,一路走到進階的 API 應用,讓你徹底搞懂 n8n Webhook 到底有多好用,以及如何把它變成一個穩定可靠的自動化數據中心。
1. 什麼是 n8n Webhook?它為什麼重要?
簡單來說,Webhook 是一種「事件通知」的機制。當某個外部服務(例如:有人填了你的問卷、線上商店有了新訂單)發生了特定事件,它就會主動向一個你指定的 URL 發送一個 HTTP 請求,把相關資料即時推送給你。而 n8n Webhook 節點,就是用來接收這些請求的窗口,讓你的 n8n 工作流程可以被外部事件觸發,進而執行後續的自動化處理。
n8n Webhook 與 Catch Hook 的區別
這點新手一定要搞清楚!在 n8n 的世界裡,當我們新增一個 `Webhook` 節點時,它預設的模式就是 `Catch Hook`。你可以把它想像成一個被動的「鉤子」,專門用來「捕捉」外部服務丟過來的資料。所以,當你在看各種教學或討論時,`n8n Webhook` 和 `n8n Catch Hook` 基本上可以視為同一個東西,都是指那個用來接收數據的觸發器。
為什麼選擇 n8n 作為 Webhook 接收端?
跟 Zapier 或 Make 這類平台比起來,用 n8n 來接收 Webhook 有幾個超讚的優勢:
- 成本效益:如果你是自架 n8n,那基本上沒有流量限制,不用再擔心像 Zapier 一樣動不動就用完任務額度。
- 高度客製化:n8n 的工作流程非常彈性,你可以對接收到的數據做任何複雜的處理,自由度超高。
- 自託管彈性:對於需要處理敏感資料的場景,可以將 n8n 部署在自己的伺服器上,資料完全不假外人之手,安全性更高。
2. n8n Catch Hook 基礎設定:3 步驟上手教學
好了,理論講完,我們直接來動手做。建立一個基本的 Catch Hook 真的不難,跟著下面 3 個步驟走就行。
步驟 1:新增 Webhook 節點並選擇模式
打開你的 n8n 工作流程畫布,點擊 `+` 號,搜尋並新增一個 `Webhook` 節點。你會看到節點的預設操作就是 `Catch Hook`,這就是我們要的,所以不用特別去改動。
步驟 2:設定 HTTP 方法 (Method) 與複製 URL
接著,你需要設定這個 Webhook 預計接收哪種 HTTP 請求方法。最常見的是 `POST`(用來接收外部傳來的資料)和 `GET`(用來從外部讀取資料)。
設定好後,你會看到節點提供了 `Test URL` 和 `Production URL` 兩個網址。這裡有個我當初踩過的大坑要提醒你:在開發和測試階段,請務必使用 `Test URL`! 只有當你啟動工作流程(Activate)後,`Production URL` 才會真正生效。用錯 URL 會讓你 debug 到懷疑人生。
步驟 3:啟動監聽模式 (Listen) 並發送測試請求
URL 複製好後,還差最關鍵的一步:點擊節點右下角的「Listen for Test Event」按鈕。點下去之後,n8n 就會進入等待狀態,準備接收你發送的第一筆測試資料。如果沒點這個按鈕,n8n 是收不到任何東西的喔!
3. Webhook 測試實戰:使用 Postman/Insomnia 驗證數據
要怎麼知道 Webhook 設定得對不對?我們需要一個工具來模擬外部服務發送請求。Postman 或 Insomnia 都是很棒的免費 API 測試工具,這裡我用 Postman 來示範。
準備測試工具:Postman 或 Insomnia
你可以去官網下載安裝 Postman。測試的目標很簡單:確認我們發送的資料,n8n 真的能正確無誤地收到。
建立 POST 請求的 3 個關鍵設定
在 Postman 裡,你需要設定好 3 個地方:
- URL:貼上你剛剛從 n8n 複製的 `Test URL`。
- Method:請求方法要跟 n8n 節點裡的設定一樣,我們這裡選 `POST`。
- Body:選擇 `raw`,然後在右邊的下拉選單中選擇 `JSON`。接著在下方的輸入框中,貼上你想測試的 JSON 資料。例如:
{
"name": "Elon Musk",
"email": "[email protected]",
"lead_source": "Website Form"
}
設定好後,按下「Send」按鈕。如果一切順利,你回到 n8n 畫面,就會看到 Webhook 節點成功接收到你發送的 JSON 資料了!
4. n8n Webhook 的 4 種回應機制深度解析
當 n8n 收到 Webhook 請求後,它要如何「回應」給發送方?這點非常重要,因為它會直接影響你的工作流程設計。n8n 提供了 4 種回應模式,我把它們整理成一個表格,讓你一看就懂。
| 回應模式 | 說明 | 優點 | 適用場景 |
| 立即回應 (Immediately) | n8n 一收到請求,就立刻回傳「Workflow got started」,然後才在背景開始執行流程。 | 速度最快,發送方不會被卡住。 | 非同步任務、不需要立即知道結果的背景處理,例如:紀錄 Log。 |
| 當最後節點完成時 (When Last Node Finishes) | n8n 會等整個工作流程全部跑完,然後把最後一個節點的輸出結果回傳。 | 可以讓發送方拿到完整的處理結果。 | 同步任務、需要即時回饋處理結果的場景,例如:查詢資料庫後回傳。 |
| 使用「Respond to Webhook」節點 | 在流程中任何地方,插入一個 `Respond to Webhook` 節點,當流程跑到該節點時,就會立即回傳資料並結束連線,但背景流程會繼續跑。 | 兼具彈性與效率,可先快速回應,再處理耗時任務。 | 處理耗時任務的標準做法! 例如:先回傳「收到請求」,再花 2 分鐘去跑 AI 分析。 |
| 串流回應 (Streaming) | n8n 會持續地將資料一塊一塊地回傳,而不是一次性回傳。 | 可以實現即時的數據流輸出。 | AI 聊天機器人、即時數據儀表板等需要逐步輸出內容的場景。 |
老實說,我以前就因為沒搞懂這些模式,有個流程要跑 1 分鐘,結果外部服務等不到 30 秒就超時了,後來才發現用 `Respond to Webhook` 節點先回個訊息才是正確解法。這真的是血淚教訓啊!
5. 進階應用:建立安全且彈性的 n8n API Endpoint
當你熟悉了基本操作後,就可以把 n8n Webhook 當作一個迷你的 API 伺服器來用,但這時就得考慮到安全性和彈性。
5.1 如何設定 Webhook 認證 (Authentication)
為了防止你的 Webhook 被人亂摳或惡意攻擊,設定認證是很關鍵的一步。
使用 Header 認證 (Header Auth) 確保數據安全
這是我個人最推薦的方式。在 Webhook 節點的 `Authentication` 選擇 `Header Auth`,然後自訂一個 `Name`(例如:`X-API-Key`)和一個 `Value`(一串隨機的密碼,例如:`YOUR_SECRET_KEY`)。這樣一來,所有發送到這個 Webhook 的請求,都必須在 HTTP Header 中帶上這個鍵值對,否則 n8n 會直接拒絕,非常安全。
使用 Basic Auth 進行基礎驗證
這是比較傳統的驗證方式,設定一組使用者名稱和密碼。雖然也可用,但安全性相對 Header Auth 稍弱一些。
5.2 活用路徑參數 (Path Parameter) 建立動態路由
你還可以在 Webhook 的 `Path` 欄位中,使用 `/:變數名稱` 的格式來建立動態 URL。例如,你設定 Path 為 `user/:userId`,那麼當外部請求 `…/user/123` 時,你就可以在後續的節點中,透過表達式 `{{ $json.params.userId }}` 來取得 `123` 這個值。這在做一些 RESTful API 的場景時超級好用。
6. 實戰應用情境:n8n Webhook 串接範例
學了這麼多,來看看實際可以怎麼用吧!
應用 1:串接表單數據 (Typeform/Google Form)
你可以設定讓 Typeform 或其他支援 Webhook 的表單,在每次有人提交問卷時,就自動將填寫的資料(姓名、Email 等)發送到 n8n。n8n 收到後,就可以自動把這些資料寫入 Google Sheets、發送歡迎郵件、或加到 CRM 系統中。
應用 2:接收 CRM 或 SaaS 系統的事件通知
更進階的用法,是接收各種 SaaS 服務的事件通知。例如:
- Stripe:當有新的付款成功時,發送通知到 n8n,n8n 自動開通客戶權限。
- GitHub:當有人提交新的程式碼時,發送通知到 n8n,n8n 自動觸發測試流程並發送通知到 Slack。
7. 常見問題與錯誤排除 (Troubleshooting)
Q1:Webhooks 為什麼收不到數據?
請檢查 3 個地方:1. n8n 是否處於「Listen for Test Event」的監聽狀態。2. 外部服務呼叫的 URL 是不是正確的 Test URL。3. HTTP Method(例如 POST)是否與 n8n 節點的設定一致。
Q2:如何確保 Webhook 的資料格式正確?
大多數 Webhook 都傳輸 JSON 格式。請確保發送端的 `Content-Type` 標頭設定為 `application/json`,並且 Body 內的資料結構是有效的 JSON 物件,不然 n8n 會解析失敗。
Q3:為什麼我的工作流程執行時間太長,外部服務會超時?
這通常是因為你用了同步的回應模式(例如:When Last Node Finishes)。對於可能超過 30 秒的任務,你必須改用 `Respond to Webhook` 節點的模式,先快速給發送方一個回應,避免連線超時。
結論:用 n8n Webhook 打造你的自動化骨幹
n8n Webhook 不只是一個簡單的觸發器,它更是你打造自動化系統的骨幹。從接收表單資料,到串接各種 SaaS 服務,再到建立一個安全的迷你 API,它的潛力無窮。希望這篇教學能幫助你跨過新手的門檻,開始享受用 n8n Webhook 打造各種自動化流程的樂趣!
參考資料來源
- https://docs.n8n.io/nodes/triggers/webhook/