---
title: Slack
description: Send, update, delete messages, add reactions in Slack or trigger workflows from Slack events
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="slack"
  color="#611f69"
/>

{/* MANUAL-CONTENT-START:intro */}
[Slack](https://www.slack.com/) is a business communication platform that offers teams a unified place for messaging, tools, and files.

<iframe
  width="100%"
  height="400"
  src="https://www.youtube.com/embed/J5jz3UaWmE8"
  title="Slack Integration with Sim"
  frameBorder="0"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
  allowFullScreen
></iframe>

With Slack, you can:

- **Automate agent notifications**: Send real-time updates from your Sim agents to any Slack channel
- **Create webhook endpoints**: Configure Slack bots as webhooks to trigger Sim workflows from Slack activities
- **Enhance agent workflows**: Integrate Slack messaging into your agents to deliver results, alerts, and status updates
- **Create and share Slack canvases**: Programmatically generate collaborative documents (canvases) in Slack channels
- **Read messages from channels**: Retrieve and process recent messages from any Slack channel for monitoring or workflow triggers
- **Manage bot messages**: Update, delete, and add reactions to messages sent by your bot

In Sim, the Slack integration enables your agents to programmatically interact with Slack with full message management capabilities as part of their workflows:

- **Send messages**: Agents can send formatted messages to any Slack channel or user, supporting Slack's mrkdwn syntax for rich formatting
- **Update messages**: Edit previously sent bot messages to correct information or provide status updates
- **Delete messages**: Remove bot messages when they're no longer needed or contain errors
- **Add reactions**: Express sentiment or acknowledgment by adding emoji reactions to any message
- **Create canvases**: Create and share Slack canvases (collaborative documents) directly in channels, enabling richer content sharing and documentation
- **Read messages**: Read recent messages from channels, allowing for monitoring, reporting, or triggering further actions based on channel activity
- **Download files**: Retrieve files shared in Slack channels for processing or archival

This allows for powerful automation scenarios such as sending notifications with dynamic updates, managing conversational flows with editable status messages, acknowledging important messages with reactions, and maintaining clean channels by removing outdated bot messages. Your agents can deliver timely information, update messages as workflows progress, create collaborative documents, or alert team members when attention is needed. This integration bridges the gap between your AI workflows and your team's communication, ensuring everyone stays informed with accurate, up-to-date information. By connecting Sim with Slack, you can create agents that keep your team updated with relevant information at the right time, enhance collaboration by sharing and updating insights automatically, and reduce the need for manual status updates—all while leveraging your existing Slack workspace where your team already communicates.

## Getting Started

To connect Slack to your Sim workflows:

1. Sign up or log in at [sim.ai](https://sim.ai)
2. Create a new workflow or open an existing one
3. Drag a **Slack** block onto your canvas
4. Click the credential selector and choose **Connect**
5. Authorize Sim to access your Slack workspace
6. Select your target channel or user

Once connected, you can use any of the Slack operations listed below.

## AI-Generated Content

Sim workflows may use AI models to generate messages and responses sent to Slack. AI-generated content may be inaccurate or contain errors. Always review automated outputs, especially for critical communications.

## Need Help?

If you encounter issues with the Slack integration, contact us at [help@sim.ai](mailto:help@sim.ai)
{/* MANUAL-CONTENT-END */}


## Usage Instructions

Integrate Slack into the workflow. Can send, update, and delete messages, create canvases, read messages, and add reactions. Requires Bot Token instead of OAuth in advanced mode. Can be used in trigger mode to trigger a workflow when a message is sent to a channel.



## Tools

### `slack_message`

Send messages to Slack channels or direct messages. Supports Slack mrkdwn formatting.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `destinationType` | string | No | Destination type: channel or dm |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | No | Target Slack channel \(e.g., #general\) |
| `dmUserId` | string | No | Target Slack user for direct messages |
| `text` | string | Yes | Message text to send \(supports Slack mrkdwn formatting\) |
| `thread_ts` | string | No | Thread timestamp to reply to \(creates thread reply\) |
| `files` | file[] | No | Files to attach to the message |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | Complete message object with all properties returned by Slack |
| `ts` | string | Message timestamp |
| `channel` | string | Channel ID where message was sent |
| `fileCount` | number | Number of files uploaded \(when files are attached\) |

### `slack_canvas`

Create and share Slack canvases in channels. Canvases are collaborative documents within Slack.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Target Slack channel \(e.g., #general\) |
| `title` | string | Yes | Title of the canvas |
| `content` | string | Yes | Canvas content in markdown format |
| `document_content` | object | No | Structured canvas document content |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `canvas_id` | string | ID of the created canvas |
| `channel` | string | Channel where canvas was created |
| `title` | string | Title of the canvas |

### `slack_message_reader`

Read the latest messages from Slack channels. Retrieve conversation history with filtering options.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `destinationType` | string | No | Destination type: channel or dm |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | No | Slack channel to read messages from \(e.g., #general\) |
| `dmUserId` | string | No | Target Slack user for DM conversation |
| `limit` | number | No | Number of messages to retrieve \(default: 10, max: 15\) |
| `oldest` | string | No | Start of time range \(timestamp\) |
| `latest` | string | No | End of time range \(timestamp\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `messages` | array | Array of message objects from the channel |
|   ↳ `type` | string | Message type |
|   ↳ `ts` | string | Edit timestamp |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who edited |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team ID |
|   ↳ `thread_ts` | string | Thread parent message timestamp |
|   ↳ `parent_user_id` | string | User ID of thread parent |
|   ↳ `reply_count` | number | Number of thread replies |
|   ↳ `reply_users_count` | number | Number of users who replied |
|   ↳ `latest_reply` | string | Timestamp of latest reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Last read timestamp |
|   ↳ `unread_count` | number | Number of unread messages |
|   ↳ `subtype` | string | Message subtype |
|   ↳ `reactions` | array | Array of reactions on this message |
|   ↳ `name` | string | Emoji name |
|   ↳ `count` | number | Number of reactions |
|   ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `name` | string | File name |
|   ↳ `count` | number | Number of reactions |
|   ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `is_starred` | boolean | Whether message is starred |
|   ↳ `pinned_to` | array | Array of channel IDs where message is pinned |
|   ↳ `files` | array | Array of files attached to message |
|   ↳ `id` | string | File ID |
|   ↳ `name` | string | File name |
|   ↳ `mimetype` | string | MIME type |
|   ↳ `size` | number | File size in bytes |
|   ↳ `url_private` | string | Private download URL |
|   ↳ `permalink` | string | Permanent link to file |
|   ↳ `mode` | string | File mode |
|   ↳ `id` | string | File ID |
|   ↳ `mimetype` | string | MIME type |
|   ↳ `size` | number | File size in bytes |
|   ↳ `url_private` | string | Private download URL |
|   ↳ `permalink` | string | Permanent link to message |
|   ↳ `mode` | string | File mode |
|   ↳ `attachments` | array | Array of legacy attachments |
|   ↳ `blocks` | array | Array of Block Kit blocks |
|   ↳ `edited` | object | Edit information if message was edited |
|   ↳ `user` | string | User ID who edited |
|   ↳ `ts` | string | Edit timestamp |

### `slack_get_message`

Retrieve a specific message by its timestamp. Useful for getting a thread parent message.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Message timestamp to retrieve \(e.g., 1405894322.002768\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | The retrieved message object |
| ↳ `type` | string | Message type |
| ↳ `ts` | string | Edit timestamp |
| ↳ `text` | string | Message text content |
| ↳ `user` | string | User ID who edited |
| ↳ `bot_id` | string | Bot ID if sent by a bot |
| ↳ `username` | string | Display username |
| ↳ `channel` | string | Channel ID |
| ↳ `team` | string | Team ID |
| ↳ `thread_ts` | string | Thread parent timestamp |
| ↳ `parent_user_id` | string | User ID of thread parent |
| ↳ `reply_count` | number | Number of thread replies |
| ↳ `reply_users_count` | number | Number of users who replied |
| ↳ `latest_reply` | string | Timestamp of latest reply |
| ↳ `subtype` | string | Message subtype |
| ↳ `reactions` | array | Array of reactions on this message |
|   ↳ `name` | string | Emoji name |
|   ↳ `count` | number | Number of reactions |
|   ↳ `users` | array | User IDs who reacted |
| ↳ `name` | string | File name |
| ↳ `count` | number | Number of reactions |
| ↳ `users` | array | User IDs who reacted |
| ↳ `is_starred` | boolean | Whether message is starred |
| ↳ `pinned_to` | array | Channel IDs where message is pinned |
| ↳ `files` | array | Files attached to message |
|   ↳ `id` | string | File ID |
|   ↳ `name` | string | File name |
|   ↳ `mimetype` | string | MIME type |
|   ↳ `size` | number | File size in bytes |
|   ↳ `url_private` | string | Private download URL |
|   ↳ `permalink` | string | Permanent link to file |
| ↳ `id` | string | File ID |
| ↳ `mimetype` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `url_private` | string | Private download URL |
| ↳ `permalink` | string | Permanent link to message |
| ↳ `attachments` | array | Legacy attachments |
| ↳ `blocks` | array | Block Kit blocks |
| ↳ `edited` | object | Edit information if message was edited |
|   ↳ `user` | string | User ID who edited |
|   ↳ `ts` | string | Edit timestamp |

### `slack_get_thread`

Retrieve an entire thread including the parent message and all replies. Useful for getting full conversation context.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) |
| `threadTs` | string | Yes | Thread timestamp \(thread_ts\) to retrieve \(e.g., 1405894322.002768\) |
| `limit` | number | No | Maximum number of messages to return \(default: 100, max: 200\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `parentMessage` | object | The thread parent message |
| ↳ `type` | string | Message type |
| ↳ `ts` | string | Message timestamp |
| ↳ `text` | string | Message text content |
| ↳ `user` | string | User ID who sent the message |
| ↳ `bot_id` | string | Bot ID if sent by a bot |
| ↳ `username` | string | Display username |
| ↳ `reply_count` | number | Total number of thread replies |
| ↳ `reply_users_count` | number | Number of users who replied |
| ↳ `latest_reply` | string | Timestamp of latest reply |
| ↳ `reactions` | array | Array of reactions on the parent message |
|   ↳ `name` | string | Emoji name |
|   ↳ `count` | number | Number of reactions |
|   ↳ `users` | array | User IDs who reacted |
| ↳ `name` | string | File name |
| ↳ `count` | number | Number of reactions |
| ↳ `users` | array | User IDs who reacted |
| ↳ `files` | array | Files attached to the parent message |
|   ↳ `id` | string | File ID |
|   ↳ `name` | string | File name |
|   ↳ `mimetype` | string | MIME type |
|   ↳ `size` | number | File size in bytes |
| ↳ `id` | string | File ID |
| ↳ `mimetype` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| `replies` | array | Array of reply messages in the thread \(excluding the parent\) |
|   ↳ `ts` | string | Message timestamp |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the reply |
|   ↳ `reactions` | array | Reactions on the reply |
|   ↳ `files` | array | Files attached to the reply |
| `messages` | array | All messages in the thread \(parent + replies\) in chronological order |
| `replyCount` | number | Number of replies returned in this response |
| `hasMore` | boolean | Whether there are more messages in the thread \(pagination needed\) |

### `slack_list_channels`

List all channels in a Slack workspace. Returns public and private channels the bot has access to.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `includePrivate` | boolean | No | Include private channels the bot is a member of \(default: true\) |
| `excludeArchived` | boolean | No | Exclude archived channels \(default: true\) |
| `limit` | number | No | Maximum number of channels to return \(default: 100, max: 200\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `channels` | array | Array of channel objects from the workspace |
|   ↳ `id` | string | Channel ID \(e.g., C1234567890\) |
|   ↳ `name` | string | Channel name without # prefix |
|   ↳ `is_private` | boolean | Whether the channel is private |
|   ↳ `is_archived` | boolean | Whether the channel is archived |
|   ↳ `is_member` | boolean | Whether the bot is a member of the channel |
|   ↳ `num_members` | number | Number of members in the channel |
|   ↳ `topic` | string | Channel topic |
|   ↳ `purpose` | string | Channel purpose/description |
|   ↳ `created` | number | Unix timestamp when channel was created |
|   ↳ `creator` | string | User ID of channel creator |
| `ids` | array | Array of channel IDs for easy access |
| `names` | array | Array of channel names for easy access |
| `count` | number | Total number of channels returned |

### `slack_list_members`

List all members (user IDs) in a Slack channel. Use with Get User Info to resolve IDs to names.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID to list members from |
| `limit` | number | No | Maximum number of members to return \(default: 100, max: 200\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `members` | array | Array of user IDs who are members of the channel \(e.g., U1234567890\) |
| `count` | number | Total number of members returned |

### `slack_list_users`

List all users in a Slack workspace. Returns user profiles with names and avatars.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `includeDeleted` | boolean | No | Include deactivated/deleted users \(default: false\) |
| `limit` | number | No | Maximum number of users to return \(default: 100, max: 200\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `users` | array | Array of user objects from the workspace |
|   ↳ `id` | string | User ID \(e.g., U1234567890\) |
|   ↳ `name` | string | Username \(handle\) |
|   ↳ `real_name` | string | Full real name |
|   ↳ `display_name` | string | Display name shown in Slack |
|   ↳ `is_bot` | boolean | Whether the user is a bot |
|   ↳ `is_admin` | boolean | Whether the user is a workspace admin |
|   ↳ `is_owner` | boolean | Whether the user is the workspace owner |
|   ↳ `deleted` | boolean | Whether the user is deactivated |
|   ↳ `timezone` | string | User timezone identifier |
|   ↳ `avatar` | string | URL to user avatar image |
|   ↳ `status_text` | string | Custom status text |
|   ↳ `status_emoji` | string | Custom status emoji |
| `ids` | array | Array of user IDs for easy access |
| `names` | array | Array of usernames for easy access |
| `count` | number | Total number of users returned |

### `slack_get_user`

Get detailed information about a specific Slack user by their user ID.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `userId` | string | Yes | User ID to look up \(e.g., U1234567890\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | Detailed user information |
| ↳ `id` | string | User ID |
| ↳ `name` | string | Username \(handle\) |
| ↳ `real_name` | string | Full real name |
| ↳ `display_name` | string | Display name shown in Slack |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `title` | string | Job title |
| ↳ `phone` | string | Phone number |
| ↳ `skype` | string | Skype handle |
| ↳ `is_bot` | boolean | Whether the user is a bot |
| ↳ `is_admin` | boolean | Whether the user is a workspace admin |
| ↳ `is_owner` | boolean | Whether the user is the workspace owner |
| ↳ `is_primary_owner` | boolean | Whether the user is the primary owner |
| ↳ `is_restricted` | boolean | Whether the user is a guest \(restricted\) |
| ↳ `is_ultra_restricted` | boolean | Whether the user is a single-channel guest |
| ↳ `deleted` | boolean | Whether the user is deactivated |
| ↳ `timezone` | string | Timezone identifier \(e.g., America/Los_Angeles\) |
| ↳ `timezone_label` | string | Human-readable timezone label |
| ↳ `timezone_offset` | number | Timezone offset in seconds from UTC |
| ↳ `avatar_24` | string | URL to 24px avatar |
| ↳ `avatar_48` | string | URL to 48px avatar |
| ↳ `avatar_72` | string | URL to 72px avatar |
| ↳ `avatar_192` | string | URL to 192px avatar |
| ↳ `avatar_512` | string | URL to 512px avatar |
| ↳ `status_text` | string | Custom status text |
| ↳ `status_emoji` | string | Custom status emoji |
| ↳ `status_expiration` | number | Unix timestamp when status expires |
| ↳ `updated` | number | Unix timestamp of last profile update |

### `slack_download`

Download a file from Slack

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `fileId` | string | Yes | The ID of the file to download |
| `fileName` | string | No | Optional filename override |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | file | Downloaded file stored in execution files |

### `slack_update_message`

Update a message previously sent by the bot in Slack

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to update \(e.g., 1405894322.002768\) |
| `text` | string | Yes | New message text \(supports Slack mrkdwn formatting\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | Complete updated message object with all properties returned by Slack |
| `content` | string | Success message |
| `metadata` | object | Updated message metadata |
| ↳ `channel` | string | Channel ID |
| ↳ `timestamp` | string | Message timestamp |
| ↳ `text` | string | Updated message text |

### `slack_delete_message`

Delete a message previously sent by the bot in Slack

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to delete \(e.g., 1405894322.002768\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | Success message |
| `metadata` | object | Deleted message metadata |
| ↳ `channel` | string | Channel ID |
| ↳ `timestamp` | string | Message timestamp |

### `slack_add_reaction`

Add an emoji reaction to a Slack message

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to react to \(e.g., 1405894322.002768\) |
| `name` | string | Yes | Name of the emoji reaction \(without colons, e.g., thumbsup, heart, eyes\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | Success message |
| `metadata` | object | Reaction metadata |
| ↳ `channel` | string | Channel ID |
| ↳ `timestamp` | string | Message timestamp |
| ↳ `reaction` | string | Emoji reaction name |


