n8nでSlack通知を自動化する方法

n8nでSlack通知を自動化する方法。n8nなどを対象に、向き不向きが分かるように整理します。

AIものさし編集部

  1. Trigger
  2. Filter
  3. 整形
  4. Slack
  5. 確認

この記事でのTool

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 pathSlack送信失敗を記録通知が落ちても気づけない
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で入れる場合、入力が空でも壊れないよう条件を確認します。

構成の役割は次の通りです。

  1. Trigger:eventを受け取る。必要ならScheduleまたはWebhookを使う。

  2. Normalize:field名、日時、URLの形式を整える。

  3. Filter:通知対象のstatus・優先度・金額などを判定する。

  4. Slack Send:受信先と本文を指定して送る。

  5. Verify:実行結果、Slack上の投稿、元レコードへのリンクを確認する。

  6. 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へ進めます。報酬の有無で見た目は変えていません。

テストと公開前の確認

最初の実行は本番通知先ではなく、テスト用channelや専用test eventで行います。triggerが一回だけ動くか、filterが対象と対象外を分けるか、Slack messageの改行とlinkが正しく見えるか、空fieldが出ても本文が崩れないかを確認します。Slack上の投稿を見たあと、n8nの実行結果で失敗や再試行を確かめます。

表は横にスクロールできます

確認対象テスト方法合格の目安
正常event条件に合うtest data一度だけ適切なchannelへ届く
対象外eventfilterから外れるtest dataSlackへ投稿されない
空field必須fieldを欠いたtest data誤通知せず原因が分かる
送信失敗test credentialまたは送信先で確認failureを記録し再実行方針が分かる
機密情報payload・ログ・本文を確認tokenや不要な個人情報が含まれない
二重実行同じeventを再度流す重複時の扱いが設計どおり

テストが通ったら、workflowを有効化する前に、Slack appのscope、channelの参加状態、通知先、運用担当、エラー確認者を見直します。権限を追加した場合は、何のoperationに必要だったかを記録します。個人アカウントで接続している場合は、退職・異動・token失効時に通知が止まる可能性も運用担当へ伝えます。

失敗時の原因を切り分ける

表は横にスクロールできます

症状先に見る場所対応
credential errorSlack credentialの接続状態、redirect設定OAuth設定を確認して再接続
channelが候補に出ないbot/appの参加状態、read scope必要な権限だけ追加し、再接続
message送信で権限error選択operationに対応するscopen8nの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(新しいタブで開く)

n8n:Slack credentials(新しいタブで開く)

n8n:Slack node documentation(新しいタブで開く)

次の一手

記事の内容を踏まえて、公式とTool詳細から続けられます。

次に読む・使う

この記事の次に必要な情報へ進めます。