Slack n8n integrationAutomate Slack with n8n.
Need Slack to react to what your workflows do, and the other way round? The Slack n8n integration covers 44 operations across 7 resources (channels, messages, files, reactions, stars, users, user groups), and the Slack Trigger catches 9 workspace events, from a message posted to a file shared.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Slack n8n integration give you?
The Slack n8n integration links a Slack workspace to n8n through two nodes. The Slack node calls the Slack API and covers 44 operations across 7 resources. The Slack Trigger receives 9 workspace events over a webhook, meaning a URL that Slack calls the second something happens. One credential drives both nodes when it carries an API access token; with OAuth2, the Slack node is covered and the trigger needs one of its own. A single Slack app still serves every workflow on your instance.
Approvals that stay inside Slack. The Message resource has a Send and Wait for Response operation: n8n posts the question, pauses the run, and picks it up when someone answers. With Response Type set to Approval, the signing secret in Signature Secret and Capture Who Responded turned on, the buttons work in the message itself, no browser page opens, and the output records who responded. Restrict Who Can Approve keeps the decision with the people you list; anyone else who clicks gets a private notice and the workflow keeps waiting.
A channel per project, opened and archived on its own. A new row in Google Sheets can create the channel (Channel Visibility decides public or private), invite the right people, set the purpose so nobody asks what the room is for, then archive it once the project closes. Nothing is lost on the way: an archived conversation keeps its history and comes back with Unarchive.
Slack as the front door of a workflow. The trigger fires on a message or a mention in a watched channel, and the run answers with the data your team was asking for, or forwards it to Discord or Gmail when the next step belongs somewhere else. Files travel the same road: File Shared events with Download Files turned on hand the file straight to the following node.
When to reach for HTTP Request instead. Those 44 operations are the boundary of the node. For any other Slack endpoint, the HTTP Request node calls it directly and reuses the same Slack credential through predefined authentication, so you still manage one app and one token.
The limits worth knowing before you build. OAuth2 is the recommended method for the Slack node, but it does not work with the Slack Trigger, which needs an API access token. A few scopes cannot be granted to a bot token (channels:write, stars:read, stars:write, users.profile:write), so the operations behind them ask for a user token. Slack allows one request URL per app, which makes testing and production compete for the same trigger. For the wider picture on the platform itself, the n8n review and the n8n training go past this single integration.
How do you connect Slack to n8n?
- 01
Create the Slack app and copy its token
Open your Slack API Apps page and select Create New App, then From a manifest. Pick the workspace, paste the JSON manifest n8n publishes (it sets every scope in one step, from
channels:readtousers:read), and create the app. Under Features, then OAuth & Permissions, select Install to Workspace and Allow, which takes a Slack workspace admin. Copy the Bot User OAuth Token from the OAuth Tokens section. - 02
Save the credential in n8n
In n8n, open Credentials and paste that value into the Access Token field. A credential is created once and reappears in the dropdown of every workflow, so the whole instance shares one Slack app. The access token is required for the Slack Trigger and works with the Slack node, where OAuth2 (Client ID and Client Secret from the same app) is the recommended method.
- 03
Turn on events and verify the URL
For the trigger, go to Features, then Event Subscriptions in your Slack app and turn on Enable Events. Copy the Webhook URL from n8n into Request URL. Once Slack verifies it, select the bot events to subscribe to, and filter them with the Trigger On field in n8n. For an event that is missing from the n8n list, add it as a bot event and select Any Event. Paste the Signing Secret from Settings, then Basic Information, into Signature Secret.
What the Slack Trigger can listen to
Slack Trigger is the node that starts a workflow when something happens in Slack. It listens to 9 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Slack account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
any_event.*1any_event. any_event
app_home_opened.*1app_home_ opened. app_home_ opened
app_mention.*1app_mention. app_mention
channel_created.*1channel_created. channel_created
file_public.*1file_public. file_public
file_share.*1file_share. file_share
message.*1message.message
reaction_added.*1reaction_added. reaction_added
team_join.*1team_join. team_join
Configuration notes
01Set up the Slack Trigger
The Slack Trigger is a webhook node: Slack calls the n8n URL as soon as an event happens, so nothing is polled on a schedule and events land within seconds. The node is at version 1 and handles the 9 events below.
Key parameters
- Trigger On: the events that start the workflow, among the ones your Slack app subscribes to.
- Watch Whole Workspace: on, the node watches every channel instead of one. Slack then sends an event for any channel your app belongs to, and each one uses an execution, so treat it with care.
- Channel to Watch: required unless Watch Whole Workspace is on. Pick it from the list, by ID (Slack shows it at the bottom of the channel details with a copy button) or by URL, formatted as
https://app.slack.com/client/<channel-address>. - Download Files: adds the file itself to the node output, for the File Shared and File Made Public events.
- Resolve IDs: an option that returns names instead of raw IDs.
02Message and mention events
Two events cover what people write. message (New Message Posted to Channel) fires on every message posted to a channel the app was added to. app_mention (Bot / App Mention) fires only when your bot or app is mentioned there, which turns a workflow into something colleagues call on demand instead of a firehose.
Key parameters
- Channel to Watch: both events apply to it, so the trigger listens to one room unless Watch Whole Workspace is on.
- Usernames or IDs to ignore: an option that drops events coming from the accounts you list, given as usernames or as a comma separated string of encoded user IDs.
03File events
file_share (File Shared) fires when a file is shared in a channel the app belongs to. file_public (File Made Public) fires when a file becomes public, which is worth watching on its own when documents should stay inside the workspace.
Key parameters
- Download Files: turn it on and the binary reaches the next node directly, with no second call to fetch it.
- Channel to Watch: File Shared applies to the selected channel, so the trigger follows one room unless Watch Whole Workspace is on.
- Resolve IDs: an option that returns the names behind the IDs of the channel and the user who shared the file, which saves a lookup later in the run.
04People, channel and reaction events
The remaining events describe the workspace itself. team_join (New User) fires when someone is added to Slack. channel_created (New Public Channel Created) reports a new public channel. reaction_added (Reaction Added) fires when a reaction lands on a message the app was added to, and app_home_opened (App Home Opened) when a user opens the Home tab of your app. any_event (Any Event) catches everything, including an event you added as a bot event but cannot find in the n8n list.
Key parameters
- Emoji Names to Filter: limits Reaction Added to the emoji you name, comma separated and not colon separated, for example
thumbsup, eyes, white_check_mark. Leave it empty to catch any reaction.
white_check_mark on a request as the green light that moves a task forward.Slack actions available in n8n
The Slack node exposes 44 operations across 7 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Add | Remove | Archive | Close | Disable | Enable | Get Permalink | Get User's Status | Get User's Profile | Get Users | History | Get | Invite | Join | Kick | Leave | Member | Open | Send | Rename | Replies | Search | Send and Wait for Response | Set Purpose | Set Topic | Unarchive | Update User's Profile | Add Users | Upload |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Channel | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||||||||||||
| File | ✓ | ✓ | ✓ | |||||||||||||||||||||||||||||||
| Message | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||||||||||||||||
| Reaction | ✓ | ✓ | ✓ | |||||||||||||||||||||||||||||||
| Star | ✓ | ✓ | ✓ | |||||||||||||||||||||||||||||||
| User | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||||||||||||||||||||||||
| User Group | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Operations index
- Archive a channel
- Close a channel
- Create a channel
- Get a channel
- Get many channels
- Get the history of a channel
- Invite a user to a channel
- Join a channel
- Kick a user from a channel
- Leave a channel
- Get members of a channel
- Open a channel
- Rename a channel
- Get a thread of messages posted to a channel
- Set the purpose of a channel
- Set the topic of a channel
- Unarchive a channel
Channel
17 operationsArchive a channel
channel.archiveWhat you see in n8n
Notes & use cases
Archiving closes a conversation without deleting it: the channel leaves the active list, its history stays readable, and Unarchive brings it back later.
Key parameters
- Channel: the Slack channel to archive, chosen from the list, by ID or by URL. The field is not marked required, so it often arrives from a previous step through an expression of the form
{{ $json.channel }}.
Close a channel
channel.closeWhat you see in n8n
Notes & use cases
Close ends a direct message or a multi-person direct message. The conversation is not deleted, it simply stops sitting in the sidebar of the people involved.
Key parameters
- Channel: required. The direct message to close, selected from the list, by ID or by URL. Feed it the ID that Open a channel returned, so the run closes what it opened.
Create a channel
channel.createWhat you see in n8n
Notes & use cases
This operation starts a new channel-based conversation and returns its ID, which every later step of the same run can reuse.
Key parameters
- Channel: required, a plain text field holding the channel name (the placeholder reads
Channel name), so an expression can build it from the record that started the workflow. - Channel Visibility: required, either
public(Public Channel) orprivate(Private Channel).
Get a channel
channel.getWhat you see in n8n
Notes & use cases
Get a channel reads the information Slack holds about one conversation, which is how a workflow checks what it is about to write into.
Key parameters
- Channel: required, the channel to read, from the list, by ID or by URL.
- Include Num of Members: an option that adds the member count to the response, handy when a rule depends on how many people sit in the room.
Get many channels
channel.getAllWhat you see in n8n
Notes & use cases
Get many channels returns the conversations of a Slack team as a list of items, one per channel, ready to loop over.
Key parameters
- Return All: on, n8n walks the pages of the API and brings back every channel; off, Limit caps how many come back.
- Exclude Archived: a filter that leaves archived conversations out of the list.
- Types: mix and match
public_channel,private_channel,mpimandimto keep only the kinds you care about.
Get the history of a channel
channel.historyWhat you see in n8n
Notes & use cases
History pulls the messages and events of one conversation, so a workflow can read what was said instead of only writing into Slack.
Key parameters
- Channel: required, the conversation to read the history from.
- Oldest and Latest: the start and the end of the time range to include; Inclusive keeps the messages sitting exactly on those timestamps.
- Return All: page through the whole range, or leave it off and set Limit.
Invite a user to a channel
channel.inviteWhat you see in n8n
Notes & use cases
Invite adds one or several people to a channel. They find it in their sidebar, with the conversation that already took place.
Key parameters
- Channel: required, the channel to invite to.
- User Names or IDs: required, the users to bring in. Choose them from the list, or pass their IDs with an expression when they come from a previous node.
Join a channel
channel.joinWhat you see in n8n
Notes & use cases
Here the app itself joins an existing conversation. Slack only delivers events from channels the app belongs to, which makes this operation the usual fix when a trigger stays quiet.
Key parameters
- Channel: required, the conversation to join, from the list, by ID or by URL.
Kick a user from a channel
channel.kickWhat you see in n8n
Notes & use cases
Kick removes a user from a channel, the mirror image of Invite. The person keeps access to everything else in the workspace.
Key parameters
- Channel: required, the channel to remove the user from.
- User Name or ID: the account to remove, picked from the list or given as an ID through an expression.
Leave a channel
channel.leaveWhat you see in n8n
Notes & use cases
Leave takes the app out of a conversation. Events from that channel stop reaching the Slack Trigger, and the bot can no longer post there.
Key parameters
- Channel: required, the conversation to leave.
Get members of a channel
channel.memberWhat you see in n8n
Notes & use cases
This operation lists the people in a conversation, one item per member, which is what an audit or a reminder needs before it goes out.
Key parameters
- Channel: required, the channel to read the members from.
- Resolve Data: on, n8n resolves the data automatically, since the response otherwise carries only the ID of each resource.
- Return All: take the full roster, or leave it off and set Limit.
Open a channel
channel.openWhat you see in n8n
Notes & use cases
Open starts a direct message, or resumes one that already exists. With a single user it creates a one to one conversation; with several it opens a group message and preserves the order of the users.
Key parameters
- User Names or IDs: the people to open the conversation with. Supply a channel when you do not supply users.
- Channel ID: resumes an existing im or mpim from its ID, instead of the users field.
- Return IM: asks Slack for the full IM channel definition in the response.
Rename a channel
channel.renameWhat you see in n8n
Notes & use cases
Rename changes the name of a conversation. Two values do the whole job: the channel to rename, and the name it carries from now on.
Key parameters
- Channel: required, the channel to rename.
- Name: required, the new name for the conversation.
Get a thread of messages posted to a channel
channel.repliesWhat you see in n8n
Notes & use cases
Replies returns a thread: the parent message and everything posted underneath, which is where most of the real conversation happens.
Key parameters
- Channel: required, the channel holding the thread.
- Message Timestamp: required, the timestamp of the parent message, in the
1663233118.856619form Slack uses to identify a message. - Oldest, Latest and Inclusive: bound the replies to a time range; Return All pages through the rest.
Set the purpose of a channel
channel.setPurposeWhat you see in n8n
Notes & use cases
Sets the purpose of a conversation, which is where a channel says what it exists for. Writing it from a workflow means a channel never stays anonymous.
Key parameters
- Channel: required, the channel to set the purpose of.
- Purpose: required, the new text.
Set the topic of a channel
channel.setTopicWhat you see in n8n
Notes & use cases
Sets the topic of a conversation. The topic changes far more often than the purpose, which describes the channel, and that is what makes it worth automating.
Key parameters
- Channel: required, the channel to set the topic of.
- Topic: required, the text to display.
Unarchive a channel
channel.unarchiveWhat you see in n8n
Notes & use cases
Unarchive brings an archived conversation back to the active list, with its history untouched.
Key parameters
- Channel: required, the archived conversation to restore, picked from the list or passed as the ID your workflow stored when it archived the channel.
File
3 operationsGet a file
file.getWhat you see in n8n
Notes & use cases
Get a file reads a single file stored in Slack and returns what the API knows about it.
Key parameters
- File ID: the identifier of the file to read. The field is not marked required, so it usually arrives through an expression pointing at the field of the incoming item that carries the ID.
Get many files
file.getAllWhat you see in n8n
Notes & use cases
Get many files searches and filters the files of the team, the operation to reach for when nobody remembers where a document ended up.
Key parameters
- Channel Name or ID: keeps only the files listed in one channel.
- Types: filters by kind, among
all,gdocs,images,pdfs,snippets,spacesandzips. - Message Timestamp From and Message Timestamp To: keep the files created inside that window, both bounds included.
- Return All: page through every match, or leave it off and set Limit.
Upload a file
file.uploadWhat you see in n8n
Notes & use cases
Upload sends a file produced by the workflow into Slack, either as a new file in the workspace or posted directly into the channels you name.
Key parameters
- File Property: required, the name of the binary property that holds the data of the file to upload, so the node knows which output of the previous step to take.
- Channel Names or IDs: the channels the file is sent to, with Initial Comment for the message that introduces it.
- Thread Timestamp: posts the file as a reply. Use the timestamp of the parent message, never that of a reply.
Message
6 operationsDelete a message
message.deleteWhat you see in n8n
Notes & use cases
Removes a single message from Slack. Two values point at it: the conversation it belongs to, and its timestamp, which Slack uses in place of a message ID.
Key parameters
- Delete Message From: pick
channeloruser, depending on whether the message was posted in a channel or in a direct message. - Channel: the Slack channel to delete the message from, picked from the channel list.
- Message Timestamp: the timestamp of the message to delete, in the
1663233118.856619form.
Get a message permalink
message.getPermalinkWhat you see in n8n
Notes & use cases
A permalink is the stable Slack URL of one message. The node builds it from the message timestamp, so another tool can point back into the conversation instead of copying the text out of it.
Key parameters
- Message Timestamp: the timestamp of the message you want the link for, for example
1663233118.856619. - Channel: optional here, the Slack channel to get the message permalink from.
Search for messages
message.searchWhat you see in n8n
Notes & use cases
Searches Slack messages for a piece of text and returns the matches, one item per hit. Order and volume are set in the same node.
Key parameters
- Search Query: the text to search for within messages.
- Sort By:
descfor newest first,ascfor oldest first,relevanceto let Slack rank by relevance score. - Return All: switch it on to page through every match; left off, Limit caps how many messages come back.
- Search in Channel: under Options, restricts the search to the channels you select.
Send a message
message.postWhat you see in n8n
Notes & use cases
Posts a message to a channel or as a direct message. The options decide whether the result reads like a plain notification or like a small interface.
Key parameters
- Send Message To:
channelto post in a channel,userto send a direct message. - Channel: the Slack channel to send to.
- Message Text: the text to post, with Slack markdown on by default and switchable in Options.
- Message Type:
textfor a simple message,blockto paste JSON from Slack's Block Kit Builder into Blocks,attachmentfor attachments. - Include Link to Workflow: appends a link to the workflow, useful once several workflows post to the same channel.
Send message and wait for response
message.sendAndWaitWhat you see in n8n
Notes & use cases
Pauses the workflow until someone answers in Slack. n8n posts the request, waits, then resumes with the decision attached to the item.
Key parameters
- Message: the request the approver reads, sent to the Channel or user in Send Message To.
- Response Type:
approvalfor buttons,freeTextfor a written reply,customFormfor a form built in Form Elements. - Capture Who Responded: turn it on to switch the approval buttons to Slack interactive buttons and record who responded. Restrict Who Can Approve then limits who may act.
Update a message
message.updateWhat you see in n8n
Notes & use cases
Rewrites a message already in the channel, so one post carries the current state.
Key parameters
- Channel: the Slack channel to update the message from.
- Message Timestamp: the timestamp of the message to update, carried over from the node that posted it.
- Blocks: the JSON from Slack's Block Kit Builder, pasted in to replace the layout, with expressions for the variable part.
- Notification Text: the fallback text shown in Slack notifications, markdown included unless Options say otherwise.
- Parse: under Update Fields,
client,fullornonechanges how Slack treats the new text.
Reaction
3 operationsAdd a reaction
reaction.addWhat you see in n8n
Notes & use cases
Puts an emoji on a message that already exists, a mark the team reads at a glance.
Key parameters
- Channel: the Slack channel the message sits in.
- Message Timestamp: the timestamp of the message to react to.
- Emoji Code: the code, not the character, so
+1rather than the thumbs-up emoji itself.
Get a reaction
reaction.getWhat you see in n8n
Notes & use cases
Reads the reactions on one message and hands them to the next node, so a workflow can count who reacted with what. Nothing is written back to Slack.
Key parameters
- Channel: the Slack channel to get the reactions from.
- Message Timestamp: the timestamp of the message to read.
Remove a reaction
reaction.removeWhat you see in n8n
Notes & use cases
Takes one emoji back off a message. The reaction is named the same way it was added, by channel, timestamp and code, so the removal undoes exactly what an earlier step marked.
Key parameters
- Channel: the Slack channel the message was posted in.
- Message Timestamp: the timestamp of the message.
- Emoji Code: the same code used when the reaction was added,
+1for instance.
Star
3 operationsAdd a star
star.addWhat you see in n8n
Notes & use cases
Stars a message or a file for the account the credential belongs to, the same account whose list Get many stars reads back.
Key parameters
- Item to Add Star:
messageorfile. - Channel and Message Timestamp: where the message sits, when the target is a message.
- File ID: the file to star, when the target is a file.
- File Comment: under Options, stars a comment left on a file instead.
Delete a star
star.deleteWhat you see in n8n
Notes & use cases
Unstars an item. Nothing is required at the top of the node: every value travels in Options, and you fill only the ones that match what was starred.
Key parameters
- Channel Name or ID: the channel where the starred message was posted, chosen from the list or set with an expression.
- Message Timestamp: the timestamp of the message to unstar.
- File ID or File Comment: the file, or the comment on a file, to unstar instead.
Get many stars
star.getAllWhat you see in n8n
Notes & use cases
Lists the stars of the authenticated user, one item per starred message or file. It reads the account behind the credential, not the workspace as a whole.
Key parameters
- Return All: on, the node keeps asking for pages until the list is exhausted; off, Limit fixes the maximum number of stars.
User
5 operationsGet information about a user
user.infoWhat you see in n8n
Notes & use cases
Fetches the Slack record of a single user from an ID. Useful when an event or an earlier node leaves an ID behind and the rest of the workflow needs a name.
Key parameters
- User: the ID of the user to get information about, picked from the list or supplied by an expression such as
{{ $json.data.responder.id }}after an approval step.
Get many users
user.getAllWhat you see in n8n
Notes & use cases
Pulls the list of users in the workspace, one item per member. From there a workflow can match Slack accounts against another system, or simply count them.
Key parameters
- Return All: enabled, n8n collects the full member list page by page; disabled, Limit decides how many users come back.
Get a user's profile
user.getProfileWhat you see in n8n
Notes & use cases
The profile holds what a person shows about themselves in Slack: first name, last name, status, custom fields. This operation reads it for one user and returns it as an item.
Key parameters
- User: the ID of the user whose profile you want, picked from the user list or set with an expression.
Get a user's presence status
user.getPresenceWhat you see in n8n
Notes & use cases
Checks whether a user is online in Slack right now. The answer describes the present moment, so read it just before the workflow needs to decide something.
Key parameters
- User: the ID of the user to get the online status of.
Update a user's profile
user.updateProfileWhat you see in n8n
Notes & use cases
Writes values back into a Slack profile. Everything lives in Options, and two of those fields carry a condition worth checking before the workflow goes live.
Key parameters
- First Name and Last Name: the name shown in Slack.
- Email: can only be changed by admins, for users on paid teams.
- User ID: the user to change, which only team admins on paid teams may specify.
- Set Status and Custom Fields: the status line and the custom profile fields.
User Group
7 operationsAdd users to a user group
userGroup.updateUsersWhat you see in n8n
Notes & use cases
Adds people to a user group that already exists. Existing members are preserved, so the list you pass is an addition and never a replacement.
Key parameters
- User Group ID: the encoded ID of the user group to update.
- User Names or IDs: the users to add, chosen from the list or given as IDs through an expression.
- Include Count: under Options, returns the number of users in the group alongside the result.
Create a user group
userGroup.createWhat you see in n8n
Notes & use cases
Creates a user group, the handle that reaches several people at once. Two of its values have to be unique in the workspace, which any workflow generating groups needs to plan for.
Key parameters
- Name: a name for the user group, unique among user groups.
- Handle: the mention handle, unique among channels, users and user groups.
- Description: a short description of the group.
- Channel Names or IDs: the channels the group uses as a default.
Disable a user group
userGroup.disableWhat you see in n8n
Notes & use cases
Switches a user group off. The group is not destroyed, since Enable brings it back with the same ID, which makes this the safe way to retire a handle nobody should ping anymore.
Key parameters
- User Group ID: the encoded ID of the user group to update.
- Include Count: under Options, adds the number of users in the group to the response.
Enable a user group
userGroup.enableWhat you see in n8n
Notes & use cases
Turns a disabled user group back on. It takes the same single identifier as Disable, so the pair can be driven from a schedule or from a form without any other lookup.
Key parameters
- User Group ID: the encoded ID of the user group to update.
Get many user groups
userGroup.getAllWhat you see in n8n
Notes & use cases
Every user group in the workspace comes back as an item, and three options widen what each one carries.
Key parameters
- Return All: leave it off and Limit bounds the number of groups; turn it on for the complete list.
- Include Users: adds the list of users for each group.
- Include Disabled: adds the groups that have been disabled.
- Include Count: adds the number of users in each group.
Get users from a user group
userGroup.getUsersWhat you see in n8n
Notes & use cases
Open one group and get its members back. The response carries user IDs by default, and a single option turns them into full user objects, which spares a lookup per person.
Key parameters
- User Group ID: the encoded ID of the user group.
- Resolve Data: under Options, returns full user objects instead of just user IDs.
Update a user group
userGroup.updateWhat you see in n8n
Notes & use cases
Edits an existing group without touching its membership. Name, handle, description and default channels all sit in Update Fields, where you add only what should change.
Key parameters
- User Group ID: the encoded ID of the user group to update.
- Name: a new name, still unique among user groups.
- Handle: a new mention handle, unique among channels, users and user groups.
- Channel Names or IDs: the default channels of the group.
Need help automating Slack with n8n?
A person reads every message.

