n8nのWebhookは、外部サービスからHTTP リクエストを受け取ってワークフローを開始するトリガー ノードです。専用integrationがないサービスでも、Webhookを送れるならn8nへデータを渡せます。
基本で最も重要なのは、Test URLとProduction URLを混同しないこと、受け取るデータを検証すること、公開URLを無防備に使わないことです。
目次
先に結論:Webhookは「受ける→検証する→処理する→返す」で考える
外部サービス
→ Webhook URL
→ 必須項目・event typeを検証
→ n8nの後続処理
→ Response / Execution Log
開発中はTest URL、本番はProduction URLを使います。公開Endpointへ届いた値をそのままAIやDB更新へ渡さず、ValidationとAuthenticationを先に設計するのが基本です。
表は横にスクロールできます
| 確認項目 | 開発時 | 本番時 |
|---|---|---|
| URL | Test URL | Production URL |
| Payload確認 | Editorで確認 | Executionsで確認 |
| Security | Testでも入力確認 | Authentication・Validationを必須検討 |
| Failure | 想定外入力を試す | Response・Log・再処理方法を決める |
仕組みを理解する
Webhook nodeをWorkflowの先頭へ置く
Webhook ノードはトリガーとして使います。外部サービスがeventを送信すると、そのリクエストを起点に後続ノードが動きます。
HTTP MethodとPathを決める
GET、POST、PUT、PATCH、DELETEなど用途に合うmethodを選び、Webhook pathを設定します。一般的なevent受信ではPOSTが使われることが多いですが、送信元サービスの仕様に合わせます。
開発中はTest URLを使う
n8nはTest URLとProduction URLを分けています。Test URLではListen for テスト eventを開始してからリクエストを送り、editor上でpayloadを確認します。
公式Docsではテスト webhookのlistening時間は120秒です。
安全に受け取って処理する
Incoming dataの構造を確認する
headers、query、bodyなど、実際に何が届くかをテスト executionで確認します。想定した項目が必ず存在する前提にせず、後続ノードで必要な値を取り出します。
Validationと分岐を入れる
必須項目、event type、ステータスなどを確認し、不要なリクエストは処理しないようにします。外部入力をそのままAI、database、メール送信へ渡さないようにします。
必要ならAuthenticationを設定する
Webhook ノードではBasic auth、Header auth、JWT authを利用できます。送信元が対応している方法を選び、公開endpointを誰でも実行できる状態にしないようにします。
本番運用で確認すること
本番はProduction URLへ切り替える
ワークフローを公開するとProduction URLが有効になり、外部サービスから継続的に呼び出せます。Production リクエストはeditorへ直接表示されないため、Executionsから確認します。
Responseと失敗時の処理を決める
呼び出し元がレスポンスを必要とする場合は、何を返すかを決めます。timeout、validation エラー、downstream failureが起きたときのレスポンスとlogも設計します。
AIものさしの判断
n8nのWebhookは、「URLを発行して外部から叩く」だけなら簡単ですが、本番運用ではテスト / production、validation、authentication、エラー handlingが重要です。
テスト endpoint→payload確認→validation→アクション→レスポンス→production 公開の順で作ると、外部eventを安定したワークフローへ接続しやすくなります。
AIものさしでは、Webhookが1回動いたことではなく、正しいリクエストだけを受け取り、本番URLで継続実行でき、失敗時も追える状態をこのワークフローの完了条件にします。
受信データを「後続処理の契約」にする
Webhookは、リクエストが届けば成功ではありません。送信元の仕様変更や再送に備えて、n8nへ渡すJSONのうち「必須」「任意」「処理を止める条件」を決めます。たとえば注文通知を受けるなら、注文ID、event type、発生日時を必須候補にし、顧客表示名は欠けても記録だけできる任意項目にします。実際に何が届くかは送信元ごとに異なるため、下のJSONは設計例であり、特定サービスの実payloadではありません。
{
"event": "order.created",
"event_id": "evt_123",
"order_id": "ord_456",
"occurred_at": "2026-10-10T09:00:00Z"
}
n8nで受けたら、最初の分岐でevent名と必須値を確認します。eventが想定外なら後続の更新・通知へ進ませず、実行記録に理由を残します。order_idが空なら再送しても直らない入力不備として扱い、送信元に返す応答と担当者への通知を分けます。重複event_idを受け取る可能性があるなら、同じIDを処理済みとして記録し、二重登録を防ぐ仕組みを後続システム側も含めて用意します。
Test URLから本番へ移す手順
-
WebhookノードでHTTP methodとpathを決め、Test URLを選びます。送信元のテスト機能から1件送り、n8nの実行データでheaders、query、bodyを確認します。値が見えないときは、Test URLをlisten状態にしてからリクエストを送ったか、送信元がPOSTなど設定したmethodを使っているかを先に確認します。
-
必須項目の判定を追加し、正常系・必須値欠落・未知eventの3パターンを試します。テストで受け取れた値だけを根拠にschemaを固定し、受信側の画面に出ていないフィールドを推測で使わないようにします。
-
送信元が対応する認証方式を選びます。n8nのWebhookはBasic、Header、JWTまたは認証なしを選べます。送信元が認証ヘッダーを設定できず、固定IPで接続する運用なら、n8nのIP(s) Allowlistで接続元を限定します。IP制限も使えない場合は、認証なしの公開Webhookを機密処理へ直結しないでください。送信元署名を使う場合は、n8nの標準認証方式とは別の実装として、送信元仕様に合わせた受信側検証が必要です。
-
Responseの返し方を選びます。受信を受け付けた時点で返すのか、最後のノードの結果を返すのか、Respond to Webhookノードで明示するのかは、呼び出し元が同期応答を必要とするかで決めます。後続処理が遅いのに完了結果を待たせる設計では、送信元のtimeoutと再送が重なり二重処理になりやすくなります。
-
Workflowを公開した後、送信元のURLをProduction URLへ切り替えます。Test URLでの実行はeditorに表示されますが、Production URLの実行データはExecutionsから確認します。切替後は1件の実データで、受付・後続Action・応答・実行記録までを追います。
サイズ・権限・応答を先に決める
n8n公式DocsではWebhookの最大payload sizeは16MBと案内されています。ファイルや長い本文を送る場合は、送信元で必要な情報だけを絞れるか、バイナリ受信の設定が必要かを確認してください。セルフホスト環境では環境変数で上限を変更できるとされていますが、変更可否やインフラ側の制限は利用中の環境管理者に確認します。受信上限を上げれば無制限に安全になるわけではなく、サイズ検査、処理時間、保存先容量も別々に見積もる必要があります。
認証を設定しても、入力内容の正しさは保証されません。公開URLを知っている利用者が正規の認証を通過した後にも、event typeや業務上の許可を検証してください。また、実行ログにメール本文や個人情報が残る可能性があります。何を記録し、いつ削除するかはn8n側の実行データ保存方針と業務要件を照らして決めます。secretそのものをURL query、Codeノードの固定文字列、通知文へ書かないでください。
表は横にスクロールできます
| 症状 | まず見る場所 | 次の判断 |
|---|---|---|
| Testで届かない | listen状態、method、送信元の送信履歴 | URLやmethodの不一致を修正して再送 |
| Productionだけ失敗 | 公開状態、Production URL、Executions | Test URLを本番送信先に残していないか確認 |
| 同じ処理が複数回走る | 送信元のretry、event_id、応答時間 | 冪等性キーで重複を防ぎ、受信応答を短くする |
| 予期しないデータが来る | body、headers、event名 | validationで停止し、必要最小の情報だけ通す |
この表の切り分けは、エラー内容を決めつけるものではありません。まず送信元の送信履歴とn8nのExecutionsを同じ時刻・event_idで照合し、どちら側で止まったかを確定してから直します。
公開前チェック
-
Test URLとProduction URLを送信元の環境ごとに記録したか
-
method、path、必須項目が送信元の設定と一致しているか
-
正常・不足・未知eventのテストを通したか
-
認証または代替の呼び出し元制限を決めたか
-
重複送信時に二重登録・二重通知しないか
-
payload上限を超える可能性と個人情報のログ保存を確認したか
-
Production URLへ切り替えた後、Executionsで実行結果を追えるか
この条件のどれかを確認できないなら、本番へURLを切り替えるのを止め、送信元担当者またはn8n管理者に確認します。Webhookの導入完了は「テストで一度届いた」ことではなく、意図したeventだけが安全に処理され、失敗時に止まった場所を特定できる状態です。
更新確認日:2026-10-10
追加確認:n8n公式「Webhook」https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook(新しいタブで開く)
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:2026-09-28
