Slack Node
The Slack node provides integration with your Slack workspace in SkyStudio workflows. You can read channel messages, send messages, search messages, and run AI-powered queries.
Connection Setup and Management
To use the Slack node, you must create a Slack App on api.slack.com, add the required bot permission scopes, and enter the generated Bot User OAuth Token into SkyStudio.
Getting a Slack Bot Token
1. Create a New App
- Go to api.slack.com/apps.
- Click the Create New App button in the upper-right corner.
- Select From scratch in the window that opens.
- Enter a name for your app in the App Name field, such as
SkyStudio. - Select the workspace you want to integrate from the Pick a workspace dropdown.
- Click the Create App button.
2. Add Bot Permission Scopes
- In the left menu of the app page, go to OAuth & Permissions under Features.
- Scroll down to Scopes → Bot Token Scopes.
- Click the Add an OAuth Scope button and add the following scopes one by one:
| Scope | Description |
|---|---|
channels:history | Reads messages in public channels |
channels:read | Views the list and information of public channels |
chat:write | Sends messages as the bot |
groups:history | Reads messages in private channels |
groups:read | Views the list and information of private channels |
users:read | Lists users in the workspace |
users:read.email | Views users’ email addresses |
3. Install the App to the Workspace
- After adding the scopes, go to the OAuth Tokens section of the page.
- Click the Install to [Workspace Name] button.
- Review the areas the app will access on the permission approval page and click the Allow button.
4. Copy the Bot Token
After installation is completed, you are redirected to the OAuth & Permissions page. Copy the token that starts with xoxb- from the Bot User OAuth Token field using the Copy button.
Note: Even if you lose this token, you can always return to the OAuth & Permissions page to view and copy it again.
Adding the Connection to SkyStudio
- Go to Application Connections from the left menu in SkyStudio.
- Click the Add New Connection button.
- Select Slack as the provider.
- Enter a descriptive name in the Connection Name field, such as
Prod Slack. - Paste the
xoxb-…token you copied into the Bot Token field. - Click the Save button.
Assigning the Connection to the Node
After adding the Slack node to the canvas, select the saved connection from the Application Connections dropdown in the right panel.
Tip: You can define separate connections for multiple Slack workspaces and choose which one to use in each workflow.
Operations
The Slack node provides 7 operations:
| Operation | Category | Description |
|---|---|---|
| Get Channel Messages | Featured | Lists historical messages from a specific channel |
| Send Message | Featured | Sends a message to a channel or user |
| Search Messages | Featured | Searches messages across the workspace by keyword |
| Slack AI Assistant | Featured | Queries Slack data using natural language |
| List Channels | Standard | Lists all channels in the workspace |
| Get Channel Members | Standard | Returns members of a specific channel |
| List Users | Standard | Lists all users in the workspace |
Get Channel Messages
Returns the message history of the specified channel. It is used in workflows for monitoring channel activity, reporting, or data analysis.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Channel ID | Yes | ID of the channel whose messages will be retrieved, such as C01234ABCDE |
| Limit | No | Maximum number of messages to return |
How to Find the Channel ID
Right-click the relevant channel in Slack and open View Channel Details; the Channel ID is shown at the bottom of the page.
Alternatively, you can use the id field from the output of the List Channels operation.
Example Output
{
"messages": [
{
"ts": "1717200000.000100",
"user": "U01234ABCDE",
"text": "Today’s sprint meeting is at 14:00.",
"type": "message"
}
]
}
Send Message
Sends a Slack message to the specified channel or user. It is used in notification, alert, and report-sharing workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Channel ID or Name | Yes | Channel ID or name where the message will be sent, such as C01234ABCDE or #general |
| Message | Yes | Message text to send |
Usage Note
When entering a channel name, you can include the # symbol or only write the name, such as general.
To send a direct message to a user, use the user’s @ name or User ID.
Example Output
{
"ok": true,
"channel": "C01234ABCDE",
"ts": "1717200100.000200",
"message": {
"text": "The daily report is ready.",
"type": "message"
}
}
Search Messages
Searches messages across all channels in the Slack workspace by keyword. It is used in content research and historical message query scenarios.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Search Query | Yes | Keyword or phrase to search for |
| Count | No | Maximum number of results to return |
Usage Note
Search is limited to channels accessible by the bot token. This operation does not work without the search:read scope.
Example Output
{
"messages": {
"matches": [
{
"channel": {
"id": "C01234ABCDE",
"name": "general"
},
"ts": "1717100000.000100",
"text": "The sprint review meeting has been canceled.",
"username": "ahmet.yilmaz"
}
],
"total": 1
}
}
Slack AI Assistant
Queries Slack workspace data using natural language. It is ideal for accessing channel and message analysis without writing complex search queries.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Query | Yes | Slack query written in natural language |
| System Prompt | No | System instruction that customizes the AI assistant’s behavior |
Usage Example
Query: "What topic was discussed the most in the #support channel this week?"
System Prompt: "Consider only messages from the last 7 days. Summarize the results in Turkish and as bullet points."
List Channels
Returns the list of all channels in the Slack workspace. It is used to discover Channel IDs and select channels dynamically.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Limit | No | Maximum number of channels to return |
| Exclude Archived | No | If enabled, archived channels are excluded from results |
Example Output
{
"channels": [
{
"id": "C01234ABCDE",
"name": "general",
"is_private": false,
"num_members": 45
},
{
"id": "C09876ZYXWV",
"name": "support",
"is_private": false,
"num_members": 12
}
]
}
Get Channel Members
Returns the member list of a specific channel as User IDs. It is used in channel-based notification and member management workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Channel ID | Yes | ID of the channel whose members will be retrieved |
Example Output
{
"members": [
"U01234ABCDE",
"U09876ZYXWV",
"U05555MNOPQ"
],
"response_metadata": {
"next_cursor": ""
}
}
List Users
Returns the list of all users in the Slack workspace. It is used for synchronizing user information and discovering User IDs.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Slack connection to use |
| Limit | No | Maximum number of users to return |
Example Output
{
"members": [
{
"id": "U01234ABCDE",
"name": "ahmet.yilmaz",
"real_name": "Ahmet Yılmaz",
"profile": {
"email": "ahmet@company.com",
"display_name": "Ahmet"
},
"is_bot": false
}
]
}
Quick Start Examples
Example 1: Daily Summary Report
A workflow that summarizes messages from a specific channel every day and sends the summary to another channel:
Schedule (Every day at 09:00) → Get Channel Messages → LLM (summarize) → Send Message
Get Channel Messages settings:
- Channel ID:
C01234ABCDEchannel to monitor - Limit:
100
Send Message settings:
- Channel ID or Name:
#management-summary - Message:
{{llm.output}}
Example 2: Support Request Notification
A workflow that alerts the relevant team on Slack when a new support request arrives:
Webhook (new ticket trigger) → LLM (format message) → Send Message
Send Message settings:
- Channel ID or Name:
#support-team - Message:
{{llm.output}}
Example 3: Channel Analysis with Slack AI
A chatbot that answers questions asked by the user in natural language using Slack data:
Text Input → Slack AI Assistant → Text Output
Slack AI Assistant settings:
- Query:
{{input.text}} - System Prompt:
"You are an internal company assistant. Use only data from Slack channels. Keep your answers short and in Turkish."
Example 4: New Member Welcome Message
A workflow that automatically sends a welcome message when a new member joins a channel:
Webhook (channel membership trigger) → List Users → LLM (personalized message) → Send Message
Send Message settings:
- Channel ID or Name:
#general - Message:
{{llm.output}}
Common Errors
| Error | Possible Cause | Solution |
|---|---|---|
invalid_auth | Token is invalid or revoked | Create a new Bot Token from the Slack App page and update the SkyStudio connection |
missing_scope | Token does not have the required permission scope | Add the required scope from Slack App → OAuth & Permissions and reinstall the app |
channel_not_found | Incorrect Channel ID or the bot is not in the channel | Find the correct ID using List Channels and add the bot to the channel with /invite @botname |
not_in_channel | Bot is not a member of the target channel | Add the bot to the channel in Slack using /invite @botname |
ratelimited | Slack API rate limit exceeded | Avoid sending too many requests in a short time; reduce workflow frequency |
Empty members | Bot does not have permission in the channel or the channel is empty | Check that the bot token has the channels:read and users:read scopes |
Notes
- The bot token (
xoxb-) can only read channels where the bot is a member. To add the bot to relevant channels, use the/invite @botnamecommand in Slack. - When the Exclude Archived parameter is set to
true, archived channels are not listed. This improves performance in large workspaces. - Slack API is subject to a rate limit of 50 requests per minute, Tier 3. In workflows that retrieve many messages, use the Limit parameter to keep the number of requests under control.
- The Search Messages operation requires the
search:readscope. This permission is not included by default and must be added separately from Slack App settings. - The user list may also include bot users with
is_bot: true. You can process the results with an LLM or If-Else node to filter human users.