n8nからSlackへ通知を送るなら、Slack nodeを最後に置くだけでなく、どのeventを受け取り、どの条件で送り、受信者が次に判断する情報は何かを先に決めます。最小構成は「trigger → 必要条件のfilter → Slack Message Send → 実行結果の確認」です。認証はSlack nodeではn8n公式がOAuth2を推奨していますが、Slack Triggerは別の認証条件なので混同しないでください。
目次
通知を送る条件を先に決める
自動通知を作り始める前に、通知が必要なeventを一つ選びます。たとえば、フォームの受付、特定条件のメール受信、定期処理の完了、外部サービスからのWebhookなどです。「データが更新されたら全部送る」とすると、通知量が増えて読まれなくなります。
次に、どのchannelへ送り、誰が対応するのかを決めます。障害通知、顧客対応、日常の報告を同じchannelへ混ぜる必要はありません。通知の受け手が行動しない情報なら、Slackへ送らずn8nの記録や一覧へ残す方がよい場合もあります。
表は横にスクロールできます
| 決める項目 | 例 | 曖昧なままにした場合 |
|---|---|---|
| trigger | フォーム受付 | 手動実行と自動実行を混同 |
| filter | 対応期限が近い | 不要な通知が流れる |
| channel | 担当チームの限定channel | 情報が広すぎる |
| message | 対象・理由・元データURL | 受信者が記録を探せない |
| failure path | Slack送信失敗を記録 | 通知が落ちても気づけない |
| test | テスト用eventを1件流す | 本番channelへ誤投稿する |
Slack nodeと認証方式
n8nのSlack nodeは、messageの送信を含むSlack操作を提供します。Slack node用のcredentialsではOAuth2が推奨され、Access Tokenも利用できますが公式文書上は推奨方式ではありません。一方、Slack Trigger nodeではAPI access tokenが必要で、OAuth2は利用できないという別条件があります。今回のようにn8nからSlackへ通知する場合は、Slack nodeの認証手順を確認します。
n8n Cloudとself-hostedでは設定手順が異なることがあります。Cloudではbrowserからaccount connectionを行える一方、self-hostedでOAuth2を設定する場合はSlack app、callback URL、Client ID / Secretなどを構成します。秘密情報はworkflowのmessage本文、expression、実行ログへ書かず、n8n credentialとして管理してください。
Slack appのscopeは、使用するresourceとoperationに合わせて選びます。メッセージ送信の例だけを見て、Slack nodeで使うすべての操作にchat:writeだけで足りると決めないでください。チャンネル取得、投稿、file uploadなどで必要な権限は異なるため、n8nの対象operation表とSlack APIのscopeを確認し、不要な権限を追加しません。
最小のworkflowを組む
まずtrigger nodeを置き、テスト用のeventを一件用意します。次に必要な値だけ残すEdit / Set系の処理を置き、IF等で通知対象を絞ります。Slack nodeではMessage resourceのSendを選び、送信先channelとmessageを設定します。前段から受け取る値をexpressionで入れる場合、入力が空でも壊れないよう条件を確認します。
構成の役割は次の通りです。
-
Trigger:eventを受け取る。必要ならScheduleまたはWebhookを使う。
-
Normalize:field名、日時、URLの形式を整える。
-
Filter:通知対象のstatus・優先度・金額などを判定する。
-
Slack Send:受信先と本文を指定して送る。
-
Verify:実行結果、Slack上の投稿、元レコードへのリンクを確認する。
-
Failure route:失敗を記録し、必要なら別の運用通知へ渡す。
これはノード構成の考え方で、n8nの画面でこのまま同じlabelが表示されるとは限りません。nodeの名前や設定項目は更新されることがあるため、実際のUIで現行のoperationを選びます。
読んだ人が動けるmessageにする
「新しいデータがあります」だけでは、受信者がrecordを開き直して判断することになります。通知には、何が起きたか、対象の識別子、条件に一致した理由、必要な次の行動、元データへのlinkを含めます。個人情報や機密情報は本文へコピーせず、閲覧権限を確認できる元画面へ誘導します。
例:
【申請確認】申請ID: TEST-104
対象: 交通費申請
通知理由: 承認待ちのstatus
次の対応: 金額と添付を確認し、担当者が承認または差し戻し
元データ: 申請管理画面のURL
この例はmessageの形を示す架空の入力です。実際には、申請IDやstatusを前段nodeから取り出し、本文へ差し込みます。試験ではテスト用データを使い、本物の顧客情報やsecretがSlackへ投稿されないことも確認します。
filterと重複通知を扱う
通知が繰り返し来る場合は、triggerの実行間隔だけでなく、同じrecordが既に通知済みかを判断する条件を検討します。statusが変化したときだけ通知するのか、毎回の更新を通知するのかを決め、重複を防ぐ識別子や記録方法を設計します。n8n実行が再試行された場合に同じmessageが再投稿されるかもテストします。
Filterの条件が空値、予想外の文字列、タイムゾーンの異なる日時を受け取ったとき、通知を誤って送らないか確認します。通知対象外のeventを黙って捨てる場合も、その判断根拠をworkflow内で追えるようにします。全件をSlackへ出してから人が選ぶ方式は、通知チャンネルが処理待ちqueueになるおそれがあります。
条件で分岐
Filterで何を落とす?
- IFノイズ通知が多いTHEN条件一致だけSlackへ
- IF全部見たいTHEN整形だけして全件流す
まずは使ってみる
記事の文脈に合うToolへ進めます。報酬の有無で見た目は変えていません。
n8n
テストと公開前の確認
最初の実行は本番通知先ではなく、テスト用channelや専用test eventで行います。triggerが一回だけ動くか、filterが対象と対象外を分けるか、Slack messageの改行とlinkが正しく見えるか、空fieldが出ても本文が崩れないかを確認します。Slack上の投稿を見たあと、n8nの実行結果で失敗や再試行を確かめます。
表は横にスクロールできます
| 確認対象 | テスト方法 | 合格の目安 |
|---|---|---|
| 正常event | 条件に合うtest data | 一度だけ適切なchannelへ届く |
| 対象外event | filterから外れるtest data | Slackへ投稿されない |
| 空field | 必須fieldを欠いたtest data | 誤通知せず原因が分かる |
| 送信失敗 | test credentialまたは送信先で確認 | failureを記録し再実行方針が分かる |
| 機密情報 | payload・ログ・本文を確認 | tokenや不要な個人情報が含まれない |
| 二重実行 | 同じeventを再度流す | 重複時の扱いが設計どおり |
テストが通ったら、workflowを有効化する前に、Slack appのscope、channelの参加状態、通知先、運用担当、エラー確認者を見直します。権限を追加した場合は、何のoperationに必要だったかを記録します。個人アカウントで接続している場合は、退職・異動・token失効時に通知が止まる可能性も運用担当へ伝えます。
失敗時の原因を切り分ける
表は横にスクロールできます
| 症状 | 先に見る場所 | 対応 |
|---|---|---|
| credential error | Slack credentialの接続状態、redirect設定 | OAuth設定を確認して再接続 |
| channelが候補に出ない | bot/appの参加状態、read scope | 必要な権限だけ追加し、再接続 |
| message送信で権限error | 選択operationに対応するscope | n8nのoperation表とSlack APIを照合 |
| workflowは成功だが投稿が見えない | channel、thread、実行したworkspace | 送信先とmessage設定を確認 |
| 同じ内容が何度も届く | trigger間隔、再試行、重複判定 | event idや処理済み記録を確認 |
| 一部の通知だけ本文が空 | 入力JSONのfield名と空値 | Normalizeとfallback表示を見直す |
エラーを直すときは、scopeを一括で増やす前に、失敗したresourceとoperationを確認します。Slack appの設定変更後は、credentialの再接続やworkflow再実行が必要な場合があります。実行ログにはpayloadが残ることがあるため、secretや個人データを含むfieldをログへ渡さないよう設計します。
運用担当と停止条件を決める
通知を使い始めた後、誰が失敗を見つけ、どの時間内に復旧するかを決めます。Slackの投稿は成功しても、対象者がchannelを見ていなければ業務処理の完了ではありません。緊急連絡に使う場合は、Slack以外の連絡経路や未確認時の代替手段を業務ルールと合わせて確認します。
workflowを止める基準も決めます。誤通知が一定回数続く、個人情報が誤送信された、source serviceが不正なeventを出す、といったケースでは自動実行を停止し、担当者が原因を確認できるようにします。通知自体を止めても元データを削除せず、未処理件数を別途確認できる状態を維持します。
AIものさしの判断
n8nとSlackを連携する価値は、投稿を自動化することより、必要なeventだけを担当者へ渡し、次の判断に必要な情報へ戻れることにあります。filterが広すぎれば通知が埋もれ、本文が短すぎれば確認先を探す手間が増えます。通知量と情報量の両方を、業務の担当者が処理できる範囲に設計してください。
AIものさしでは、Slackへ一通投稿できたことではなく、対象eventの選定、必要な情報、担当者、失敗時の発見方法が揃った状態を完了とします。まずはテスト用eventで一連の流れを確認し、権限を最小にしたうえで本番workflowを有効化してください。
最小テストケースを作る
実際のtriggerを有効化する前に、成功、対象外、欠損、再実行の4種類のtest payloadを用意します。成功ケースでは必須fieldが揃っていることを確認し、対象外ケースではfilterが通知を止めることを見ます。欠損ケースでは安全なエラー処理が動くか、再実行ではduplicateをどう扱うかを確認します。
テスト記録には、使用したデータの種類、実行時刻、workflow version、送信先、Slackに届いた結果、修正点を残します。channelへ届いたという一項目だけで完了判定をしないでください。通知から元データへ戻れるか、操作できる人が権限を持つかも確認します。
通知を変更するときの注意
source eventのfield名やSlack node versionが変わると、既存expressionが空値を参照することがあります。API更新やnode version変更時には、成功例だけでなく対象外と異常値のtestも再実行します。message layoutを変えた場合、受信者が処理対象や担当を見分けられるかを確認し、channel側でthread運用や固定メッセージが必要かもチームで決めます。
workflowを複製して別チームへ展開する場合は、credential、channel、filter条件をそのままコピーしないでください。別部署のデータを共有してよいか、通知先のメンバーが適切か、異常時の担当が誰かをそれぞれ再確認します。複製元と同じ名前のcredentialを使っている場合も、接続アカウントが想定どおりかテスト投稿前に確認します。
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:
n8n:Slack integrations(新しいタブで開く)
