メインコンテンツへスキップ
Think You Lab
ブログログイン無料で始める
トップ/ブログ/how-to
n8nWebhookSlack自動化初心者

n8n Webhook の使い方|URL 発行から Slack 通知まで実例付きで解説

n8n Webhook ノードで外部サービスとの連携を実装する完全手順。URL 発行・curl テスト・Slack 転送・認証設定まで、WF_notify 実例付きで解説します。

2026-04-15·約17分

LINE 公式アカウント

毎月の収益とWFを公開中。LINEで受け取る

目次
  • n8n の Webhook ノードとは何か
  • Webhook とは何か(HTTPリクエストをトリガーにする仕組み)
  • Webhook トリガー vs スケジュールトリガーの違い
  • THINK YOU LAB での活用例(WF_notify)
  • Webhook URL を発行して受け取る(基本)
  • Webhook ノードをワークフローに追加する
  • テスト用 URL の取得と curl での動作確認
  • 受け取ったデータの構造
  • HTTP メソッドの選択(POST / GET の使い分け)
  • 受け取ったデータを Slack に転送する(実践)
  • Slack ノードの設定(Incoming Webhook URL の入力)
  • Webhook のデータを Slack メッセージに埋め込む
  • テスト実行と動作確認
  • ワークフローを本番モードに切り替える
  • 本番 URL を外部サービスに登録する
  • VPS / n8n Cloud での公開 URL の確認
  • GitHub Webhook 設定画面との対応
  • ローカル環境での開発(ngrok を使う場合)
  • THINK YOU LAB での WF_notify 実例
  • WF_notify の構成(agent-ops-monitor → n8n Webhook → Slack)
  • Webhook URL の設計(エンドポイント名の命名)
  • エラー情報を構造化して Slack に転送する設計
  • 応用 — 認証付き Webhook と Respond to Webhook
  • Header Auth による認証設定(X-Webhook-Secret ヘッダー)
  • Respond to Webhook ノードでレスポンスを返す
  • Webhook を同期的に使う(リクエスト→処理→レスポンス)
  • よくあるトラブルと対処法
  • テストモードで受け取れない
  • 本番 URL が 404 になる
  • データの中身が空になる($json の参照先ミス)
  • 次のステップ
  • FAQ

目次

  • n8n の Webhook ノードとは何か
  • Webhook とは何か(HTTPリクエストをトリガーにする仕組み)
  • Webhook トリガー vs スケジュールトリガーの違い
  • THINK YOU LAB での活用例(WF_notify)
  • Webhook URL を発行して受け取る(基本)
  • Webhook ノードをワークフローに追加する
  • テスト用 URL の取得と curl での動作確認
  • 受け取ったデータの構造
  • HTTP メソッドの選択(POST / GET の使い分け)
  • 受け取ったデータを Slack に転送する(実践)
  • Slack ノードの設定(Incoming Webhook URL の入力)
  • Webhook のデータを Slack メッセージに埋め込む
  • テスト実行と動作確認
  • ワークフローを本番モードに切り替える
  • 本番 URL を外部サービスに登録する
  • VPS / n8n Cloud での公開 URL の確認
  • GitHub Webhook 設定画面との対応
  • ローカル環境での開発(ngrok を使う場合)
  • THINK YOU LAB での WF_notify 実例
  • WF_notify の構成(agent-ops-monitor → n8n Webhook → Slack)
  • Webhook URL の設計(エンドポイント名の命名)
  • エラー情報を構造化して Slack に転送する設計
  • 応用 — 認証付き Webhook と Respond to Webhook
  • Header Auth による認証設定(X-Webhook-Secret ヘッダー)
  • Respond to Webhook ノードでレスポンスを返す
  • Webhook を同期的に使う(リクエスト→処理→レスポンス)
  • よくあるトラブルと対処法
  • テストモードで受け取れない
  • 本番 URL が 404 になる
  • データの中身が空になる($json の参照先ミス)
  • 次のステップ
  • FAQ

「curl で叩いたら Slack に通知が来る」——そういうフローを5分で動かすための記事です。

n8n を起動したものの「次に何をすればいいか分からない」という人向けに、Webhook ノードを使って外部からリクエストを受け取り、Slack に転送するフローを一本通します。

この記事を読み終えると:

  • Webhook URL を発行して外部サービスからデータを受け取れる
  • 受け取ったデータを Slack に転送できる
  • テストモードと本番モードの違いを理解して本番稼働できる

前提条件: n8n が起動済みであること(まだの場合は n8n を Docker でローカル起動する手順 を参照)

著者について: THINK YOU LAB では WF_notify として「Python スクリプト → n8n Webhook → Slack 通知」のフローを本番稼働させています。この記事はその実装経験をもとに書いています。


n8n の Webhook ノードとは何か

Webhook とは何か(HTTPリクエストをトリガーにする仕組み)

Webhook は「外部サービスが何かを起こしたとき、指定した URL に HTTP リクエストを送る」という仕組みです。n8n の Webhook ノードは、その「受け取り口(エンドポイント)」を発行します。

Webhook ノードを使うと、以下のようなことができます:

  • GitHub にコードがプッシュされたら → n8n に通知 → Slack に投稿
  • Stripe の決済が完了したら → n8n に通知 → Supabase にレコードを追記
  • サーバーのスクリプトがエラーを検知したら → n8n に通知 → Slack に警告を送る

「プログラムからプログラムへの通知窓口」と考えると分かりやすいです。

Webhook トリガー vs スケジュールトリガーの違い

n8n のトリガーには大きく2種類あります。

| トリガー種別 | 起動タイミング | 用途 | |---|---|---| | Webhook トリガー | 外部から HTTP リクエストが届いたとき | イベント駆動(何かが起きたら動く) | | スケジュールトリガー | 設定した時刻・間隔(cron 式)になったとき | 定期実行(毎朝9時に RSS 取得、など) |

Webhook トリガーは「外部から何かが起きたとき」に即座に反応します。スケジュールトリガーは「決まった時刻に定期実行」します。

THINK YOU LAB での活用例(WF_notify)

THINK YOU LAB では WF_notify というワークフローで Webhook を本番運用しています。

agent-ops-monitor(Python スクリプト)
  → POST https://n8n-host/webhook/notify
  → n8n Webhook ノード: リクエストを受け取る
  → IF ノード: エラーレベル(error / warn / info)で分岐
  → Slack ノード: #ops-alert チャンネルに通知

Python スクリプトが自分のエラーを自分で n8n に報告する仕組みです。n8n がエラーのルーティングとフォーマットを担うため、通知先を Slack から他のサービスに変更するときもコードを触らずに済みます。


Webhook URL を発行して受け取る(基本)

Webhook ノードをワークフローに追加する

  1. n8n の管理画面を開き、「New workflow」をクリックして新規ワークフローを作成します
  2. 「+ Add first step」をクリック
  3. 検索ボックスに「webhook」と入力して 「On webhook call」 を選択します
  4. Webhook ノードが追加され、設定パネルが開きます

設定パネルの主な項目:

  • HTTP Method: POST(最もよく使う)/ GET / PUT など
  • Path: Webhook URL のパス部分(デフォルトはランダム文字列。変更可能)
  • Authentication: 認証設定(デフォルトは None)

テスト用 URL の取得と curl での動作確認

Webhook ノードには テスト URL と 本番 URL の2種類があります。

| URL 種別 | パス形式 | 有効条件 | |---|---|---| | テスト URL | /webhook-test/{path} | ワークフローをテストモードで開いているとき | | 本番 URL | /webhook/{path} | ワークフローが「Active」になっているとき |

まずテスト URL を確認します。Webhook ノードの設定パネルで「Listen for test event」ボタンをクリックして待機状態にすると、テスト URL が表示されます。

# テスト URL に curl でリクエストを送る例
curl -X POST https://your-n8n.com/webhook-test/notify \
  -H "Content-Type: application/json" \
  -d '{"message": "テスト通知", "level": "info"}'

n8n 側で「Test event received」と表示されれば受け取り成功です。

受け取ったデータの構造

n8n が Webhook で受け取ったデータは以下の構造で参照できます。

$json.body       → POST ボディのデータ(JSON の場合)
$json.headers    → HTTPヘッダー(Content-Type など)
$json.query      → クエリパラメータ(?key=value の部分)

例えば {"message": "テスト", "level": "error"} を POST した場合、次のノードで {{ $json.body.message }} と書くと テスト を取り出せます。

HTTP メソッドの選択(POST / GET の使い分け)

| メソッド | 用途 | ボディ | |---|---|---| | POST | データを送信(通知・フォーム送信・イベント通知) | あり(JSON / フォームデータ) | | GET | 情報を取得(クエリパラメータでデータを渡す) | なし(クエリパラメータを使う) | | PUT | データの更新(べき等な操作) | あり |

ほとんどのユースケースでは POST を使います。


受け取ったデータを Slack に転送する(実践)

Slack ノードの設定(Incoming Webhook URL の入力)

Webhook ノードの右側にある「+」ボタンをクリックして Slack ノード を追加します。

Credential(認証情報)の設定手順:

  1. 「Create new credential」をクリック
  2. Slack API を選択
  3. Slack の管理画面(api.slack.com/apps)でアプリを作成し、Incoming Webhooks を有効化
  4. 「Add New Webhook to Workspace」でチャンネルを選択し、Webhook URL(https://hooks.slack.com/services/...)をコピー
  5. n8n の Credential 設定に Webhook URL を貼り付けて保存

Webhook のデータを Slack メッセージに埋め込む

Slack ノードの Message フィールドに、受け取ったデータを埋め込みます。

送信者: {{ $json.body.source }}
レベル: {{ $json.body.level }}
内容: {{ $json.body.message }}

{{ }} の中に n8n の式(Expression)を書くと、前のノードのデータを参照できます。

THINK YOU LAB での実装例(WF_notify のメッセージフォーマット):

WF_notify では以下のペイロード形式で Webhook を受け取ります。

{
  "level": "error",
  "source": "agent-ops-monitor",
  "message": "Supabase への書き込みに失敗しました",
  "timestamp": "2026-03-15T10:30:00Z"
}

Slack のメッセージには {{ $json.body.source }}: {{ $json.body.message }} を設定しており、agent-ops-monitor: Supabase への書き込みに失敗しました という形式で通知されます。level が error の場合は <!here> メンションを付けて即時対応を促しています。

テスト実行と動作確認

  1. ワークフロー画面で「Execute Workflow」ボタンをクリック(テストモードで動かす)
  2. 再度 curl でリクエストを送る
  3. Slack の指定チャンネルにメッセージが届けば完成

Slack に届かない場合は、Slack ノードをクリックして「Test step」で単体テストを実行し、エラーメッセージを確認してください。

ワークフローを本番モードに切り替える

動作確認が取れたら、ワークフローを本番稼働させます。

  1. 画面右上の「Inactive」トグルをクリックして 「Active」 に切り替える
  2. Webhook URL が /webhook-test/ から /webhook/ に変わる
  3. これ以降は本番 URL に送られたリクエストが自動的に処理される

注意: Active にすると n8n を閉じていても(バックグラウンドで)ワークフローが動き続けます。意図しない実行が起きないよう、本番稼働前に動作を十分に確認してください。


本番 URL を外部サービスに登録する

VPS / n8n Cloud での公開 URL の確認

本番 URL は https://your-n8n-domain.com/webhook/notify の形式になります。

VPS(セルフホスト)の場合:

  • n8n の環境変数 WEBHOOK_URL に設定した値がベース URL になります
  • 例: WEBHOOK_URL=https://n8n.your-domain.com/ なら Webhook URL は https://n8n.your-domain.com/webhook/notify

GitHub Webhook 設定画面との対応

GitHub のリポジトリ設定で Webhook を登録する手順:

  1. GitHub のリポジトリ → Settings → Webhooks → 「Add webhook」
  2. Payload URL: n8n の本番 Webhook URL を入力(例: https://n8n.your-domain.com/webhook/github)
  3. Content type: application/json を選択
  4. Events: Just the push event(または必要なイベントを選択)
  5. 「Add webhook」で保存

ローカル環境での開発(ngrok を使う場合)

ローカルで動かしている n8n に外部からアクセスするには、ngrok を使ってトンネリングします。

# ngrok をインストール済みの場合
ngrok http 5678

起動すると https://xxxxx.ngrok.io のような公開 URL が発行されます。この URL を外部サービスの Webhook 設定に登録してください。

ただし ngrok の無料版は URL が固定されないため、起動するたびに Webhook の URL 登録をやり直す必要があります。開発用の割り切りとして使うのが現実的です。


THINK YOU LAB での WF_notify 実例

WF_notify の構成(agent-ops-monitor → n8n Webhook → Slack)

WF_notify は THINK YOU LAB のインフラ監視を担うワークフローです。

agent-ops-monitor(Python)
  ↓ POST /webhook/notify
n8n Webhook ノード
  ↓ $json.body を受け取る
IF ノード(level == "error")
  ↓ True: エラー通知フォーマット(@here メンション付き)
  ↓ False: 情報通知フォーマット(通常テキスト)
Slack ノード
  ↓ #ops-alert チャンネルに投稿

Webhook URL の設計(エンドポイント名の命名)

WF_notify では Webhook のパスを /webhook/notify に固定しています。複数のスクリプトが同一エンドポイントに POST できるように汎用的な名前にしています。

n8n の Webhook ノードの Path 設定で notify と入力するだけで、完全な URL は https://n8n-host/webhook/notify になります。

エラー情報を構造化して Slack に転送する設計

WF_notify が受け取るペイロードは以下の構造です。

{
  "level": "error",
  "source": "スクリプト名",
  "message": "エラーの内容",
  "timestamp": "ISO 8601 形式"
}

level フィールドで通知の重要度を分けており、error の場合は Slack のメッセージにメンション(<!here>)を付けます。info の場合は通常テキストで投稿します。

この設計により、通知量を制御しながら重要なエラーを見逃さない運用ができています。


応用 — 認証付き Webhook と Respond to Webhook

Header Auth による認証設定(X-Webhook-Secret ヘッダー)

Webhook URL が外部に漏れると誰でも叩けてしまいます。本番環境では認証を設定してください。

Webhook ノードの Authentication から「Header Auth」を選択します。

設定項目:

  • Name: ヘッダー名(例: X-Webhook-Secret)
  • Value: 認証トークン(ランダムな文字列を設定)

呼び出し側では以下のようにヘッダーを付けてリクエストします。

curl -X POST https://your-n8n.com/webhook/notify \
  -H "X-Webhook-Secret: your-secret-token" \
  -H "Content-Type: application/json" \
  -d '{"message": "認証付きテスト"}'

認証トークンが一致しない場合は HTTP 401 を返します。

Respond to Webhook ノードでレスポンスを返す

デフォルトでは Webhook は HTTP 200 のみを返します。処理結果をレスポンスに含めたい場合は 「Respond to Webhook」 ノードを追加します。

用途例:

  • フォームの送信結果(「登録が完了しました」など)をレスポンスに含める
  • 受け取ったデータの検証結果(成功 / エラーメッセージ)を返す
  • Stripe の Webhook に 200 OK を即時返して処理を非同期で続ける

Webhook を同期的に使う(リクエスト→処理→レスポンス)

「リクエストが来たら処理して、結果をレスポンスで返す」という同期的な使い方も可能です。

Respond to Webhook ノードをフローの最後に配置し、Response Body に返すデータを設定します。

{
  "status": "ok",
  "processed": true,
  "result": "{{ $json.output }}"
}

よくあるトラブルと対処法

テストモードで受け取れない

症状: curl を送っても n8n 側で何も起きない

原因と対処:

  1. 「Listen for test event」を押していない: Webhook ノードを開いて「Listen for test event」ボタンをクリックしてから curl を送ってください
  2. テスト URL と本番 URL を間違えている: テスト中は /webhook-test/ のパス、本番は /webhook/ のパスを使います
  3. ブラウザを閉じた: テストモードはブラウザを閉じると終了します。再度「Listen for test event」を押してください

本番 URL が 404 になる

症状: ワークフローを Active にしたつもりが、本番 URL にアクセスすると 404 になる

対処:

  1. n8n のワークフロー一覧を開く
  2. 対象ワークフローの「Active」トグルが オン(青色) になっているか確認
  3. ワークフローを保存していない場合は「Save」ボタンで保存してから Active にする
  4. docker logs n8n でエラーが出ていないか確認

データの中身が空になる($json の参照先ミス)

症状: Slack に undefined や空白が表示される

原因と対処: Webhook で受け取ったデータの参照パスを間違えています。n8n のデータ構造は以下の通りです。

POST ボディが { "message": "テスト" } の場合:
  正しい参照: {{ $json.body.message }}
  間違い例:   {{ $json.message }}(bodyを挟まないとundefined)

Webhook ノードの出力(Input/Output パネル)でデータ構造を確認してから式を書くと間違いが減ります。


次のステップ

Webhook で「外部から受け取る」仕組みが動いたら、次はデータの活用範囲を広げましょう。

関連記事:

  • n8n を Docker でローカル起動する手順
  • n8n と Claude AI を組み合わせた自動化ガイド
  • n8n vs Make セルフホスト派が本音で比較

FAQ

Q1. Webhook URL はいつ発行されますか? Webhook ノードをワークフローに追加した時点で URL が発行されます。ワークフローを保存した後、設定パネルで確認できます。

Q2. テスト URL は外部から叩けますか? テスト URL は n8n が起動していてワークフローが開かれているときのみ有効です。外部サービスの Webhook 設定に登録する場合は本番 URL(ワークフローを Active にした後の /webhook/ パス)を使ってください。

Q3. Webhook のパスは変更できますか? 変更できます。Webhook ノードの設定パネルの「Path」フィールドを任意の文字列に変更してください。変更後は外部サービスに登録している URL を更新する必要があります。

Q4. 複数のサービスから同じ Webhook URL に送ることはできますか? できます。WF_notify のように複数のスクリプトが同一エンドポイントに POST する設計は実用的です。ペイロードの source フィールドで送信元を識別して IF ノードで分岐させると管理しやすくなります。


Webhook の設計ミスで本番でハマった経験から作った、n8n Webhook 実装テンプレ(エラーハンドリング + 認証パターン込み)を LINE で無料配布中。そのまま使えます。

→ n8n Webhook 実装テンプレを受け取る(LINE登録・無料)

note

n8n レシピ集

Webhook を使った n8n WF テンプレート集。Slack・LINE・Stripe 連携WF収録

noteで読む¥2,980

LINE 公式アカウント

n8n Webhook 活用パターン集・セキュリティ設定チートシートをLINEで配布中

R

Rikuto (LAB)

非エンジニアが Claude Code × n8n × Supabase で副業システムを作り続ける実験記。 失敗も含めたリアルな一次情報を発信しています。

THINK YOU LAB 運営

関連記事

  • n8n を Docker でローカル起動する手順|docker run から docker-compose まで

    2026-04-15

  • 55本のn8nワークフローの裏側全公開 — 生きているWFと死んだWFの話

    2026-04-18

  • 55本のWFが1人で回り続ける構造とは何か — Agentic Flow Kit の全貌

    2026-04-18

← ブログ一覧へ
X でシェアLINE でシェア
← 前の記事Next.js App Router の middleware で Supabase 認証ガードを作る — 実装コード全公開
次の記事 →n8n vs Zapier vs Make 徹底比較 — 料金・機能・セルフホストの違いを解説

目次

  • n8n の Webhook ノードとは何か
  • Webhook とは何か(HTTPリクエストをトリガーにする仕組み)
  • Webhook トリガー vs スケジュールトリガーの違い
  • THINK YOU LAB での活用例(WF_notify)
  • Webhook URL を発行して受け取る(基本)
  • Webhook ノードをワークフローに追加する
  • テスト用 URL の取得と curl での動作確認
  • 受け取ったデータの構造
  • HTTP メソッドの選択(POST / GET の使い分け)
  • 受け取ったデータを Slack に転送する(実践)
  • Slack ノードの設定(Incoming Webhook URL の入力)
  • Webhook のデータを Slack メッセージに埋め込む
  • テスト実行と動作確認
  • ワークフローを本番モードに切り替える
  • 本番 URL を外部サービスに登録する
  • VPS / n8n Cloud での公開 URL の確認
  • GitHub Webhook 設定画面との対応
  • ローカル環境での開発(ngrok を使う場合)
  • THINK YOU LAB での WF_notify 実例
  • WF_notify の構成(agent-ops-monitor → n8n Webhook → Slack)
  • Webhook URL の設計(エンドポイント名の命名)
  • エラー情報を構造化して Slack に転送する設計
  • 応用 — 認証付き Webhook と Respond to Webhook
  • Header Auth による認証設定(X-Webhook-Secret ヘッダー)
  • Respond to Webhook ノードでレスポンスを返す
  • Webhook を同期的に使う(リクエスト→処理→レスポンス)
  • よくあるトラブルと対処法
  • テストモードで受け取れない
  • 本番 URL が 404 になる
  • データの中身が空になる($json の参照先ミス)
  • 次のステップ
  • FAQ
Think You Lab
このブログについて料金プランプライバシーポリシーお問い合わせ特定商取引法ログイン

© 2026 Think You Lab