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.
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.
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.
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
This tool manages Slack channels, messages, files, reactions, stars, users, and user groups. It is ideal for comprehensive Slack workspace management, including sending messages, uploading and downloading files, and managing user groups, when direct interaction with the Slack platform is required. It produces updated Slack resources, message search results, file metadata, or binary file data.
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.