Reference · Tools

Slack

Interact with the Slack messaging platform to manage channels, messages, files, reactions, stars, users, and user groups via the Slack Web API.

Action (binary) Communication v1 Binary data

The Slack node manages channels, messages, files, reactions, stars, users and user groups through the Web API, uploading binary files and retrieving file metadata. A typical build is posting a formatted alert into a channel and reacting to it once someone has acknowledged the issue.

Node type
Action (binary)
Parameters
74
Outputs
Output, Error
Credentials
Slack API

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

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Slack API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Channelchannel
Filefile
Messagemessage
Reactionreaction
Starstar
Useruser
User GroupuserGroup

Operations

Each resource has its own operation list. Select the resource first; the Operation dropdown then offers only that resource’s operations.

OperationValueDescription
Channel: ArchivearchiveArchive a channel
Channel: ClosecloseClose a conversation
Channel: CreatecreateCreate a new channel
Channel: GetgetGet one channel’s details
Channel: Get ManygetAllList the workspace’s channels
Channel: HistoryhistoryRead a channel’s message history
Channel: InviteinviteInvite users to a channel
Channel: JoinjoinJoin a channel
Channel: KickkickRemove a user from a channel
Channel: LeaveleaveLeave a channel
Channel: MembermemberList a channel’s members
Channel: OpenopenOpen or resume a direct message conversation
Channel: RenamerenameRename a channel
Channel: RepliesrepliesRead the replies in a message thread
Channel: Set PurposesetPurposeSet a channel’s purpose
Channel: Set TopicsetTopicSet a channel’s topic
Channel: UnarchiveunarchiveRestore an archived channel
File: GetgetGet one file’s metadata
File: Get ManygetAllList files
File: UploaduploadUpload binary data from the item as a file
Message: DeletedeleteDelete a message
Message: Get PermalinkgetPermalinkGet a permanent link to a message
Message: SearchsearchSearch messages across the workspace
Message: SendpostSend a message to a channel or a user
Message: UpdateupdateEdit an existing message
Reaction: AddaddAdd an emoji reaction to a message
Reaction: GetgetRead the reactions on a message
Reaction: RemoveremoveRemove an emoji reaction from a message
Star: AddaddStar a message or a file
Star: DeletedeleteRemove a star
Star: Get ManygetAllList starred items
User: GetinfoGet one user’s details
User: Get ManygetAllList the workspace’s users
User: Get User’s ProfilegetProfileRead a user’s profile fields
User: Get User’s StatusgetPresenceRead a user’s presence
User: Update User’s ProfileupdateProfileUpdate a user’s profile fields
User Group: Add UsersupdateUsersAdd users to a user group
User Group: CreatecreateCreate a user group
User Group: DisabledisableDisable a user group
User Group: EnableenableRe-enable a disabled user group
User Group: Get ManygetAllList user groups
User Group: Get UsersgetUsersList a user group’s members
User Group: UpdateupdateUpdate 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

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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

ParameterTypeRequiredDefaultDescription
Channel Name (channelId)stringYesName of the channel to create. Leading # is stripped automatically.
Channel VisibilityoptionsNopublicWhether the new channel is open to the workspace or invite-only.
Options: public, private

Channel: Get

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of channels to return (1–1000). (shown when Return All is false)
FilterscollectionNo{}Narrow the channel listing.
— TypesmultiOptionsNo[]Which conversation types to include.
Options: public_channel, private_channel, im (one-to-one direct messages), mpim (group direct messages)
— Exclude ArchivedbooleanNofalseLeave archived channels out of the results.

Channel: History

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of messages to return (1–1000). (shown when Return All is false)
FilterscollectionNo{}Restrict the history to a time window.
— InclusivebooleanNofalseInclude messages that sit exactly on the Latest or Oldest boundary.
— LateststringNoISO datetime or Unix timestamp (latest boundary).
— OldeststringNoISO datetime or Unix timestamp (oldest boundary).

Channel: Invite

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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)stringYesComma-separated user IDs to invite to the channel.

Channel: Join

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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)stringYesThe user ID to kick from the channel.

Channel: Leave

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of members to return (1–1000). (shown when Return All is false)
Resolve DatabooleanNofalseWhether to resolve member IDs to full user objects.

Channel: Open

ParameterTypeRequiredDefaultDescription
Options (options)collectionNo{}How to open the conversation.
— Channel IDstringNoResume a conversation by channel ID.
— Return IMbooleanNofalseReturn the full direct-message object rather than just its ID.
— UsersstringNoComma-separated user IDs to open a DM with.

Channel: Rename

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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)stringYesNew name for the channel.

Channel: Replies

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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)stringYesTimestamp of the parent message to get replies for.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of replies to return (1–1000). (shown when Return All is false)
FilterscollectionNo{}Restrict the replies to a time window.
— InclusivebooleanNofalseInclude replies that sit exactly on the Latest or Oldest boundary.
— LateststringNoLatest boundary of the reply window.
— OldeststringNoOldest boundary of the reply window.

Channel: Set Purpose

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions.
PurposestringYesThe channel purpose to set. Supports expressions.

Channel: Set Topic

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the Slack channel (e.g., C0123ABCDEF). You can also paste a Slack URL — the channel ID will be extracted. Supports expressions.
TopicstringYesThe channel topic to set. Supports expressions.

Channel: Unarchive

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe 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

ParameterTypeRequiredDefaultDescription
File IDstringYesThe ID of the file to look up. Supports expressions.

File: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of files to return (1–100). (shown when Return All is false)
FilterscollectionNo{}Narrow the file listing.
— Channel IDstringNoOnly list files shared in this channel.
— Show Files Hidden By LimitbooleanNofalseInclude files hidden by the workspace’s file limit.
— Timestamp FromstringNoOnly list files created at or after this time.
— Timestamp TostringNoOnly list files created at or before this time.
— TypesmultiOptionsNo["all"]Which file types to include.
Options: all, gdocs (Google Docs), images, pdfs, snippets, spaces, zips
— User IDstringNoOnly list files uploaded by this user.

File: Upload

ParameterTypeRequiredDefaultDescription
Binary PropertystringYesdataName 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)collectionNo{}Where and how the file is shared.
— Channel IDstringNoChannel to share the file in.
— File NamestringNoName to store the file under. Falls back to the binary property’s own file name.
— Initial CommentstringNoMessage text introducing the file.
— Thread TimestampstringNoReply to a thread by providing the parent message timestamp.
— TitlestringNoTitle shown above the file in Slack.

Message: Delete

ParameterTypeRequiredDefaultDescription
Send Message To (select)optionsYeschannelWhether the message lives in a channel or a direct message.
Options: channel, user
Channel IDstringYesThe channel or conversation ID the message is in. (shown when Send Message To is channel)
User ID (user)stringYesThe 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)stringYesTimestamp (ts) of the message to update or delete.
ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe channel the message is in. Supports expressions.
Message Timestamp (timestamp)stringYesTimestamp (ts) of the message to link to.
ParameterTypeRequiredDefaultDescription
QuerystringYesSearch query. Supports Slack search modifiers like in:#channel.
SortoptionsNodescThe order results come back in.
Options: relevance, desc (newest first), asc (oldest first)
Return AllbooleanNofalseWhether to return all matches or only up to a given limit.
LimitnumberNo50Maximum number of matches to return (1–100). (shown when Return All is false)
Options (options)collectionNo{}Extra search scoping.
— Search in Channel NamesstringNoComma-separated channel names to restrict the search to (appended as in:channel modifiers).

Message: Send

ParameterTypeRequiredDefaultDescription
Send Message To (select)optionsYeschannelWhether to post into a channel or send a direct message.
Options: channel, user
Channel IDstringYesThe channel or conversation ID to send the message to. (shown when Send Message To is channel)
User ID (user)stringYesThe user ID to send a DM to. Use format @username or a user ID like U0123ABC. (shown when Send Message To is user)
Message TypeoptionsNotextWhich body format the message uses.
Options: text, block (Block Kit), attachment (legacy attachments)
TextstringNoThe text content of the message. For Block Kit messages, this is the fallback text.
Blocks (JSON)jsonNo[]Block Kit blocks as JSON array. See https://api.slack.com/block-kit (shown when Message Type is block)
Attachments (JSON)jsonNo[]Legacy attachments as JSON array. (shown when Message Type is attachment)
Other OptionscollectionNo{}Threading, formatting and identity options.
— Send as UserstringNoUsername to post as (requires accessToken auth, not OAuth2).
— Thread TimestampstringNoTimestamp of parent message to reply to.
— Reply BroadcastbooleanNofalseWhether to also post the reply to the channel.
— Unfurl LinksbooleanNofalseExpand link previews in the message.
— Unfurl MediabooleanNotrueExpand media previews in the message.
— MarkdownbooleanNotrueRender Slack markdown in the message text.
— Link NamesbooleanNofalseTurn @mentions and #channels into real links.
— Icon URLstringNoImage URL to use as the sender’s avatar.
— Icon EmojistringNoEmoji code to use as the sender’s avatar.
— EphemeralbooleanNofalseWhether to send an ephemeral message (only visible to the specified user). When sending to a channel, you must also set Ephemeral User.
— Ephemeral UserstringNoUser ID to show the ephemeral message to (required when sending ephemeral to a channel).

Message: Update

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe channel the message is in. Supports expressions.
Message TypeoptionsNotextWhich body format the replacement message uses.
Options: text, block (Block Kit), attachment (legacy attachments)
TextstringNoThe text content of the message. For Block Kit messages, this is the fallback text.
Blocks (JSON)jsonNo[]Block Kit blocks as JSON array. See https://api.slack.com/block-kit (shown when Message Type is block)
Attachments (JSON)jsonNo[]Legacy attachments as JSON array. (shown when Message Type is attachment)
Message Timestamp (timestamp)stringYesTimestamp (ts) of the message to update or delete.
Update FieldscollectionNo{}Extra formatting applied to the edit.
— Link NamesbooleanNofalseTurn @mentions and #channels into real links.
— ParseoptionsNononeHow Slack parses the message text.
Options: client, full, none

Reaction: Add

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe channel the message is in. Supports expressions.
Message Timestamp (timestamp)stringYesTimestamp (ts) of the message to react to, e.g. 1663233118.856619.
Emoji Code (name)stringYesEmoji code (e.g., “+1”, “thumbsup”). Do not use actual emoji characters.

Reaction: Get

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe channel the message is in. Supports expressions.
Message Timestamp (timestamp)stringYesTimestamp (ts) of the message to read reactions from, e.g. 1663233118.856619.

Reaction: Remove

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe channel the message is in. Supports expressions.
Message Timestamp (timestamp)stringYesTimestamp (ts) of the message to remove the reaction from, e.g. 1663233118.856619.
Emoji Code (name)stringYesEmoji code (e.g., “+1”, “thumbsup”). Do not use actual emoji characters.

Star: Add

ParameterTypeRequiredDefaultDescription
Item to Star (target)optionsYesmessageWhether the star goes on a message or on a file.
Options: message, file
Channel IDstringYesThe channel holding the item to star. Supports expressions.
File IDstringNoThe file to star. (shown when Item to Star is file)
Message Timestamp (timestamp)stringNoTimestamp (ts) of the message to star, e.g. 1663233118.856619. (shown when Item to Star is message)
Options (options)collectionNo{}Additional star targets.
— File CommentstringNoStar a comment on a file instead of the file itself.

Star: Delete

ParameterTypeRequiredDefaultDescription
Options (options)collectionNo{}Which star to remove — supply the same target you starred.
— Channel IDstringNoThe channel holding the starred item.
— File IDstringNoThe starred file.
— File CommentstringNoThe starred file comment.
— Message TimestampstringNoTimestamp (ts) of the starred message.

Star: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all starred items or only up to a given limit.
LimitnumberNo50Maximum number of starred items to return (1–100). (shown when Return All is false)

User: Get

ParameterTypeRequiredDefaultDescription
User ID (user)stringYesThe user ID (e.g., U0123ABCDEF).

User: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all users or only up to a given limit.
LimitnumberNo50Maximum number of users to return (1–200). (shown when Return All is false)

User: Get User’s Profile

ParameterTypeRequiredDefaultDescription
User ID (user)stringYesThe user ID (e.g., U0123ABCDEF).

User: Get User’s Status

ParameterTypeRequiredDefaultDescription
User ID (user)stringYesThe user ID (e.g., U0123ABCDEF).

User: Update User’s Profile

ParameterTypeRequiredDefaultDescription
Options (options)collectionNo{}The profile fields to write. Fields you leave out are not changed.
— EmailstringNoThe profile email address.
— First NamestringNoThe profile first name.
— Last NamestringNoThe profile last name.
— Status TextstringNoThe custom status message.
— Status EmojistringNoEmoji code for status (e.g., :house_with_garden:).
— Status ExpirationstringNoISO datetime for status expiration. Leave empty for no expiration.
— Custom Fields (JSON)jsonNo{}Custom profile fields as JSON object: { “fieldId”: { “value”: ”…”, “alt”: ”…” } }
— User ID (Admin Only)stringNoSet another user profile (admin only).

User Group: Add Users

ParameterTypeRequiredDefaultDescription
User Group IDstringYesThe ID of the user group to change. Supports expressions.
User IDs (users)stringYesComma-separated user IDs to add to the group. Existing members are preserved.
Options (options)collectionNo{}Extra response options.
— Include CountbooleanNofalseInclude the group’s user count in the result.

User Group: Create

ParameterTypeRequiredDefaultDescription
Group Name (name)stringYesName of the new user group. Supports expressions.
Options (Options)collectionNo{}Optional details for the new group. Note the capital O — the internal key is Options, not options.
— Channel IDsstringNoComma-separated channel IDs.
— DescriptionstringNoWhat the group is for.
— HandlestringNoThe @handle used to mention the group.
— Include CountbooleanNofalseInclude the group’s user count in the result.

User Group: Disable

ParameterTypeRequiredDefaultDescription
User Group IDstringYesThe ID of the user group to disable. Supports expressions.
Options (options)collectionNo{}Extra response options.
— Include CountbooleanNofalseInclude the group’s user count in the result.

User Group: Enable

ParameterTypeRequiredDefaultDescription
User Group IDstringYesThe ID of the user group to enable. Supports expressions.
Options (option)collectionNo{}Extra response options. Note the singular — the internal key is option, not options.
— Include CountbooleanNofalseInclude the group’s user count in the result.

User Group: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all user groups or only up to a given limit.
LimitnumberNo50Maximum number of user groups to return (1–200). (shown when Return All is false)
Options (options)collectionNo{}What each returned group includes.
— Include CountbooleanNofalseInclude each group’s user count.
— Include DisabledbooleanNofalseInclude disabled groups in the listing.
— Include UsersbooleanNofalseInclude each group’s member list.

User Group: Get Users

ParameterTypeRequiredDefaultDescription
User Group IDstringYesThe ID of the user group to read. Supports expressions.
Options (options)collectionNo{}How much detail to return per member.
— Resolve DatabooleanNotrueWhether to fetch full user objects instead of just user IDs.

User Group: Update

ParameterTypeRequiredDefaultDescription
User Group IDstringYesThe ID of the user group to update. Supports expressions.
Update FieldscollectionNo{}The group fields to write. Fields you leave out are not changed.
— ChannelsstringNoComma-separated channel IDs.
— DescriptionstringNoWhat the group is for.
— HandlestringNoThe @handle used to mention the group.
— Include CountbooleanNofalseInclude the group’s user count in the result.
— NamestringNoNew name for the group.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo5Maximum 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:

OperationOne item per
Channel: Get Manychannel
Channel: Historymessage
Channel: Membermember — { "member": "U0123ABC" } per member, or a full user object when Resolve Data is on
Channel: Repliesreply message
File: Get Manyfile
File: Uploaduploaded file object
Message: Searchmatching message
Star: Get Manystarred item
User: Get Manyuser
User Group: Get Manyuser group
User Group: Get Usersmember — 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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.

Frequently asked questions

What concurrency should I use?

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 rather than a starting point to raise.

Why are there three parameters called Options?

They share a display name but not a key. User Group: Create uses `Options` with a capital O, User Group: Enable uses `option` singular, and everywhere else it is `options`. Copy the key shown in the Parameter column.

How do files work?

File upload reads binary data from the incoming item; file download produces file metadata rather than the bytes themselves.

How do I react to Slack activity?

Use the Slack Trigger, which fires on messages, reactions, mentions and other events.

Build with the Slack node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Slack API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.