生活や仕事に役立つライフハック、お得な情報を発信しています。⚠️記事内にPRを含みます

Slackのボタン操作でn8nを起動!Interactive Messageを使った承認フローの作り方

「この申請、Slackで確認して返信するの、地味に面倒だな…」。

日々の業務で発生する休暇申請や経費精算、コンテンツの公開依頼など、様々な承認作業。

Slack上でやり取りが完結するのは便利ですが、メッセージを確認し、承認や否認の返信をタイピングする手間は、積み重なると大きな時間的コストになります。

もし、Slackの通知に表示された「承認」「否認」ボタンをクリックするだけで、すべてのプロセスが完了するとしたらどうでしょうか。

本記事では、iPaaS/業務自動化ツールであるn8nSlackを連携させ、まさにその「ボタン一つで完結する承認フロー」を構築する方法を、具体的な手順を交えて徹底的に解説します。

この記事を読み終える頃には、あなたも面倒な承認作業から解放され、より創造的な業務に集中するための第一歩を踏み出しているはずです。

なぜSlackとn8nの連携が承認フローに最適なのか?

承認フローの自動化ツールは数多く存在しますが、なぜ「Slack」と「n8n」の組み合わせが特に強力なのでしょうか。その理由は、Slackが持つ「リアルタイム性」と、n8nが持つ「柔軟なワークフロー構築能力」の相乗効果にあります。このセクションでは、両者を組み合わせることで得られる3つの大きなメリットを深掘りします。

メリット1:Slack通知によるリアルタイム性と確実性

承認プロセスにおける最大の課題の一つは、「承認者が依頼に気づかない」「対応が遅れる」ことです。メールでの依頼は他の業務メールに埋もれてしまいがちですし、専用のシステムはログインする手間が心理的な障壁となります。その点、Slackは多くのビジネスパーソンが日常的に利用し、常にデスクトップやスマートフォンで開いているコミュニケーションツールです。承認依頼をSlackのメンション付きで通知することで、見逃しを劇的に減らすことができます。承認者は普段使っているツール上で、リアルタイムに依頼を認知し、即座にアクションを起こせるのです。これにより、承認までのリードタイムが大幅に短縮され、ビジネス全体のスピード向上に貢献します。

メリット2:n8nが可能にするノーコードでの柔軟なワークフロー構築

n8nは、GUI(グラフィカル・ユーザー・インターフェース)上で様々なサービスのノード(機能ブロック)を繋ぎ合わせることで、プログラミング知識がなくても直感的にワークフローを構築できるツールです。これが承認フローにおいて絶大な力を発揮します。例えば、「承認ボタンが押されたら、申請内容をデータベースに記録し、関係部署のチャンネルに完了通知を投稿する」「否認ボタンが押されたら、申請者に理由を添えて差戻し通知を送る」といった複雑な条件分岐や後続処理を、パズルを組み立てるように簡単に追加できます。コーディングが必要なツールでは数日かかるような改修も、n8nなら数分で完了することも珍しくありません。ビジネスの変化に合わせて、承認フローを迅速かつ柔軟に改善し続けられる点が、n8nを活用する最大の魅力です。

メリット3:【独自の視点】「承認体験」の向上という隠れた価値

効率化やスピードアップは重要な指標ですが、見落とされがちなのが「承認体験(Approval Experience)」という観点です。従来のフローでは、申請者は「いつ承認されるだろうか」と待ちぼうけを食らい、承認者は「また面倒な確認作業か」と心理的な負担を感じていました。Slackとn8nを連携させたフローは、この体験を劇的に改善します。承認者は通知内のボタンを押すだけ。申請者は承認・否認の結果を即座に受け取ることができます。このスムーズでストレスのないやり取りは、単なる業務効率化に留まらず、組織内の円滑なコミュニケーションを促進し、従業員エンゲージメントの向上にも繋がります。「面倒な作業」が「快適な体験」に変わること、これこそが、この仕組みがもたらす本質的な価値の一つと言えるでしょう。

実践!n8nでSlack Interactive Messageを受け取る準備

理論を学んだところで、次はいよいよ実践です。Slackのボタン(Interactive Message)からの操作をn8nで受け取るためには、いくつかの初期設定が必要です。ここでは、Slackアプリの作成からn8nのWebhook設定まで、スクリーンショットを交えながら丁寧に進めていきます。一つ一つのステップは難しくないので、焦らずに進めていきましょう。

STEP1:Slackアプリの作成と権限設定

まず、Slackにn8nからのメッセージ投稿や、ユーザー操作の受信を許可するための「Slackアプリ」を作成します。

  1. Slack APIのアプリ管理画面にアクセスし、「Create New App」をクリックします。
  2. 「From scratch」を選択し、アプリ名(例: n8n-approval-bot)と、導入したいワークスペースを指定して「Create App」をクリックします。
  3. 左側のメニューから「OAuth & Permissions」を選択し、「Scopes」セクションまでスクロールします。
  4. 「Bot Token Scopes」にある「Add an OAuth Scope」ボタンを押し、以下の権限を追加します。
    • chat:write: ボットとしてメッセージを投稿するために必要です。
    • commands: (任意) スラッシュコマンドをトリガーにしたい場合に追加します。
  5. 画面上部の「Install to Workspace」をクリックし、連携を許可します。表示された「Bot User OAuth Token」(xoxb-で始まる文字列)は後ほどn8nで利用するため、安全な場所にコピーしておきましょう。

STEP2:SlackアプリのInteractivity設定

次に、ユーザーがボタンを押したという情報をn8nに送信するための設定を行います。これが今回のキモとなる部分です。

  1. 左側のメニューから「Interactivity & Shortcuts」を選択します。
  2. 右上のトグルスイッチを「On」にします。
  3. 「Request URL」という入力欄が表示されます。ここには、n8n側で生成するWebhookのURLを入力します。一旦この画面はそのままにして、n8nの画面を開きます。

STEP3:n8n側のWebhook設定と疎通確認

Slackからのリクエストを受け取るための入り口(Webhook)をn8nで作成します。

  1. n8nのキャンバスで「+」ボタンを押し、Webhookノードを追加します。
  2. Webhookノードの設定画面で、「Webhook URLs」の「Test」タブに表示されているURLをコピーします。これが一時的なテスト用のリクエストURLです。
  3. 先ほど開いていたSlackアプリの「Request URL」の欄に、コピーしたn8nのテスト用Webhook URLを貼り付け、「Save Changes」をクリックします。
  4. n8nの画面に戻り、Webhookノードの右下にある「Listen for Test Event」ボタンをクリックします。n8nが待機状態になります。
  5. この状態で、Slackアプリ側で何かしらのインタラクティブな操作(後ほど作成するボタンを押すなど)を行うと、そのデータがn8nに送信され、疎通確認が完了します。成功すると、Webhookノードに緑色のチェックマークが表示されます。

重要:テストが完了したら、Webhookノードの「Webhook URLs」を「Production」タブに切り替え、表示された本番用URLを再度Slackアプリの「Request URL」に設定し直すのを忘れないようにしましょう。

ケーススタディ:コンテンツ公開承認フローを構築する

基本的な準備が整ったところで、より具体的なシナリオに沿ってワークフローを構築してみましょう。ここでは、「Web担当者が作成したブログ記事のURLを申請し、マーケティング責任者がSlack上で承認したら、公開タスクが自動で生成される」というコンテンツ公開承認フローを例に解説します。

ワークフロー全体の設計図

今回のワークフローは、以下のノードを順番に繋いでいくことで実現します。

  • Trigger (Webhook): 申請フォーム(例: GoogleフォームやAirtableフォーム)からの送信をトリガーとします。
  • Set: 後続の処理で使いやすいように、申請データを整形します。
  • Slack: 承認者に対して、承認・否認ボタン付きのメッセージを送信します。
  • Webhook (待機): 承認者からのボタン操作(承認/否認)を待ち受けます。
  • IF: 押されたボタンが「承認」か「否認」かを判定します。
  • (承認の場合) Google Sheets: 公開タスクリスト(スプレッドシート)に新しい行を追加します。
  • (承認の場合) Slack: 申請者と関係者チャンネルに公開が承認されたことを通知します。
  • (否認の場合) Slack: 申請者に差戻しされたことを通知します。

このように処理の流れを可視化できるのが、n8nの大きな利点です。

Slackメッセージを構成するJSON (Block Kit) の作り方

Slackにボタン付きのメッセージを送るには、「Block Kit」というJSON形式でメッセージ内容を定義する必要があります。一から手書きするのは大変ですが、Slackが提供する公式ツール「Block Kit Builder」を使えば、プレビューを見ながら直感的に作成できます。

n8nのSlackノードで、「Message」の項目で「Using Blocks」を選択し、生成したJSONを貼り付けます。

以下は、承認依頼メッセージのJSONの例です。

[	{	"type": "section",	"text": {	"type": "mrkdwn",	"text": "@channel 以下のコンテンツの公開承認をお願いします。"	}	},	{	"type": "section",	"fields": [	{	"type": "mrkdwn",	"text": "*申請者:*\n{{ $json.body.applicant }}"	},	{	"type": "mrkdwn",	"text": "*記事タイトル:*\n{{ $json.body.title }}"	},	{	"type": "mrkdwn",	"text": "*プレビューURL:*\n{{ $json.body.url }}|リンク>"	}	]	},	{	"type": "actions",	"elements": [	{	"type": "button",	"text": {	"type": "plain_text",	"text": "承認する",	"emoji": true	},	"style": "primary",	"value": "approve_{{ $json.body.application_id }}"	},	{	"type": "button",	"text": {	"type": "plain_text",	"text": "否認する",	"emoji": true	},	"style": "danger",	"value": "reject_{{ $json.body.application_id }}"	}	]	}
]

極めて重要なポイントは、ボタンのvalue属性です。ここには、"approve_{申請ID}""reject_{申請ID}"のように、「アクションの種類」と「どの申請に対するアクションかを示す一意のID」を組み合わせた文字列を設定します。これにより、後続のWebhookノードでどのボタンが押されたかを正確に識別できます。

承認・否認後の処理を分岐させる

承認者がボタンを押すと、その情報がInteractivity設定で指定したWebhook URL(つまり、2つ目のWebhookノード)に送られます。受け取ったデータは、IFノードを使って判定します。

IFノードの条件式は以下のようになります。

  • 条件1 (承認):
    • Value 1: {{ $json.body.payload.actions[0].value }}
    • Operation: Starts With
    • Value 2: approve_

この条件が真(True)の場合、承認後の処理(スプレッドシートへの追記、完了通知など)に繋ぎます。偽(False)の場合、否認後の処理(差戻し通知など)に繋ぎます。$json.body.payload.actions[0].value という式で、押されたボタンのvalue属性にアクセスしているのがポイントです。(※2026年1月時点のn8nの仕様です。バージョンによりデータ構造が変更される可能性があります。)

このように、Block KitのvalueとIFノードを組み合わせることで、ユーザーのアクションに応じた柔軟なワークフローの分岐を簡単に実現できるのです。

応用編:より高度で実践的な承認フローのアイデア

基本的な承認フローをマスターしたら、次はより実践的で付加価値の高い機能を追加してみましょう。n8nの柔軟性を活かせば、単なる承認・否認だけではない、高度なワークフローも構築可能です。ここでは、組織のガバナンスやコミュニケーションをさらに向上させる3つの応用アイデアをご紹介します。

アイデア1:複数人承認とエスカレーションフロー

「この申請は、チームリーダーと部長の両方の承認が必要だ」といった複数人承認の要件は、多くの組織で発生します。n8nでは、こうしたフローも実現可能です。例えば、Split in Batchesノードを使って承認者リストを一人ずつに分割し、ループ処理で順番に承認依頼を送ることができます。さらに、Waitノードを組み合わせることで、「もし24時間以内にチームリーダーの応答がなければ、自動的に部長に通知をエスカレーションする」といったエスカレーションルールも設定できます。これにより、承認プロセスの停滞を防ぎ、重要な意思決定が遅延するリスクを低減させることができます。

アイデア2:否認時に理由の入力を求めるモーダル表示

申請が否認されたとき、その理由がわからなければ申請者は何を修正すればよいか分からず、困ってしまいます。そこで、「否認」ボタンが押された際に、単に処理を終了するのではなく、Slackのモーダルウィンドウを開いて承認者に否認理由の入力を促す、という応用が考えられます。これは、n8nのHTTP RequestノードからSlack APIのviews.openメソッドを呼び出すことで実現します。承認者がモーダルで理由を入力・送信すると、その内容が再びn8nのWebhookに送られ、申請者への差戻し通知にその理由を自動で記載することができます。この一手間が、申請者と承認者間のコミュニケーションロスを防ぎ、手戻りの少ない円滑な業務プロセスを実現します。

アイデア3:【独自の視点】監査証跡としてのログ記録

承認フローの自動化は効率化だけでなく、内部統制やコンプライアンスの観点からも非常に重要です。そこで、ワークフローの各ステップで「誰が」「いつ」「どの申請を」「どう処理したか」という情報を、自動でデータベース(例えば、Google Sheets, Airtable, Baserowなど)に記録することをお勧めします。n8nには各種データベース用のノードが用意されているため、このログ記録も簡単に追加できます。例えば、「承認ボタンが押された」というイベントをトリガーに、「日時、申請ID、申請者、承認者、ステータス(承認済み)」というレコードを監査用シートに一行追加するのです。これにより、すべての承認プロセスが可視化され、将来的な監査の際に信頼性の高い証跡(監査証跡)として活用できます。これは、単なる業務ハックに留まらない、企業のガバナンス強化に直接貢献する、戦略的な自動化と言えるでしょう。

まとめ:Slackとn8nで、承認業務を次のステージへ

本記事では、SlackのInteractive Messageとn8nを連携させ、ボタン操作一つで完結する効率的な承認フローを構築する方法について、基本的な設定から応用的なアイデアまで詳しく解説しました。面倒だった日々の承認作業が、リアルタイムかつスムーズな「体験」に変わる可能性を感じていただけたのではないでしょうか。

重要なのは、完璧なフローを目指すのではなく、まずは身近な小さな承認作業から自動化を試してみることです。この記事で紹介した手順を参考に、ぜひあなたのチームの業務改善に挑戦してみてください。

n8nの基本的な使い方や、今回紹介しきれなかったさらに多様な機能について詳しく知りたい方は、ツールの全体像から具体的なユースケースまでを網羅した「n8n完全ガイド記事」も併せてご覧ください。あなたの自動化ジャーニーを力強くサポートします。

さあ、あなたもn8nで業務自動化の第一歩を踏み出してみませんか?公式サイトから無料で始めることができます。面倒なタスクから解放され、より価値の高い仕事に集中する未来は、もう目の前です。