Webhook 是「可以被其他系統呼叫的 HTTP 端點(URL)」。
當外部系統發送 HTTP POST/GET 到這個 URL,n8n 的 Workflow 就會被觸發開始執行。
用途:把外部事件(表單提交、第三方 callback、前端事件)接進來,然後在 n8n 裡做判斷、寄信、記錄到 Google Sheet、推通知等自動化。
-進入 n8n → Workflows → New Workflow
-搜尋 Webhook 節點,拖到畫布
-設定參數:
HTTP Method(The HTTP method to listen to): POST
Path: form-submit
Path:Webhook 的「門牌號碼」,決定表單要送到哪個網址,例如 /submitForm
Respond(When and how to respond to the webhook): Immediately
四種Respond可以選:
-點擊 Listen for test event 立即開始監聽
A. 用 curl(Linux / mac / WSL / Git Bash)curl -X POST http://localhost:5678/webhook/form-submit \ -H "Content-Type: application/json" \ -d '{"name":"小明","email":"example@gmail.com","score":**}'
我使用的是此方法
及格:
Invoke-RestMethod -Uri "http://localhost:5678/webhook-test/form-submit" -Method POST
-Headers @{ "Content-Type" = "application/json" } `
-Body ([System.Text.Encoding]::UTF8.GetBytes('{"name":"小明","email":"saorsa.lovisa@gmail.com","score":65}'))
不及格:
Invoke-RestMethod -Uri "http://localhost:5678/webhook-test/form-submit" -Method POST
-Headers @{ "Content-Type" = "application/json" } `
-Body ([System.Text.Encoding]::UTF8.GetBytes('{"name":"小明","email":"saorsa.lovisa@gmail.com","score":55}'))
C. Postman
'{"name":"小明","email":"example@gmail.com","score":55}
測試結果如下:
Webhook (接收 POST JSON)
↓
Set (可選:把收到的欄位整理成想要的格式)
↓
IF (判斷 score >= 60)
├─ True → Gmail (寄及格信)
└─ False → Gmail (寄未及格信)
(1) Webhook 節點設定
• Node 名稱:Webhook - exam
• HTTP Method:POST
• Path:form-submit(你可以自行命名)
此處同前半段所述之內容。
(2)Set 節點:整理欄位
把 Webhook 輸入整理成需要的欄位
Add Field:
o name -> Expression: {{($json["body"])["name"] }}
o email -> Expression: {{($json["body"])["email"] }}
o score -> Expression: {{($json["body"])["score"] }}
(3) IF 節點設定(判斷是否及格)
• 左側 value:Expression {{$json["score"]}}
• Operation: greater than or equal to
• Right value:60
AND
• 左側 value:Expression {{$json["score"]}}
• Operation: less than
• Right value:60
(4A) Gmail 節點(True 分支:及格通知)
• Node:Gmail - send pass
• Credentials:選你已經設定的 Google Gmail OAuth2
• To Email:Expression {{$json["email"]}}
• Subject:{{ "成績通知 - " + $json["name"] }}
• Message:恭喜 {{ $json["name"] }},你已及格!你的成績是 {{$json["score"]}}
(4B) Gmail 節點(False 分支:未及格通知)
• Node:Gmail - send fail
• To Email:Expression {{$json["email"]}}
• Subject:{{ "成績通知 - " + $json["name"] }}
• Message:你的成績是 {{$json["score"]}},尚未通過。建議複習 XXX,或請助教洽詢重修資源。
4A和4B之結果圖: