What you are making
A Slack app gives n8n a bot identity. The bot posts the message. Scopes decide what else it can see or do.
Create the Slack app
- Open Slack API Apps.
- Choose Create New App → From scratch.
- Name the app and select the workspace.
- Open OAuth & Permissions.
For self-hosted n8n, copy the Client ID and Client Secret from Basic Information → App Credentials into a new Slack OAuth2 credential in n8n. Copy n8n’s OAuth Callback URL back into Slack’s Redirect URLs and save it. n8n Cloud can offer a direct account connection instead.
Give the bot the right scopes
For a bot that only sends alerts:
chat:write— post the alert;channels:read— find and select public channels in n8n;groups:read— find private channels the bot already belongs to.
Do not add message-reading scopes unless the workflow actually reads Slack. Reading public-channel history uses channels:history; private-channel history uses groups:history. Posting to public channels without joining them uses chat:write.public, but inviting the bot to the intended channel keeps access narrower.
Install and invite the bot
- Select Install to Workspace and approve the requested scopes.
- Open the Slack channel that should receive alerts.
- Run
/invite @your-bot-nameor add the app from the channel details. - Private channels must invite the bot before it can post or read anything there.
- If you add scopes later, reinstall the app so the token receives them.
Connect and test n8n
Finish the OAuth connection in n8n. Add a Slack action, choose Send a message, select the channel, and send one harmless test. If the channel is missing, confirm the read scope and channel membership, then reconnect the credential.
n8n currently warns that Slack token rotation is not supported by this credential for long-running production connections. If rotation was enabled, create a new Slack app with rotation off before relying on it.
Keep it safe
- Store the client secret and bot token only in credentials.
- Prefer bot scopes over user scopes for automated alerts.
- Do not grant history, file, admin, or user scopes “just in case.”
- Remove the app from channels it no longer needs.
Official references: n8n Slack credentials, Slack bot scopes, and chat:write.