n8n Slack Integration

Last verified: July 2026Works with: n8n 2.x

By Rick, NoCode Guide

n8n Slack integration message node workflow

Send Slack messages from n8n, build slash-command bots, and route alerts to channels. This guide covers prerequisites, credential setup, the numbered steps, an importable workflow, and troubleshooting.

Prerequisites

  • A running n8n instance (self-hosted or Cloud).
  • A Slack account with API access enabled.
  • Your Slack API key or OAuth credentials to hand.

Credential setup

In n8n, open Credentials → New, search for Slack, and paste your API key or complete the OAuth flow. Save and give it a clear name so you can reuse it across workflows.

Step-by-step setup

Step 1: Add credentials

Create a Slack credential in n8n with your API key or OAuth login.

Step 2: Add the trigger or action node

Drop the Slack node onto the canvas and pick the operation.

Step 3: Import the example workflow

Paste the provided JSON via Import from Clipboard.

Step 4: Test and activate

Run once to confirm, then toggle the workflow active.

Import this workflow

Copy the JSON below, then in n8n choose Import from Clipboard and paste it:

Slack workflow.json
{
  "name": "Slack example",
  "nodes": [],
  "connections": {}
}

Troubleshooting

  • 401 / auth errors: re-create the credential and confirm the token scopes.
  • Webhook not firing: ensure the workflow is active and your N8N_WEBHOOK_URL is your public domain.
  • Rate limits: add a Wait node or batch requests to stay under Slack's limits.

Related: webhook guide and self-hosting hub. Official docs: n8n integrations documentation.

Bot token versus webhook URL: pick the right one first

Slack offers two quite different ways to post, and most frustration with Slack automation comes from picking the wrong one for the job.

An incoming webhook URL is a single address that accepts a message and posts it to one predetermined channel. It is the fastest possible setup, needs no app permissions review, and is exactly right for one-way alerts: a workflow finished, an order arrived, something broke. Its limitations are the point. It cannot read anything, cannot post anywhere else, and cannot reply in a thread it did not start.

A bot token comes from a Slack app you create, with scopes you choose, and it can do whatever those scopes allow: post to any channel the bot is in, read messages, open direct messages, update its own posts, react, and respond to slash commands. It takes longer to set up and the scopes need thought, but it is the only route to anything interactive.

The rule of thumb: if n8n only ever needs to talk, use a webhook URL. The moment it needs to listen or reply, build the app.

Alerting that people do not learn to ignore

The failure mode of Slack automation is not that it breaks, it is that it works too well and becomes noise. A channel that gets forty automated messages a day is a channel nobody reads, and the one alert that matters disappears in it.

Three defences. Route by severity: routine confirmations go to a quiet channel, failures go somewhere people watch. Batch where you can: a digest at nine in the morning beats forty individual pings, and n8n can aggregate across a window before posting. And use threads: post one message per incident and put the updates in its thread, so the channel shows one line per event rather than a scroll of status changes.

Slash commands and interactive messages

A slash command turns Slack into a front end for your workflows. Someone types a command, Slack sends the payload to an n8n webhook, n8n does the work and replies. The one constraint that shapes the design is Slack's three-second acknowledgement window: your webhook must respond within three seconds or Slack reports a timeout to the user. For anything slower, acknowledge immediately with a holding message and post the real result when it is ready. The webhooks guide covers the respond-immediately pattern in detail.

Interactive messages, with buttons and menus, follow the same shape. The button press arrives as a webhook payload, and the workflow branches on which button was pressed. Approvals are the classic use: a request posts to a channel with approve and reject buttons, and the press drives the rest of the workflow.

What goes wrong

Missing scopes is the overwhelming cause of Slack errors. The bot can post but not read, or can read public channels but not private ones, because the app was never granted the scope. When a Slack node fails, check the scopes before anything else. The second cause is the bot not being a member of the channel. A bot token can only post where the bot has been invited, and the error message for that is less helpful than it should be.

Frequently asked questions

Related integrations

We use cookies for analytics to understand how our guides are used. You can decline non-essential cookies.