Slack
Manage Slack channels, messages, files, reactions, stars, users, and user groups
Overview
The Slack tool provides comprehensive Slack workspace management: send, update, delete and search messages; manage channels (create, archive, rename, invite, kick, get history, get thread replies); upload files and read file metadata; add and remove reactions; manage stars; get user info and presence; update user profiles; and manage user groups. File upload consumes binary data from the incoming item. Every operation authenticates with a Slack bearer token.
Category: Communication
Tool Name: slack
Version: 1
Appearance: Icon: lucide-MessageSquare | Color: #4A154B
Node Type
Action (Binary) — handles file/binary data operations
| Direction | Port(s) |
|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Slack API credentials.
See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|
| Channel | channel |
| File | file |
| Message | message |
| Reaction | reaction |
| Star | star |
| User | user |
| User Group | userGroup |
Operations
Each resource has its own operation list. Select the resource first; the Operation dropdown then offers only that resource’s operations.
| Operation | Value | Description |
|---|
| Channel: Archive | archive | Archive a channel |
| Channel: Close | close | Close a conversation |
| Channel: Create | create | Create a new channel |
| Channel: Get | get | Get one channel’s details |
| Channel: Get Many | getAll | List the workspace’s channels |
| Channel: History | history | Read a channel’s message history |
| Channel: Invite | invite | Invite users to a channel |
| Channel: Join | join | Join a channel |
| Channel: Kick | kick | Remove a user from a channel |
| Channel: Leave | leave | Leave a channel |
| Channel: Member | member | List a channel’s members |
| Channel: Open | open | Open or resume a direct message conversation |
| Channel: Rename | rename | Rename a channel |
| Channel: Replies | replies | Read the replies in a message thread |
| Channel: Set Purpose | setPurpose | Set a channel’s purpose |
| Channel: Set Topic | setTopic | Set a channel’s topic |
| Channel: Unarchive | unarchive | Restore an archived channel |
| File: Get | get | Get one file’s metadata |
| File: Get Many | getAll | List files |
| File: Upload | upload | Upload binary data from the item as a file |
| Message: Delete | delete | Delete a message |
| Message: Get Permalink | getPermalink | Get a permanent link to a message |
| Message: Search | search | Search messages across the workspace |
| Message: Send | post | Send a message to a channel or a user |
| Message: Update | update | Edit an existing message |
| Reaction: Add | add | Add an emoji reaction to a message |
| Reaction: Get | get | Read the reactions on a message |
| Reaction: Remove | remove | Remove an emoji reaction from a message |
| Star: Add | add | Star a message or a file |
| Star: Delete | delete | Remove a star |
| Star: Get Many | getAll | List starred items |
| User: Get | info | Get one user’s details |
| User: Get Many | getAll | List the workspace’s users |
| User: Get User’s Profile | getProfile | Read a user’s profile fields |
| User: Get User’s Status | getPresence | Read a user’s presence |
| User: Update User’s Profile | updateProfile | Update a user’s profile fields |
| User Group: Add Users | updateUsers | Add users to a user group |
| User Group: Create | create | Create a user group |
| User Group: Disable | disable | Disable a user group |
| User Group: Enable | enable | Re-enable a disabled user group |
| User Group: Get Many | getAll | List user groups |
| User Group: Get Users | getUsers | List a user group’s members |
| User Group: Update | update | Update a user group’s details |
Parameters
Several parameters share a display name but use different internal names — the internal name is shown in backticks so you can copy the right key into a JSON config or an expression.
Channel: Archive
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
Channel: Close
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
Channel: Create
| Parameter | Type | Required | Default | Description |
|---|
Channel Name (channelId) | string | Yes | — | Name of the channel to create. Leading # is stripped automatically. |
| Channel Visibility | options | No | public | Whether the new channel is open to the workspace or invite-only. |
| | | | Options: public, private |
Channel: Get
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
Channel: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of channels to return (1–1000). (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the channel listing. |
| — Types | multiOptions | No | [] | Which conversation types to include. |
| | | | Options: public_channel, private_channel, im (one-to-one direct messages), mpim (group direct messages) |
| — Exclude Archived | boolean | No | false | Leave archived channels out of the results. |
Channel: History
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of messages to return (1–1000). (shown when Return All is false) |
| Filters | collection | No | {} | Restrict the history to a time window. |
| — Inclusive | boolean | No | false | Include messages that sit exactly on the Latest or Oldest boundary. |
| — Latest | string | No | — | ISO datetime or Unix timestamp (latest boundary). |
| — Oldest | string | No | — | ISO datetime or Unix timestamp (oldest boundary). |
Channel: Invite
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
User IDs (userIds) | string | Yes | — | Comma-separated user IDs to invite to the channel. |
Channel: Join
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
Channel: Kick
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
User ID (userId) | string | Yes | — | The user ID to kick from the channel. |
Channel: Leave
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
Channel: Member
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of members to return (1–1000). (shown when Return All is false) |
| Resolve Data | boolean | No | false | Whether to resolve member IDs to full user objects. |
Channel: Open
| Parameter | Type | Required | Default | Description |
|---|
Options (options) | collection | No | {} | How to open the conversation. |
| — Channel ID | string | No | — | Resume a conversation by channel ID. |
| — Return IM | boolean | No | false | Return the full direct-message object rather than just its ID. |
| — Users | string | No | — | Comma-separated user IDs to open a DM with. |
Channel: Rename
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
New Name (name) | string | Yes | — | New name for the channel. |
Channel: Replies
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
Thread Timestamp (ts) | string | Yes | — | Timestamp of the parent message to get replies for. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of replies to return (1–1000). (shown when Return All is false) |
| Filters | collection | No | {} | Restrict the replies to a time window. |
| — Inclusive | boolean | No | false | Include replies that sit exactly on the Latest or Oldest boundary. |
| — Latest | string | No | — | Latest boundary of the reply window. |
| — Oldest | string | No | — | Oldest boundary of the reply window. |
Channel: Set Purpose
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
| Purpose | string | Yes | — | The channel purpose to set. Supports expressions. |
Channel: Set Topic
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
| Topic | string | Yes | — | The channel topic to set. Supports expressions. |
Channel: Unarchive
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions. |
File: Get
| Parameter | Type | Required | Default | Description |
|---|
| File ID | string | Yes | — | The ID of the file to look up. Supports expressions. |
File: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of files to return (1–100). (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the file listing. |
| — Channel ID | string | No | — | Only list files shared in this channel. |
| — Show Files Hidden By Limit | boolean | No | false | Include files hidden by the workspace’s file limit. |
| — Timestamp From | string | No | — | Only list files created at or after this time. |
| — Timestamp To | string | No | — | Only list files created at or before this time. |
| — Types | multiOptions | No | ["all"] | Which file types to include. |
| | | | Options: all, gdocs (Google Docs), images, pdfs, snippets, spaces, zips |
| — User ID | string | No | — | Only list files uploaded by this user. |
File: Upload
| Parameter | Type | Required | Default | Description |
|---|
| Binary Property | string | Yes | data | Name of the binary property which contains the data for the file to be uploaded. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
Options (options) | collection | No | {} | Where and how the file is shared. |
| — Channel ID | string | No | — | Channel to share the file in. |
| — File Name | string | No | — | Name to store the file under. Falls back to the binary property’s own file name. |
| — Initial Comment | string | No | — | Message text introducing the file. |
| — Thread Timestamp | string | No | — | Reply to a thread by providing the parent message timestamp. |
| — Title | string | No | — | Title shown above the file in Slack. |
Message: Delete
| Parameter | Type | Required | Default | Description |
|---|
Send Message To (select) | options | Yes | channel | Whether the message lives in a channel or a direct message. |
| | | | Options: channel, user |
| Channel ID | string | Yes | — | The channel or conversation ID the message is in. (shown when Send Message To is channel) |
User ID (user) | string | Yes | — | The user ID whose DM the message is in. Use format @username or a user ID like U0123ABC. (shown when Send Message To is user) |
Message Timestamp (timestamp) | string | Yes | — | Timestamp (ts) of the message to update or delete. |
Message: Get Permalink
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The channel the message is in. Supports expressions. |
Message Timestamp (timestamp) | string | Yes | — | Timestamp (ts) of the message to link to. |
Message: Search
| Parameter | Type | Required | Default | Description |
|---|
| Query | string | Yes | — | Search query. Supports Slack search modifiers like in:#channel. |
| Sort | options | No | desc | The order results come back in. |
| | | | Options: relevance, desc (newest first), asc (oldest first) |
| Return All | boolean | No | false | Whether to return all matches or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of matches to return (1–100). (shown when Return All is false) |
Options (options) | collection | No | {} | Extra search scoping. |
| — Search in Channel Names | string | No | — | Comma-separated channel names to restrict the search to (appended as in:channel modifiers). |
Message: Send
| Parameter | Type | Required | Default | Description |
|---|
Send Message To (select) | options | Yes | channel | Whether to post into a channel or send a direct message. |
| | | | Options: channel, user |
| Channel ID | string | Yes | — | The channel or conversation ID to send the message to. (shown when Send Message To is channel) |
User ID (user) | string | Yes | — | The user ID to send a DM to. Use format @username or a user ID like U0123ABC. (shown when Send Message To is user) |
| Message Type | options | No | text | Which body format the message uses. |
| | | | Options: text, block (Block Kit), attachment (legacy attachments) |
| Text | string | No | — | The text content of the message. For Block Kit messages, this is the fallback text. |
| Blocks (JSON) | json | No | [] | Block Kit blocks as JSON array. See https://api.slack.com/block-kit (shown when Message Type is block) |
| Attachments (JSON) | json | No | [] | Legacy attachments as JSON array. (shown when Message Type is attachment) |
| Other Options | collection | No | {} | Threading, formatting and identity options. |
| — Send as User | string | No | — | Username to post as (requires accessToken auth, not OAuth2). |
| — Thread Timestamp | string | No | — | Timestamp of parent message to reply to. |
| — Reply Broadcast | boolean | No | false | Whether to also post the reply to the channel. |
| — Unfurl Links | boolean | No | false | Expand link previews in the message. |
| — Unfurl Media | boolean | No | true | Expand media previews in the message. |
| — Markdown | boolean | No | true | Render Slack markdown in the message text. |
| — Link Names | boolean | No | false | Turn @mentions and #channels into real links. |
| — Icon URL | string | No | — | Image URL to use as the sender’s avatar. |
| — Icon Emoji | string | No | — | Emoji code to use as the sender’s avatar. |
| — Ephemeral | boolean | No | false | Whether to send an ephemeral message (only visible to the specified user). When sending to a channel, you must also set Ephemeral User. |
| — Ephemeral User | string | No | — | User ID to show the ephemeral message to (required when sending ephemeral to a channel). |
Message: Update
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The channel the message is in. Supports expressions. |
| Message Type | options | No | text | Which body format the replacement message uses. |
| | | | Options: text, block (Block Kit), attachment (legacy attachments) |
| Text | string | No | — | The text content of the message. For Block Kit messages, this is the fallback text. |
| Blocks (JSON) | json | No | [] | Block Kit blocks as JSON array. See https://api.slack.com/block-kit (shown when Message Type is block) |
| Attachments (JSON) | json | No | [] | Legacy attachments as JSON array. (shown when Message Type is attachment) |
Message Timestamp (timestamp) | string | Yes | — | Timestamp (ts) of the message to update or delete. |
| Update Fields | collection | No | {} | Extra formatting applied to the edit. |
| — Link Names | boolean | No | false | Turn @mentions and #channels into real links. |
| — Parse | options | No | none | How Slack parses the message text. |
| | | | Options: client, full, none |
Reaction: Add
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The channel the message is in. Supports expressions. |
Message Timestamp (timestamp) | string | Yes | — | Timestamp (ts) of the message to react to, e.g. 1663233118.856619. |
Emoji Code (name) | string | Yes | — | Emoji code (e.g., “+1”, “thumbsup”). Do not use actual emoji characters. |
Reaction: Get
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The channel the message is in. Supports expressions. |
Message Timestamp (timestamp) | string | Yes | — | Timestamp (ts) of the message to read reactions from, e.g. 1663233118.856619. |
Reaction: Remove
| Parameter | Type | Required | Default | Description |
|---|
| Channel ID | string | Yes | — | The channel the message is in. Supports expressions. |
Message Timestamp (timestamp) | string | Yes | — | Timestamp (ts) of the message to remove the reaction from, e.g. 1663233118.856619. |
Emoji Code (name) | string | Yes | — | Emoji code (e.g., “+1”, “thumbsup”). Do not use actual emoji characters. |
Star: Add
| Parameter | Type | Required | Default | Description |
|---|
Item to Star (target) | options | Yes | message | Whether the star goes on a message or on a file. |
| | | | Options: message, file |
| Channel ID | string | Yes | — | The channel holding the item to star. Supports expressions. |
| File ID | string | No | — | The file to star. (shown when Item to Star is file) |
Message Timestamp (timestamp) | string | No | — | Timestamp (ts) of the message to star, e.g. 1663233118.856619. (shown when Item to Star is message) |
Options (options) | collection | No | {} | Additional star targets. |
| — File Comment | string | No | — | Star a comment on a file instead of the file itself. |
Star: Delete
| Parameter | Type | Required | Default | Description |
|---|
Options (options) | collection | No | {} | Which star to remove — supply the same target you starred. |
| — Channel ID | string | No | — | The channel holding the starred item. |
| — File ID | string | No | — | The starred file. |
| — File Comment | string | No | — | The starred file comment. |
| — Message Timestamp | string | No | — | Timestamp (ts) of the starred message. |
Star: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all starred items or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of starred items to return (1–100). (shown when Return All is false) |
User: Get
| Parameter | Type | Required | Default | Description |
|---|
User ID (user) | string | Yes | — | The user ID (e.g., U0123ABCDEF). |
User: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all users or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of users to return (1–200). (shown when Return All is false) |
User: Get User’s Profile
| Parameter | Type | Required | Default | Description |
|---|
User ID (user) | string | Yes | — | The user ID (e.g., U0123ABCDEF). |
User: Get User’s Status
| Parameter | Type | Required | Default | Description |
|---|
User ID (user) | string | Yes | — | The user ID (e.g., U0123ABCDEF). |
User: Update User’s Profile
| Parameter | Type | Required | Default | Description |
|---|
Options (options) | collection | No | {} | The profile fields to write. Fields you leave out are not changed. |
| — Email | string | No | — | The profile email address. |
| — First Name | string | No | — | The profile first name. |
| — Last Name | string | No | — | The profile last name. |
| — Status Text | string | No | — | The custom status message. |
| — Status Emoji | string | No | — | Emoji code for status (e.g., :house_with_garden:). |
| — Status Expiration | string | No | — | ISO datetime for status expiration. Leave empty for no expiration. |
| — Custom Fields (JSON) | json | No | {} | Custom profile fields as JSON object: { “fieldId”: { “value”: ”…”, “alt”: ”…” } } |
| — User ID (Admin Only) | string | No | — | Set another user profile (admin only). |
User Group: Add Users
| Parameter | Type | Required | Default | Description |
|---|
| User Group ID | string | Yes | — | The ID of the user group to change. Supports expressions. |
User IDs (users) | string | Yes | — | Comma-separated user IDs to add to the group. Existing members are preserved. |
Options (options) | collection | No | {} | Extra response options. |
| — Include Count | boolean | No | false | Include the group’s user count in the result. |
User Group: Create
| Parameter | Type | Required | Default | Description |
|---|
Group Name (name) | string | Yes | — | Name of the new user group. Supports expressions. |
Options (Options) | collection | No | {} | Optional details for the new group. Note the capital O — the internal key is Options, not options. |
| — Channel IDs | string | No | — | Comma-separated channel IDs. |
| — Description | string | No | — | What the group is for. |
| — Handle | string | No | — | The @handle used to mention the group. |
| — Include Count | boolean | No | false | Include the group’s user count in the result. |
User Group: Disable
| Parameter | Type | Required | Default | Description |
|---|
| User Group ID | string | Yes | — | The ID of the user group to disable. Supports expressions. |
Options (options) | collection | No | {} | Extra response options. |
| — Include Count | boolean | No | false | Include the group’s user count in the result. |
User Group: Enable
| Parameter | Type | Required | Default | Description |
|---|
| User Group ID | string | Yes | — | The ID of the user group to enable. Supports expressions. |
Options (option) | collection | No | {} | Extra response options. Note the singular — the internal key is option, not options. |
| — Include Count | boolean | No | false | Include the group’s user count in the result. |
User Group: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all user groups or only up to a given limit. |
| Limit | number | No | 50 | Maximum number of user groups to return (1–200). (shown when Return All is false) |
Options (options) | collection | No | {} | What each returned group includes. |
| — Include Count | boolean | No | false | Include each group’s user count. |
| — Include Disabled | boolean | No | false | Include disabled groups in the listing. |
| — Include Users | boolean | No | false | Include each group’s member list. |
User Group: Get Users
| Parameter | Type | Required | Default | Description |
|---|
| User Group ID | string | Yes | — | The ID of the user group to read. Supports expressions. |
Options (options) | collection | No | {} | How much detail to return per member. |
| — Resolve Data | boolean | No | true | Whether to fetch full user objects instead of just user IDs. |
User Group: Update
| Parameter | Type | Required | Default | Description |
|---|
| User Group ID | string | Yes | — | The ID of the user group to update. Supports expressions. |
| Update Fields | collection | No | {} | The group fields to write. Fields you leave out are not changed. |
| — Channels | string | No | — | Comma-separated channel IDs. |
| — Description | string | No | — | What the group is for. |
| — Handle | string | No | — | The @handle used to mention the group. |
| — Include Count | boolean | No | false | Include the group’s user count in the result. |
| — Name | string | No | — | New name for the group. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently. Keep low due to Slack rate limits. |
Output Data
The Slack object returned by the API becomes the output item’s JSON — the incoming item’s JSON does not pass through, so read any upstream field you still need before this node. Binary data on the input item is forwarded unchanged; the node never produces new binary data, so File: Get returns the file’s metadata rather than its contents.
Most operations unwrap the API envelope for you, so the item is the object itself: Channel operations put the channel object on the item, User: Get puts the user object, User: Get User’s Profile and User: Update User’s Profile put the profile object, and the User Group operations put the user-group object. Reference the fields directly, e.g. {{ $json.id }} or {{ $json.name }}.
A returned message timestamp arrives as message_timestamp, not ts. Where the API answers with a top-level ts — Message: Send is the common case — the node renames it, so chain a follow-up node with {{ $json.message_timestamp }} to react to, update, thread under or delete the message you just sent. Records inside a fanned-out list keep their own ts field; the rename only touches the top level of a single response.
Operations that fan out. These return a list and emit one output item per record rather than one per input item:
| Operation | One item per |
|---|
| Channel: Get Many | channel |
| Channel: History | message |
| Channel: Member | member — { "member": "U0123ABC" } per member, or a full user object when Resolve Data is on |
| Channel: Replies | reply message |
| File: Get Many | file |
| File: Upload | uploaded file object |
| Message: Search | matching message |
| Star: Get Many | starred item |
| User: Get Many | user |
| User Group: Get Many | user group |
| User Group: Get Users | member — a full user object by default, or { "id": "U0123ABC" } when Resolve Data is off |
When one of these returns nothing, that input item produces no output items at all — the branch downstream simply receives fewer items. Guard against an empty branch rather than expecting an empty-array item.
With Return All off, the Limit applies to the number of records fetched; with it on, the node pages through the whole result set, which is where Slack’s rate limits bite hardest.
Failures follow the node’s error mode: in errorPort mode the failed item is routed to the Error output carrying an _error object, with the input item’s binary still attached.
Usage Examples
- Send a message to a Slack channel
- Upload a file to Slack
- Get file info from Slack
- Search Slack messages
- Add a reaction to a message
- Create a Slack channel
- Get channel history
- List channel members
- Get user info
- Update user profile status
- Create a user group
- Add users to a user group
Example Configuration
Send a plain text message to a channel:
{
"type": "slack",
"parameters": {
"resource": "message",
"operation": "post",
"select": "channel",
"channelId": "C1234567890",
"messageType": "text",
"text": "Deployment {{ $json.version }} finished at {{ $datetime.iso }}"
}
}
Reply inside an existing thread — a preceding Slack node’s message_timestamp is the parent:
{
"type": "slack",
"parameters": {
"resource": "message",
"operation": "post",
"select": "channel",
"channelId": "C1234567890",
"messageType": "text",
"text": "{{ $json.summary }}",
"otherOptions": {
"threadTs": "{{ $json.message_timestamp }}",
"replyBroadcast": false,
"link_names": true
}
}
}
Send a Block Kit message, keeping Text as the notification fallback:
{
"type": "slack",
"parameters": {
"resource": "message",
"operation": "post",
"select": "channel",
"channelId": "C1234567890",
"messageType": "block",
"text": "Build failed",
"blocksJson": "[{\"type\":\"section\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Build failed* on branch {{ $json.branch }}\"}}]"
}
}
Create a private channel:
{
"type": "slack",
"parameters": {
"resource": "channel",
"operation": "create",
"channelId": "{{ $json.projectSlug }}",
"channelVisibility": "private"
}
}
Read the last 100 messages of a channel within a time window — this emits one item per message:
{
"type": "slack",
"parameters": {
"resource": "channel",
"operation": "history",
"channelId": "C1234567890",
"returnAll": false,
"limit": 100,
"filters": {
"oldest": "{{ $json.since }}",
"inclusive": true
}
}
}
Upload a file produced by an upstream node and announce it in a channel:
{
"type": "slack",
"parameters": {
"resource": "file",
"operation": "upload",
"binaryPropertyName": "data",
"options": {
"channelId": "C1234567890",
"fileName": "{{ $json.reportName }}.pdf",
"initialComment": "Weekly report",
"title": "Weekly report"
}
}
}
React to a message with an emoji code — never a literal emoji character:
{
"type": "slack",
"parameters": {
"resource": "reaction",
"operation": "add",
"channelId": "{{ $json.channel }}",
"timestamp": "{{ $json.ts }}",
"name": "white_check_mark"
}
}
Search messages and cap the result set:
{
"type": "slack",
"parameters": {
"resource": "message",
"operation": "search",
"query": "project deadline in:#general",
"sort": "desc",
"returnAll": false,
"limit": 20
}
}
Create a user group — note the capital Options key this operation uses:
{
"type": "slack",
"parameters": {
"resource": "userGroup",
"operation": "create",
"name": "Engineering Team",
"Options": {
"handle": "engineering",
"description": "All engineering team members",
"channelIds": "C1234567890,C0987654321",
"include_count": true
}
}
}
Add users to that group:
{
"type": "slack",
"parameters": {
"resource": "userGroup",
"operation": "updateUsers",
"userGroupId": "S1234567890",
"users": "{{ $json.memberIds }}"
}
}
Set a user’s status:
{
"type": "slack",
"parameters": {
"resource": "user",
"operation": "updateProfile",
"options": {
"status_text": "In a meeting",
"status_emoji": ":calendar:",
"status_expiration": "{{ $json.endsAt }}"
}
}
}
Error Handling
| Mode | Behavior |
|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage Slack channels, messages, files, reactions, stars, users, and user groups via the Slack Web API. File upload reads binary data; file download produces file metadata.
Notes
- Keep Max Concurrency low. Slack rate-limits aggressively per method, and the node fires one request per item. The default of 5 is a deliberate ceiling, not a starting point to raise.
- Three parameters share the display name “Options” but not the same key. User Group: Create uses
Options (capital O) and User Group: Enable uses option (singular); everywhere else it is options. Copy the key shown in the Parameter column.
- Emoji reactions take a code, not a character. Use
thumbsup or +1, not the emoji itself.
- Channel ID accepts a pasted Slack URL — the ID is extracted for you. On Channel: Create the same
channelId key holds the new channel’s name, not an ID.
- Message Type decides which body field is read.
text uses Text alone, block reads Blocks (JSON), and attachment reads Attachments (JSON); with Block Kit, Text is still worth filling in as the notification fallback.
- Send as User needs token-based auth, so it does nothing on an OAuth2 credential.
- The item JSON is replaced, not merged. Unlike most nodes, Slack puts the API object on the item by itself. If a downstream node needs an upstream field, capture it before the Slack node or re-attach it afterwards.