Slack
Post, schedule, update and search messages, manage channels, upload files, react, and look up users and user groups in Slack.
Connect Slack
- In the sidebar, open Connections and press Add connection.
- Type
slackand choose Slack. - Choose Sign in with Slack.
- Press Sign in with Slack at the bottom of the sheet, then choose your account in Slack’s window and allow access.
Or choose Paste your bot or user token, paste it, and press Test and save. It stays until someone deletes it.
Sign in with Slack, or paste a token from your own Slack app (api.slack.com/apps → your app → OAuth & Permissions): the Bot User OAuth Token (xoxb-…) for most operations, or a User OAuth Token (xoxp-…) for searching messages, stars and setting a profile. Add the app to each private channel it should use. The app’s Signing Secret (Basic Information → App Credentials) is optional: steps do not use it.
What if it says “Sign-in isn’t set up here yet”?
Signing in with Slack needs a Slack app on this installation, and it has none yet. Until it is set up, Paste your bot or user token works without it.
On Cloud: The sheet says “It’s set up once for everyone who uses this service, not by an organization.”
Self-hosted: An admin of the installation sees Set up Slack sign-in instead, and sets it up once for everyone. Everyone else sees who to ask.
- Create an app in Slack’s developer settings (Slack’s guide).
- In GoRunner, copy the Redirect address to add in Slack’s developer settings, and add it to the app.
- Paste the Client ID and Client secret, then press Save and sign in.
Can I use my own Slack app?
Yes. In the sheet, open Use your own Slack app and paste its Client ID and Client secret. Add the redirect address it shows to your app first. The connection then signs in through your app instead of the installation’s.
Connections says how to sign in again, rename or delete it. In a product that embeds GoRunner, Add connection can be missing: then your provider makes connections for you.
Start a workflow
Add a trigger and choose Slack. The trigger uses the same connection as the steps.
On Slack Event
Starts a run for each Slack event in the connection's workspace that you pick below (within seconds; nothing is polled). Signed in with Slack: nothing to set up, but the app only sees channels it was added to (invite it with /invite). With your own Slack app (a pasted token or your app's client ID): put the app's Signing Secret in the connection, publish, then paste the Request URL shown on this trigger into the app's Event Subscriptions once and subscribe it to the bot events you need (message.channels, message.im, app_mention, reaction_added …). Every delivery is checked against the Signing Secret and an unsigned or stale one is refused. A retried event starts no second run; messages from bots are ignored unless you turn that off.
- Trigger On · Required
Which events start a run. Your own Slack app must be subscribed to them as well; App mentioned needs the app_mentions:read permission.
Options: Any event to Member's profile changed (18 options).
- Only in Channel · Optional
Start runs only for events in this channel. Empty: the whole workspace.
- Ignore Bot Messages · Optional
Skip messages sent by bots, this app's own included, so a reply cannot start the workflow again.
On by default.
- Ignore People · Optional
User IDs (U…), separated by commas, whose events start nothing.
A later step can use its data, such as {{trigger.channel}}, {{trigger.event_id}}, {{trigger.event_time}} and 5 more. See Use data from earlier steps.
Do things in Slack
Add a Slack step, choose a Resource, then an Operation. Choose a row to see its fields.
- MessageSend · Send and Wait for Approval · Update · Delete · Get Permalink · Search · Schedule · Get Many Scheduled · Delete Scheduled
- ChannelArchive · Close · Create · Get · Get Many · History · Invite · Join · Kick · Leave · Get Members · Open · Rename · Replies · Set Purpose · Set Topic · Unarchive
- FileUpload · Get · Get Many
- ReactionAdd · Get · Remove
- StarAdd · Delete · Get Many
- UserGet · Get Many · Get Profile · Get Presence · Find by Email · Update Profile
- User GroupCreate · Disable · Enable · Get Many · Get Users · Update · Update Users
Later steps read a step’s output by its name: see Use data from earlier steps.
Limits
- A reply from Slack can be up to 16 MB (a file download can have its own limit). A larger one fails the step; it is never cut short.
- When Slack says to slow down (429), the step waits as long as it asks, if the step’s time allows. Otherwise it fails and says when to try again.
Not in your list? See When an app isn’t here.
For developers
In the API, which calls apps pieces, Slack is pieceId: "slack" with actionId: "slack", set by resource and an operation_… field, such as operation_channel. Its trigger is slacktrigger / slack_event. Get an app returns every field.
It can change something outside the run (writes_external). See How versions and side effects work.
Slack › Message
Send
- Send To · Optional
A channel, or a person (the app's direct message with them).
Options: Channel, User.
Default: Channel.
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Send To isn’t User.
- User · Required
The person. Pick one, or paste their user ID (U…).
Shows when Send To is User.
- Message Type · Optional
Plain Slack text (mrkdwn), Markdown, Block Kit blocks, or legacy attachments.
Options: Text, Markdown, Blocks, Attachments (legacy).
Default: Text.
- Text · Optional
The message (Slack's mrkdwn, or Markdown when Message Type is Markdown). With blocks or attachments it is the notification text.
- Attachments · Required
Legacy attachments, such as [{"color": "#36a64f", "title": "Order #1042", "text": "Shipped"}].
Shows when Message Type is Attachments (legacy).
- Blocks · Required
Block Kit blocks: a list, or what Block Kit Builder copies ({"blocks": [...]}), up to 50. For example, [{"type": "section", "text": {"type": "mrkdwn", "text": "*Order #1042* shipped"}}].
Shows when Message Type is Blocks.
- Reply in Thread · Optional
The ts (or link) of the thread's first message, to reply in its thread.
- Also Send to Channel · Optional
Show the thread reply in the channel too.
Off by default.
- Unfurl Links · Optional
Show previews of links in the text (Slack's default: on for bots' text-only messages).
- Unfurl Media · Optional
Show previews of images and videos.
- Link User Groups · Optional
Turn @group names in the text into mentions.
Off by default.
- Send As (Name) · Optional
Post under this name instead of the app's.
- Icon Emoji · Optional
Post with this emoji as the picture.
- Icon URL · Optional
Post with this image as the picture.
- Only Visible To One Person · Optional
Post in the channel so that only the person below sees it (it is not kept in history).
Off by default.
Shows when Send To isn’t User.
- Visible To · Required
The person. Pick one, or paste their user ID (U…).
Shows when Only Visible To One Person is on.
Send and Wait for Approval
- Send To · Optional
A channel, or a person (the app's direct message with them).
Options: Channel, User.
Default: Channel.
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Send To isn’t User.
- User · Required
The person. Pick one, or paste their user ID (U…).
Shows when Send To is User.
- Message · Required
What the person is asked to decide (Slack mrkdwn). Its first line is the title the run page shows.
- Buttons · Optional
Approve and Reject, or a single Approve button when the only useful answer is yes.
Options: Approve and Reject, Approve only.
Default: Approve and Reject.
- Approve Button Label · Optional
Default: Approve.
- Reject Button Label · Optional
Default: Reject.
Shows when Buttons isn’t Approve only.
- Auto-continue after (timeout) · Optional
Resume automatically after this long if nobody answers (0 = wait indefinitely). Then status is "timed_out": branch on status == "approved".
Default: 0.
- Timeout Unit · Optional
Options: Seconds, Minutes, Hours, Days.
Default: Hours.
- Public Base URL · Optional
This installation's public address, for the buttons' links. Defaults to PUBLIC_API_URL. It must open for the person deciding: a link on localhost is one nobody can answer.
- Reply in Thread · Optional
The ts (or link) of the thread's first message, to reply in its thread.
Update
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Send To isn’t User.
- Message · Required
The message's ts (such as 1730450000.123456, from the step that posted it) or its link (⋯ → Copy link).
- Message Type · Optional
Plain Slack text (mrkdwn), Markdown, Block Kit blocks, or legacy attachments.
Options: Text, Markdown, Blocks, Attachments (legacy).
Default: Text.
- Text · Optional
The message (Slack's mrkdwn, or Markdown when Message Type is Markdown). With blocks or attachments it is the notification text.
- Attachments · Required
Legacy attachments, such as [{"color": "#36a64f", "title": "Order #1042", "text": "Shipped"}].
Shows when Message Type is Attachments (legacy).
- Blocks · Required
Block Kit blocks: a list, or what Block Kit Builder copies ({"blocks": [...]}), up to 50. For example, [{"type": "section", "text": {"type": "mrkdwn", "text": "*Order #1042* shipped"}}].
Shows when Message Type is Blocks.
- Also Send to Channel · Optional
Show the thread reply in the channel too.
Off by default.
- Link User Groups · Optional
Turn @group names in the text into mentions.
Off by default.
Delete and Get Permalink
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Send To isn’t User.
- Message · Required
The message's ts (such as 1730450000.123456, from the step that posted it) or its link (⋯ → Copy link).
Search
- Search Query · Required
What to find, with Slack's modifiers: in:#channel from:@person before:2026-11-01 has:link ….
- Sort By · Optional
Options: Best match, Time.
Default: Best match.
- Order · Optional
Options: Newest or best first, Oldest or worst first.
Default: Newest or best first.
- Return All · Optional
Read every message, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many messages to return (1–1000).
Default: 50.
Shows when Return All is off.
Schedule
- Send To · Optional
A channel, or a person (the app's direct message with them).
Options: Channel, User.
Default: Channel.
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Send To isn’t User.
- User · Required
The person. Pick one, or paste their user ID (U…).
Shows when Send To is User.
- Message Type · Optional
Plain Slack text (mrkdwn), Markdown, Block Kit blocks, or legacy attachments.
Options: Text, Markdown, Blocks, Attachments (legacy).
Default: Text.
- Text · Optional
The message (Slack's mrkdwn, or Markdown when Message Type is Markdown). With blocks or attachments it is the notification text.
- Attachments · Required
Legacy attachments, such as [{"color": "#36a64f", "title": "Order #1042", "text": "Shipped"}].
Shows when Message Type is Attachments (legacy).
- Blocks · Required
Block Kit blocks: a list, or what Block Kit Builder copies ({"blocks": [...]}), up to 50. For example, [{"type": "section", "text": {"type": "mrkdwn", "text": "*Order #1042* shipped"}}].
Shows when Message Type is Blocks.
- Post At · Required
When to post: an ISO 8601 date and time (2026-11-08T09:00:00Z) or Unix seconds, at most 120 days ahead.
- Reply in Thread · Optional
The ts (or link) of the thread's first message, to reply in its thread.
- Also Send to Channel · Optional
Show the thread reply in the channel too.
Off by default.
- Unfurl Links · Optional
Show previews of links in the text (Slack's default: on for bots' text-only messages).
- Unfurl Media · Optional
Show previews of images and videos.
- Link User Groups · Optional
Turn @group names in the text into mentions.
Off by default.
Get Many Scheduled
- Channel · Optional
The channel. Pick one, or paste its ID (C…) or link.
- Return All · Optional
Read every message, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many messages to return (1–1000).
Default: 50.
Shows when Return All is off.
Delete Scheduled
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Send To isn’t User.
- Scheduled Message ID · Required
The scheduled_message_id the Schedule step returned.
Slack › Channel
Archive, Close, Get, Join, Leave and Unarchive
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Create
- Name · Required
Up to 80 lowercase letters, digits, hyphens and underscores.
- Visibility · Optional
Options: Public, Private.
Default: Public.
Get Many
- Types · Optional
Which kinds of conversations to list.
Options: Public channels, Private channels, Group messages, Direct messages.
- Leave Out Archived · Optional
On by default.
- Return All · Optional
Read every item, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many items to return (1–1000).
Default: 100.
Shows when Return All is off.
History
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- After · Optional
Only messages after this ts (Unix seconds, such as 1730450000).
- Before · Optional
Only messages before this ts.
- Include the Bounds · Optional
Also return the messages at exactly After and Before.
Off by default.
- Return All · Optional
Read every item, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many items to return (1–1000).
Default: 100.
Shows when Return All is off.
Invite
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Users · Required
User IDs (U…), separated by commas: up to 1,000 to invite; 1 to 8 for a direct or group message.
Kick
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- User · Required
The person. Pick one, or paste their user ID (U…).
Get Members
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Return All · Optional
Read every item, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many items to return (1–1000).
Default: 100.
Shows when Return All is off.
Open
- Users · Required
User IDs (U…), separated by commas: up to 1,000 to invite; 1 to 8 for a direct or group message.
Rename
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Name · Required
Up to 80 lowercase letters, digits, hyphens and underscores.
Replies
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Thread · Required
The message's ts (such as 1730450000.123456, from the step that posted it) or its link (⋯ → Copy link).
- After · Optional
Only messages after this ts (Unix seconds, such as 1730450000).
- Before · Optional
Only messages before this ts.
- Include the Bounds · Optional
Also return the messages at exactly After and Before.
Off by default.
- Return All · Optional
Read every item, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many items to return (1–1000).
Default: 100.
Shows when Return All is off.
Set Purpose
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Purpose · Required
Up to 250 characters.
Set Topic
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Topic · Required
Up to 250 characters.
Slack › File
Upload
- File · Required
Upload a file, or switch to an expression to use one from an earlier step (such as {{steps.download.result}}). Up to 100 MB.
- Channel · Optional
Upload: the channel to share the file in (empty keeps it private to the app). Get Many: only files in this channel.
- File Name · Optional
Defaults to the file's own name.
- Title · Optional
- Message · Optional
Text posted with the file.
- Reply in Thread · Optional
The ts (or link) of a thread's first message, to share the file there.
Get
- File ID · Required
The file's ID (F…).
Get Many
- Channel · Optional
Upload: the channel to share the file in (empty keeps it private to the app). Get Many: only files in this channel.
- Uploaded By · Optional
The person. Pick one, or paste their user ID (U…).
- Types · Optional
Options: All, Posts, Snippets, Images, Google Docs, Zip files, PDFs.
Default: All.
- Return All · Optional
Read every file, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many files to return (1–1000).
Default: 50.
Shows when Return All is off.
Slack › Reaction
Add and Remove
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Message · Required
The message's ts (such as 1730450000.123456, from the step that posted it) or its link (⋯ → Copy link).
- Emoji · Required
The emoji's name, without colons (thumbsup, white_check_mark, or a custom emoji's name).
Get
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
- Message · Required
The message's ts (such as 1730450000.123456, from the step that posted it) or its link (⋯ → Copy link).
Slack › Star
Add and Delete
- Item · Optional
Options: Message, File, Channel.
Default: Message.
- Channel · Required
The channel. Pick one, or paste its ID (C…) or link.
Shows when Item isn’t File.
- File ID · Required
Shows when Item is File.
- Message · Required
The message's ts (such as 1730450000.123456, from the step that posted it) or its link (⋯ → Copy link).
Shows when Item is Message.
Get Many
- Return All · Optional
Read every star, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many stars to return (1–1000).
Default: 50.
Shows when Return All is off.
Slack › User
Get, Get Profile and Get Presence
- User · Required
The person. Pick one, or paste their user ID (U…).
Get Many
- Return All · Optional
Read every user, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many users to return (1–1000).
Default: 100.
Shows when Return All is off.
Find by Email
- Email · Required
The person's email address in Slack.
Update Profile
- User · Optional
Empty: the person whose token the connection holds. Another person: only a workspace admin's token on a paid plan may.
- First Name · Optional
- Last Name · Optional
- Display Name · Optional
- Status Text · Optional
Up to 100 characters. Empty with an emoji below keeps only the emoji.
- Status Emoji · Optional
such as :palm_tree:.
- Status Until · Optional
When the status clears: ISO 8601 or Unix seconds. Empty: it stays.
- Custom Fields · Optional
The workspace's profile fields by id, such as {"Xf06054BBB": {"value": "Berlin", "alt": ""}}.
Slack › User Group
Create
- Name · Optional
Required to create.
- Handle · Optional
The @handle people mention, without the @.
- Description · Optional
- Default Channels · Optional
Channel IDs, separated by commas, that new members join.
Disable and Enable
- User Group · Required
Pick a user group, or paste its ID (S…).
Get Many
- Include Members · Optional
Off by default.
- Include Disabled · Optional
Off by default.
- Return All · Optional
Read every user group, page by page (at most 1000; past that the step fails rather than stop early).
Off by default.
- Limit · Optional
How many user groups to return (1–1000).
Default: 100.
Shows when Return All is off.
Get Users
- User Group · Required
Pick a user group, or paste its ID (S…).
- Include Disabled · Optional
Off by default.
Update
- User Group · Required
Pick a user group, or paste its ID (S…).
- Name · Optional
Required to create.
- Handle · Optional
The @handle people mention, without the @.
- Description · Optional
- Default Channels · Optional
Channel IDs, separated by commas, that new members join.
Update Users
- User Group · Required
Pick a user group, or paste its ID (S…).
- Users · Required
User IDs (U…), separated by commas.
- Update · Optional
Set the members to exactly these people, or add them to the members it has.
Options: Set the members to these, Add these to the members.
Default: Set the members to these.