n8n Webhook 觸發器設定:即時接收外部事件的入門教學
想讓表單送出、收到付款、聊天機器人訊息進來的當下就觸發 n8n?這篇從零講解 Webhook Trigger:Test 與 Production URL 的差別、GET/POST 方法怎麼選、怎麼讀取送進來的資料、回應外部系統,以及驗證簽章與除錯的實戰要點。
n8n 的 Webhook Trigger 讓工作流在「外部系統送來 HTTP 請求」的當下立刻執行,是即時事件自動化的入口。它會產生一個專屬網址,外部服務(表單、金流、聊天機器人)對這個網址發請求,工作流就被觸發——關鍵在於分清 Test 與 Production 兩種 URL,以及如何讀取送進來的資料。
排程(Schedule)是「時間到了就跑」,Webhook 則是「事情發生了就跑」。當你要做的是「使用者填完表單立刻寄歡迎信」「Stripe 收到付款立刻開通帳號」「LINE 收到訊息立刻回覆」,這些都不能等排程輪詢,必須在事件發生的那一刻觸發——這就是 Webhook 的舞台。
本文是 n8n 入門系列「觸發器」主題的延伸。如果你的需求其實是「定時執行」而非「即時事件」,請看n8n 排程觸發完整教學。
Webhook 是什麼?用一句話理解
Webhook 就是「反過來的 API 呼叫」。平常是你的程式去問別人的服務「有沒有新資料」;Webhook 則是別人的服務在有事發生時,主動打一個 HTTP 請求到你指定的網址通知你。n8n 的 Webhook Trigger 節點就是替你開好這個「收信窗口」。
把它放在工作流開頭,n8n 會自動產生一組網址,貼到外部服務的 webhook 設定欄位裡,連線就建立了。
最關鍵的一件事:Test URL vs Production URL
這是 Webhook 新手 90% 的卡點。Webhook Trigger 會給你兩個不同的網址:
- Test URL(含
webhook-test):只在你按下編輯器的「Listen for test event」之後、且只接收一次請求。用來開發測試,方便你看送進來的資料長什麼樣。 - Production URL(含
webhook):工作流 Activate(啟用)之後才會運作,持續接收請求,是正式上線用的網址。
最常見的錯誤是:開發時用 Test URL 測通了,就把這個網址貼到正式服務裡,結果上線後完全沒反應——因為 Test URL 不是持續監聽的。正式串接一定要用 Production URL,而且工作流要 Activate。
基本設定步驟

- 新工作流,第一個節點選 Webhook。
- 設定 HTTP Method:
- 表單、簡單通知通常是 POST(資料放在 body)。
- 有些服務用 GET(資料放在 query 參數)。
- 不確定就看外部服務文件要求哪種方法。
- 設定 Path:網址最後一段,例如填
new-order,網址就會是.../webhook/new-order。取有意義的名字方便管理。 - (選用)設定 Authentication:可選 Header Auth、Basic Auth,替窗口加一道驗證,避免任何人都能觸發。
- (選用)設定 Respond:決定怎麼回應外部系統(見下方)。
設好後,按 Listen for test event,到外部服務(或用 Postman / curl)對 Test URL 發一個請求,n8n 就會抓到並顯示送進來的資料結構。
怎麼讀取送進來的資料
Webhook 收到的資料會放在後續節點可引用的位置。用 Expression 讀取:
{{ $json.body.email }} // POST body 裡的 email 欄位
{{ $json.query.token }} // GET query 裡的 token
{{ $json.headers['x-signature'] }} // 請求 header
先按一次 test event 看清楚實際結構,再決定路徑怎麼寫——不同服務送來的資料層級不一樣,有的包在 body 裡,有的直接平鋪,看實際資料最準。整理這些資料時,常會接上 Set 或 Merge 節點,可參考n8n Set 與 Merge 節點。
回應外部系統:Respond 模式

很多服務(特別是金流、聊天平台)要求 webhook 在限定時間內回 HTTP 200,否則會判定失敗並重試。Webhook 節點的 Respond 選項有三種:
- Immediately:n8n 一收到就馬上回 200,再慢慢跑後面的流程。適合「對方只要確認收到、不需要回傳內容」。
- When Last Node Finishes:等整條工作流跑完,把最後一個節點的結果回給對方。適合「對方要等你的處理結果」,但要注意流程不能跑太久。
- Using Respond to Webhook Node:在流程中間用獨立的 Respond to Webhook 節點精準控制回什麼、何時回。最有彈性,適合需要客製回應內容的場景(例如回給 LINE 一段訊息)。
選錯模式的典型症狀是:外部服務一直顯示 timeout 或重複觸發——多半是流程太久卻用了「等跑完才回」。這種情況改用 Immediately,把耗時工作放到回應之後。
安全:驗證請求真的來自對方
Production URL 是公開網址,任何知道網址的人都能打。對於金流、重要事件,務必驗證:
- 簽章驗證:Stripe、GitHub 等服務會在 header 帶一段用密鑰算出的簽章(如
x-signature)。你要在工作流裡用同一把密鑰重算一次、比對相符才繼續處理。 - 內建 Authentication:對於自己控制的來源,開 Header Auth 或 Basic Auth 即可。
- 密鑰管理:驗證用的密鑰放 n8n 的 Credentials,不要寫死在節點裡。
更完整的事件串接(LINE / Slack / Stripe)可參考n8n Webhook 串接 LINE、Slack、Stripe 事件。
除錯清單
Webhook 沒反應時,照順序查:
- 用對 URL 了嗎? 正式串接要用 Production URL,且工作流已 Activate;測試要先按 Listen for test event。
- HTTP Method 對嗎? 外部送 POST、你設成 GET 就收不到。
- 進 Executions 看有沒有紀錄。 有紀錄但失敗 vs 完全沒紀錄,是兩種不同問題——前者是流程錯,後者是根本沒收到。
- self-hosted 的對外網址對嗎? self-hosted 要設
WEBHOOK_URL環境變數為你的對外網域,否則 n8n 產生的網址可能是內網位址,外部根本連不到。 - 有防火牆 / 反向代理擋住嗎? 確認對外的 HTTPS 與路徑有正確轉發到 n8n。
小結
Webhook Trigger 是 n8n 即時自動化的入口。記住三個重點就不會卡:Test URL 只是開發用、正式一定用 Production URL 並 Activate;先看 test event 確認資料結構再寫 Expression;金流類事件務必驗簽章。把這些顧好,外部事件就能穩穩驅動你的工作流。
接著建議搭配n8n 排程觸發完整教學補齊另一種觸發方式,或回到n8n 核心節點完全攻略看觸發之後的資料怎麼處理。