本文へスキップ
n8n

【完全ガイド】n8n Webhookの使い方|設定から認証・レスポンス制御・実践例まで

Hirokuma
12分で読める
【完全ガイド】n8n Webhookの使い方|設定から認証・レスポンス制御・実践例まで

Webhookは、外部サービスからのHTTPリクエストを受け取ってワークフローを起動する、n8nの最も重要なトリガーの一つです。

APIを持つあらゆるサービスと連携でき、フォーム送信、決済完了、GitHub Push、Slackコマンドなど、リアルタイムなイベント駆動型の自動化を実現できます。

この記事では、Webhookノードの基本設定から、認証、レスポンス制御、実践的な活用例まで、詳しく解説します。

Webhookとは?ポーリングとの違い

Webhookの仕組み

Webhookは、あるシステムでイベントが発生した際に、別のシステムに自動的にHTTPリクエストを送信する仕組みです。

ポーリング方式

  • 定期的にデータを取得しに行く
  • 変化がなくてもリクエストが発生
  • リアルタイム性が低い
  • リソース消費が多い

Webhook方式

  • イベント発生時のみ通知を受け取る
  • リアルタイムに処理を開始
  • 効率的なリソース利用
  • 即時性が高い

n8n Webhookの特徴

  • HTTPメソッド(GET / POST / PUT / DELETE等)に対応
  • 認証機能(Basic認証、Header認証等)
  • レスポンスの柔軟な制御
  • テスト用URLと本番用URLの分離
  • 最大ペイロードサイズ:16MB(セルフホスト版は変更可能)

Webhookノードの基本設定

Step 1:Webhookノードの追加

  1. 新規ワークフローを作成
  2. 「+」ボタンまたは「Add first step」をクリック
  3. 検索ボックスに「Webhook」と入力
  4. 「Webhook」ノードを選択

Step 2:基本パラメータの設定

パラメータ説明設定例
HTTP Method受け付けるHTTPメソッドPOST(最も一般的)
PathWebhookのURLパス/order-notification
Authentication認証方式None / Basic Auth / Header Auth
RespondレスポンスのタイミングImmediately / When Last Node Finishes

Step 3:Webhook URLの確認

Webhookノードを設定すると、2種類のURLが生成されます。

Test URL

https://your-n8n-instance.com/webhook-test/xxxxxxxx-xxxx-xxxx
  • テスト実行用
  • 「Listen for Test Event」で待機状態にする必要あり
  • 受信データがエディタに表示される

Production URL

https://your-n8n-instance.com/webhook/xxxxxxxx-xxxx-xxxx
  • 本番運用用
  • ワークフローをアクティブ化すると有効になる
  • Executionsタブで実行履歴を確認

カスタムパスの設定

デフォルトではランダムなUUIDがパスに設定されますが、わかりやすいカスタムパスに変更できます。

設定例

  • /contact-form
  • /payment-complete
  • /github-webhook
  • /api/v1/orders

ルートパラメータの使用

動的なパスも設定可能です。

/orders/:orderId/users/:userId/profile

Webhookのテスト方法

方法1:n8nのテスト機能を使う

  1. Webhookノードを選択
  2. 「Listen for Test Event」をクリック
  3. 待機状態になったら、Test URLにリクエストを送信
  4. 受信データがノードに表示される

方法2:curlコマンドでテスト

GETリクエスト

curl -X GET "https://your-n8n-instance.com/webhook-test/your-path"

POSTリクエスト(JSONデータ)

curl -X POST "https://your-n8n-instance.com/webhook-test/your-path"-H "Content-Type: application/json"-d '{"name": "テスト", "email": "test@example.com"}'

方法3:ブラウザ拡張機能を使う

  • Talend API Tester(Chrome拡張)
  • Postman
  • Insomnia

GUIでリクエストを作成・送信でき、レスポンスも確認できます。

認証の設定

セキュリティのため、Webhookには認証を設定することを推奨します。

Basic認証

ユーザー名とパスワードで認証します。

設定手順

  1. Authentication:「Basic Auth」を選択
  2. Credentialを作成(ユーザー名・パスワードを設定)

リクエスト例

curl -X POST "https://your-n8n-instance.com/webhook/your-path"-u "username:password"-H "Content-Type: application/json"-d '{"data": "test"}'

Header認証

カスタムヘッダーで認証します。APIキーの検証に適しています。

設定手順

  1. Authentication:「Header Auth」を選択
  2. Credentialを作成
  3. Header Name:X-API-Key
  4. Header Value:your-secret-api-key

リクエスト例

curl -X POST "https://your-n8n-instance.com/webhook/your-path"-H "X-API-Key: your-secret-api-key"-H "Content-Type: application/json"-d '{"data": "test"}'

JWT認証

JWTトークンによる認証も設定可能です。

レスポンスの制御

Webhookノードは、リクエストに対するレスポンスを柔軟に制御できます。

Respond設定の種類

設定動作用途
Immediately即座に応答を返す処理完了を待たない場合
When Last Node Finishes最後のノード完了時に応答処理結果を返す場合
Using ‘Respond to Webhook’ Node専用ノードで制御柔軟なレスポンス制御

Respond to Webhookノードの使用

レスポンスを細かく制御したい場合は、「Respond to Webhook」ノードを使用します。

設定可能な項目

  • Response Code:200、201、400、500など
  • Response Headers:カスタムヘッダー
  • Response Body:JSON、テキスト、バイナリ

構成例

[Webhook] → [処理ノード] → [Respond to Webhook]

Respond to Webhookの設定例

Response Code: 200Response Body:{"success": true,"message": "データを受信しました","orderId": "{{ $json.orderId }}"}

受信データの取得方法

Webhookで受信したデータは、後続のノードで参照できます。

JSONボディの取得

// リクエストボディ全体{{ $json }}
// 特定のフィールド{{ $json.name }}{{ $json.email }}{{ $json.order.items[0].name }}

クエリパラメータの取得

GETリクエストのクエリパラメータは以下で取得します。

// ?userId=123&action=view の場合{{ $json.query.userId }}{{ $json.query.action }}

ヘッダーの取得

{{ $json.headers['content-type'] }}{{ $json.headers['x-custom-header'] }}

ルートパラメータの取得

パスに :param を含む場合:

// /orders/:orderId でアクセスした場合{{ $json.params.orderId }}

実践ワークフロー①:フォーム送信→Slack通知

Webサイトのお問い合わせフォームからデータを受け取り、Slackに通知します。

ワークフロー構成

[Webhook] → [Slack]

Webhookノードの設定

  • HTTP Method:POST
  • Path:/contact-form
  • Authentication:Header Auth(推奨)
  • Respond:Immediately

Slackノードの設定

  • Operation:Send a Message
  • Channel:#contact
  • Text
📩 *新規お問い合わせ**お名前:* {{ $json.body.name }}*メール:* {{ $json.body.email }}*内容:*{{ $json.body.message }}

フォームからの送信例(JavaScript)

fetch('https://your-n8n-instance.com/webhook/contact-form', {method: 'POST',headers: {'Content-Type': 'application/json','X-API-Key': 'your-secret-key'},body: JSON.stringify({name: document.getElementById('name').value,email: document.getElementById('email').value,message: document.getElementById('message').value})});

実践ワークフロー②:決済完了→顧客通知

Stripeなどの決済サービスからWebhookを受け取り、顧客にメールを送信します。

ワークフロー構成

[Webhook] → [IF(イベント判定)] → [Gmail] → [Google Sheets]

Webhookノードの設定

  • HTTP Method:POST
  • Path:/stripe-webhook
  • Respond:Immediately(Stripeは即時応答を期待)

IFノードの設定

条件: {{ $json.body.type }} equals "payment_intent.succeeded"

Gmailノードの設定

  • To:{{ $json.body.data.object.receipt_email }}
  • Subject:ご購入ありがとうございます
  • Message:決済完了のお知らせメール本文

実践ワークフロー③:GitHub Webhook→自動デプロイ通知

GitHubリポジトリへのPushを検知して、Slackに通知します。

ワークフロー構成

[Webhook] → [IF(ブランチ判定)] → [Slack]

Webhookノードの設定

  • HTTP Method:POST
  • Path:/github-push

IFノードの設定

条件: {{ $json.body.ref }} equals "refs/heads/main"

Slackメッセージ

🚀 *本番ブランチにPushがありました**リポジトリ:* {{ $json.body.repository.full_name }}*コミッター:* {{ $json.body.pusher.name }}*コミット:* {{ $json.body.head_commit.message }}*URL:* {{ $json.body.head_commit.url }}

GitHub側の設定

  1. リポジトリの「Settings」→「Webhooks」
  2. 「Add webhook」をクリック
  3. Payload URL:n8nのProduction URLを入力
  4. Content type:application/json
  5. Secret:任意のシークレットキー(署名検証用)
  6. Which events:「Just the push event」を選択

実践ワークフロー④:APIエンドポイントの構築

Webhookを使って独自のAPIエンドポイントを構築できます。

ワークフロー構成

[Webhook] → [データ処理] → [Respond to Webhook]

ユーザー情報取得APIの例

Webhookノード

  • HTTP Method:GET
  • Path:/api/users/:userId
  • Respond:Using ‘Respond to Webhook’ Node

PostgreSQLノード(データ取得)

SELECT * FROM users WHERE id = {{ $json.params.userId }}

Respond to Webhookノード

{"success": true,"data": {"id": {{ $json.id }},"name": "{{ $json.name }}","email": "{{ $json.email }}"}}

セルフホスト版でのWebhook設定

セルフホスト版のn8nでWebhookを外部から受け取るには、いくつかの設定が必要です。

環境変数の設定

# Webhook URL のベースURLWEBHOOK_URL=https://your-domain.com/
# ペイロードサイズの上限(デフォルト16MB)N8N_PAYLOAD_SIZE_MAX=16777216

ローカル環境での外部公開(ngrok)

ローカル環境でWebhookを受け取るには、ngrokなどのトンネリングサービスを使用します。

ngrokのインストールと起動

# インストールbrew install ngrok
# トンネル開始(n8nが5678ポートで動作している場合)ngrok http 5678

生成されるURL

https://xxxx-xxx-xxx.ngrok.io

このURLをn8nの環境変数 WEBHOOK_URL に設定します。

トラブルシューティング

よくある問題と解決方法

問題原因解決方法
Webhookが受信できないワークフローが非アクティブワークフローをアクティブ化
Test URLで受信できない待機状態になっていない「Listen for Test Event」をクリック
404エラーURLパスが間違っている正しいURLをコピーして使用
401エラー認証情報が不正認証ヘッダー/パスワードを確認
タイムアウト処理に時間がかかりすぎRespond: Immediatelyに変更
ペイロードエラーデータサイズ超過16MB以下に抑える、または上限変更

デバッグ方法

  1. Executionsタブで実行履歴を確認:成功/失敗したリクエストの詳細を確認
  2. 受信データの確認:Webhookノードの出力を確認して、期待するデータが来ているか確認
  3. 外部ツールでリクエスト確認:Postmanやcurlで直接リクエストして動作確認

よくある質問(FAQ)

Q. Test URLとProduction URLの違いは?

A. Test URLはテスト実行時に使用し、「Listen for Test Event」で待機状態にする必要があります。Production URLはワークフローをアクティブ化すると常に有効になり、本番運用に使用します。

Q. Webhookの認証は必須ですか?

A. 必須ではありませんが、セキュリティのため強く推奨します。認証なしのWebhookは誰でもリクエストを送信できるため、不正なデータ送信やDoS攻撃のリスクがあります。

Q. 同じパスで複数のHTTPメソッドに対応できますか?

A. 1つのWebhookノードでは1つのHTTPメソッドのみ対応します。複数のメソッドに対応する場合は、別々のWebhookノードを作成するか、HTTP Methodを「ALL」に設定します。

Q. Webhookで画像やファイルを受け取れますか?

A. はい、バイナリデータも受け取れます。最大16MB(セルフホスト版では設定変更可能)まで対応しています。

Q. レスポンスを返さないとどうなりますか?

A. Respond設定が「Immediately」の場合、ワークフロー開始時に自動的に200レスポンスが返されます。「When Last Node Finishes」の場合、処理完了まで接続が維持され、完了後にレスポンスが返されます。

まとめ

この記事では、n8nのWebhookノードの使い方を詳しく解説しました。

基本設定のポイント

  • HTTPメソッドは用途に応じて選択(POST が最も一般的)
  • パスはわかりやすい名前を設定
  • Test URLとProduction URLを使い分ける
  • セキュリティのため認証を設定

レスポンス制御

  • Immediately:即時応答(処理完了を待たない)
  • When Last Node Finishes:処理結果を返す
  • Respond to Webhook:細かいレスポンス制御

活用例

  • フォーム送信の処理
  • 決済Webhookの受信
  • Git操作の通知
  • 独自APIエンドポイントの構築

次のステップ

  1. シンプルなWebhook→Slack通知を構築してテスト
  2. 認証を追加してセキュリティを強化
  3. Respond to Webhookでレスポンスを制御
  4. 実際の外部サービスと連携

Webhookを使いこなすことで、n8nの活用範囲が大きく広がります。ぜひ様々なサービスとの連携に活用してください。

関連記事・公式資料

【2025年版】n8n × Gmail連携ガイド|AIで自動返信を実現する実践レシピ5選n8nとGmailを連携したAI自動返信ワークフローの構築方法を徹底解説。OAuth認証設定から、AIによる返信判定・文案生成、下書き保存まで5ステップで実装。問い合わせ一次返信、スプレッドシート転記など実践レシピ5選で月20時間以上の業務効率化を実現。www.tentspace.net 【2025年版】n8n × Slack連携ガイド|通知自動化からAIボットまで実践レシピ5選n8nとSlackの連携方法を徹底解説。Slackアプリの作成からBot Token取得、メッセージ送信、Triggerの設定まで詳しく説明。毎朝ニュース配信、フォーム通知、GitHub連携、AIボットなど実践レシピ5選で業務効率化を実現できます。www.tentspace.net n8n公式:WebhookノードLearn how to use the Webhook node in n8n. Follow technical documentation to integrate Webhook node into your workflows.docs.n8n.io