Think Like an Owl, Act Like a Shark.

Join our weekly digest - real tactics, no b*llshits

How to Connect Slack to n8n

How to Use Slack in n8n – Send Messages and Trigger Workflows

Shajid Shafee
Author
Shajid Shafee Looking at 127.0.0.1
Published Date Feb 20, 2026
Related Tags

There are two ways to authenticate with Slack in n8n, and they behave completely different. Pick the wrong one and your messages will come from your personal account instead of a bot, or your Slack Trigger will stop firing in production without any obvious error.

This post covers both use cases , sending messages from n8n to Slack, and triggering workflows from Slack events along with the four errors that catch almost everyone. The most common ones.

But you need to understand how these credentials works.

Bot Token or OAuth2? Pick Your Credential Before You Start

This is the decision that determines everything else. Most tutorials skip it and explain it only after something goes wrong.

What you’re trying to doCredential typeToken
Send messages as a botAccess Tokenxoxb- (Bot User OAuth Token)
Trigger workflows from Slack eventsOAuth2 APIClient ID + Client Secret
Send messages as yourselfOAuth2 APIxoxp- (User OAuth Token)

For most automation setups, you want the Access Token method with a bot token. This sends messages from a named bot, not from your personal Slack profile.

OAuth2 is required for the Slack Trigger node. It doesn’t work with the Access Token method. If you want both, a workflow that listens for Slack events AND sends replies – you’ll need two separate n8n credentials: one OAuth2 for the trigger, one Access Token for the send node.

Setting Up Your Slack App (Do This Once)

Both credential types require a Slack app. You create it once and then pull different tokens from it depending on what you need.

creating an app in slack

Step 1: Go to api.slack.com/apps and click Create New AppFrom scratch.

selecting from scratch in slack apps

Step 2: Give your app a name (something like “n8n Bot”) and select the workspace where you want it to work. Click Create App.

Selecting a new app name and picking the workspace

Step 3: In the left sidebar, go to OAuth & Permissions. Scroll to the Scopes section and add your Bot Token Scopes.

OAuth permission in slack
Selecting the bot token scopes

Minimum scopes to send messages:

  • chat:write – post messages to channels
  • channels:read – list channels so you can pick one in n8n
Adding more scopes to bot token scopes

If you’re also setting up the Slack Trigger, add these too:

  • channels:history – read messages in channels
  • reactions:read – detect emoji reactions
  • users:read – resolve user IDs to names

Step 4: Scroll up to OAuth Tokens for Your Workspace and click Install to Workspace. You need to be a workspace admin to do this.

Installing the OAuth Token to the Workspace

Step 5: After installing, copy the Bot User OAuth Token. It starts with xoxb-. Keep this — it’s your Access Token credential.

Allowing the app permissions to the slack workspace

Token rotation warning. Slack may present a “Token Rotation” option when you create the app. Do not enable it. Token rotation makes your xoxb- token expire every 12 hours. Workflows that were running fine will start failing silently in production. The critical part: once you enable token rotation, you cannot turn it off. You’d need to create an entirely new Slack app. Leave this off.

Bot User OAuth Token

Sending Messages from n8n to Slack

With your xoxb- token copied, here’s how to wire it up in n8n.

In n8n Credentials, create a new Slack credential. When it asks for the authentication method, choose Access Token. Paste your xoxb- bot token. Save it.

Pasting the Bot Auth Token to Slack API credentials

In your workflow, add a Slack node. Open it and configure:

Adding Send a message slack node in n8n
Explaining the configs of Send a message node
  • Resource: Message
  • Operation: Send
  • Credential: the Access Token credential you just created
  • Channel: #your-channel-name or paste a channel ID
  • Text: your message content

A realistic message with dynamic data from a previous node looks like this:

New lead from {{ $json.name }}
Email: {{ $json.email }}
Source: {{ $json.source }}
Submitted: {{ $now.format('MMMM D, YYYY') }}

Or Else, Just say

HELLO WORLD! 

Click Execute Node. If it works, great. If you get not_in_channel, see the troubleshooting section below — the fix takes 10 seconds.

Read this,

The bot must be invited to the channel. A Slack bot cannot post to any channel it hasn’t been explicitly added to. Go to the channel in Slack and type /invite @YourBotName. (e.g., mine is /invite @The Owl Logic Bot) This is a Slack permission rule, not an n8n limitation. Once invited, rerun the node and the message will go through.

Slack Bot :)

Triggering Workflows from Slack Events

This direction is more involved. You’re telling Slack to call n8n whenever something happens, a message arrives, someone mentions your bot, a reaction is added.

But here’s the hiccup. To make this trigger workflow work, You need to have a Self-hosted n8n or n8n Cloud. I recommending the n8n cloud since you won’t be having any issue and less prone to configurations.

Even though If you’re working in localhost, then you have to expose your localhost webhook URL to ngrok by tunneling. You can check it out here Webhook in n8n for Beginners

Step 1: Create an OAuth2 Credential in n8n

In n8n Credentials, create a new Slack OAuth2 API credential. It will ask for a Client ID and Client Secret. Get these from your Slack app:

Select Slack OAuth 2 API
Add Client ID and Secret for Slack Trigger in n8n

In your Slack app settings → Basic InformationApp Credentials section. Copy the Client ID and Client Secret into n8n.

Basic information, Client ID and SEcret

n8n will show you an OAuth Callback URL. Copy it.

Pasting the credentials of Slack ID and Secret

Step 2: Register the Callback URL in Slack

Back in your Slack app → OAuth & PermissionsRedirect URLsAdd New Redirect URL. Paste the callback URL from n8n. Click Add, then Save URLs.

Redirect URL, Prefer the production URL

Step 3: Add the Slack Trigger to Your Workflow

Add a Slack Trigger node to a new workflow. Select the OAuth2 credential. Choose which event to listen for:

  • Bot / App Mention — fires when someone types @YourBotName in a channel
  • New Message Posted to Channel — fires on every message in a channel
  • Reaction Added — fires when someone adds an emoji reaction

For most bots, Bot / App Mention is the right choice. It’s targeted — the trigger only fires when your bot is explicitly called, not on every message in the channel.

Step 4: Connect the Webhook URL to Slack

With the Slack Trigger node open, copy the Webhook URL shown in n8n. There are two versions.

  • Test URL (contains /webhook-test/) — only works when you’re actively listening in n8n editor
  • Production URL (contains /webhook/) — works only when the workflow is Active

In your Slack app → Event Subscriptions → toggle Enable Events to on → paste the webhook URL in the Request URL field. Slack will immediately try to verify it.

Enabling the Event Subscriptions in Slack for n8n Webhook

One webhook URL per Slack app. Slack allows only a single Request URL registered per app. You cannot have the test URL and the production URL active at the same time. While building and testing: use the Test URL, with n8n listening. Before going live: swap to the Production URL in Slack’s Event Subscriptions, then activate your workflow.

Once the URL verifies, subscribe to the bot events you want. For Bot/App Mention, add app_mention under Subscribe to bot events.

Step 5: Add the Signing Secret

This is optional but strongly recommended. It ensures n8n only processes requests that genuinely came from Slack — not from someone who guessed your webhook URL.

In your Slack app → Basic Information → copy the Signing Secret. In your n8n Slack credential → paste it into the Signature Secret field.

Step 6: Activate the Workflow

Toggle the workflow to Active in the top right. Until it’s active, the Slack Trigger won’t receive anything even if the Production URL is registered.

Invite your bot to a channel (/invite @YourBotName), then mention it: @YourBotName hello. Check your workflow’s execution history — you should see the trigger fired with the message data.

4 Errors That Break Slack Integrations in n8n

These show up constantly in the n8n community forum. Each one has a specific fix.

1. not_in_channel error

Your bot hasn’t been invited to the channel. Fix: in Slack, go to the channel and type /invite @YourBotName. Every channel requires a separate invite.

2. Messages sending from your personal account, not the bot

You created an OAuth2 credential and used it for the Slack node. OAuth2 acts on behalf of your user profile. Fix: create a separate Access Token credential using your xoxb- bot token, and use that for the Slack node instead.

3. Workflow ran fine in testing, silently fails 12 hours later in production

Token rotation is enabled on your Slack app. The xoxb- token expires every 12 hours. Fix: you cannot disable token rotation once it’s on. You need to delete the Slack app and create a new one — this time leaving token rotation off during setup.

4. Slack Trigger fires in testing but not in production

Two possible causes. First: the workflow isn’t active — toggle it to Active in n8n. Second: the Test URL is still registered in Slack’s Event Subscriptions. When you activate the workflow, you also need to manually update the Request URL in your Slack app from the Test URL to the Production URL.

Using Slack as an AI Agent Approval Channel

Slack node can be used as a human-in-the-loop step inside AI Agent workflows.

When an agent is about to take a high-stakes action like sending a bulk email, deleting a record, posting to a production channel, it can pause and route an approval request to Slack.

The approver clicks approve or deny directly in Slack, and the agent continues or stops.

This is configured at the tool level in the AI Agent node.

The Slack node becomes a gated tool that requires sign-off before execution. If you’re building AI agent workflows, this is worth knowing about – it removes the need for fragile prompt-based guardrails like “only do this if you’re absolutely sure.

The Slack node is one of the most-used integrations in n8n for a reason, having your automation post results directly to where your team already works is genuinely useful.

Once the credentials are set up correctly, the node itself is straightforward. The setup is the hard part, and now you’ve done it once.


What's Next? on Automation

We've curated a lists of post that might interests you in the same

Subscribe for
Daily dose of Unique content

We will never spam you!