
Slack is a team communication platform with channels, direct messages, file sharing, and workflow automation. This integration uses managed OAuth through ClawLink to provide comprehensive Slack workspace automation -- from messaging and channel management to file handling, reactions, reminders, and canvases.
Step 1: InstallStep 2: Pair AccountStep 3: Connect Slack
_App-specific connection GIF coming soon_Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Slack
text
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Slack API │
│ (User Chat) │ │ (OAuth) │ │ │
└─────────────────┘ └──────────────┘ └──────────────────┘
bash
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Send a message to a channel:
text
clawlink_execute_tool --integration slackbot --tool slackbot_send_message --args '{"channel": "C01234567", "markdown_text": "Deployment complete. All systems operational."}'
Search for messages in the workspace:
text
clawlink_execute_tool --integration slackbot --tool slackbot_search_messages --args '{"query": "quarterly report"}'
List all channels in the workspace:
text
clawlink_execute_tool --integration slackbot --tool slackbot_list_all_channels
Slack uses OAuth 2.0 managed by ClawLink. No API keys are needed. Authorize your Slack workspace through the ClawLink dashboard. The connection is stored securely and refreshed automatically.
Connect at: https://claw-link.dev/dashboard?add=slackbot
List connections:
text
clawlink_list_integrations
Verify connection:
text
clawlink_execute_tool --integration slackbot --tool slackbot_fetch_team_info
Reconnect: If a connection expires, visit the dashboard URL above and reconnect Slack.
ToolDescriptionModeslackbot_send_messagePost a message to a channel, DM, or private groupWriteslackbot_updates_a_messageUpdate an existing message by timestampWriteslackbot_deletes_a_message_from_a_chatDelete a message by channel and timestampWrite (Destructive)slackbot_send_ephemeral_messageSend a message visible only to one user in a channelWriteslackbot_send_me_messageSend a /me message displayed as a third-person actionWriteslackbot_schedule_messageSchedule a message for future delivery (up to 120 days)Writeslackbot_delete_scheduled_messageDelete a pending scheduled messageWrite (Destructive)slackbot_customize_url_unfurlCustomize URL preview content in a messageWrite
ToolDescriptionModeslackbot_list_all_channelsList conversations available to the userReadslackbot_find_channelsFind channels by name, topic, purpose, or descriptionReadslackbot_retrieve_conversation_informationRetrieve metadata for a conversation by IDReadslackbot_retrieve_conversation_members_listRetrieve paginated member IDs for a channelReadslackbot_fetch_conversation_historyFetch chronological messages from a channelReadslackbot_fetch_message_thread_from_a_conversationRetrieve replies to a specific parent messageReadslackbot_create_channelCreate a public or private channelWriteslackbot_join_an_existing_conversationJoin an existing conversation by IDWriteslackbot_leave_conversationLeave a conversation by channel IDWriteslackbot_invite_users_to_a_channelInvite users to a channel by their Slack user IDsWriteslackbot_remove_user_from_conversationRemove a user from a conversationWrite (Destructive)slackbot_archive_conversationArchive a conversation (makes it read-only)Writeslackbot_unarchive_channelReverse conversation archivalWriteslackbot_rename_conversationRename a Slack channelWriteslackbot_set_conversation_purposeSet the purpose text for a conversationWriteslackbot_set_the_topic_of_a_conversationSet or update the topic for a conversationWriteslackbot_set_read_cursor_in_a_conversationMark a message as the most recently readWriteslackbot_close_conversationClose a DM or MPDM from the sidebarWriteslackbot_open_dmOpen or resume a DM with one or more usersWrite
ToolDescriptionModeslackbot_list_all_usersList all users with profile details in the workspaceReadslackbot_find_usersFind users by email, name, or display nameReadslackbot_find_user_by_email_addressFind a user by their registered emailReadslackbot_retrieve_detailed_user_informationRetrieve comprehensive info for a user IDReadslackbot_retrieve_user_profile_informationRetrieve profile information for a userReadslackbot_get_user_presenceRetrieve a user's real-time presence statusReadslackbot_set_user_presenceManually set a user's presence (active/away)Write
ToolDescriptionModeslackbot_list_files_with_filters_in_slackList files with filtering by user, channel, or typeReadslackbot_retrieve_detailed_information_about_a_fileRetrieve file metadata and commentsReadslackbot_download_fileDownload file content and get a public URLReadslackbot_upload_or_create_a_file_in_slackUpload files, images, or documents to channelsWriteslackbot_delete_filePermanently delete a file by IDWrite (Destructive)slackbot_delete_file_commentDelete a comment from a fileWrite (Destructive)slackbot_enable_public_sharing_of_a_fileGenerate a public URL for a fileWriteslackbot_revoke_file_public_sharingRevoke a file's public URLWrite (Destructive)
ToolDescriptionModeslackbot_list_remote_filesList remote files added to SlackReadslackbot_get_remote_fileRetrieve information about a remote fileReadslackbot_add_remote_fileAdd a reference to an external file (Google Drive, etc.)Writeslackbot_share_remote_fileShare a remote file into channelsWriteslackbot_update_remote_fileUpdate metadata for an existing remote fileWriteslackbot_remove_remote_fileRemove a Slack reference to an external fileWrite (Destructive)
ToolDescriptionModeslackbot_fetch_item_reactionsFetch reactions for a message, file, or file commentReadslackbot_list_user_reactionsList all reactions added by a specific userReadslackbot_add_reaction_to_an_itemAdd an emoji reaction to a messageWriteslackbot_remove_reaction_from_itemRemove an emoji reaction from an itemWrite (Destructive)
ToolDescriptionModeslackbot_list_pinned_itemsList all pinned messages and files in a channelReadslackbot_pin_itemPin a message to a channelWriteslackbot_unpin_itemUnpin a message from a channelWrite (Destructive)
ToolDescriptionModeslackbot_list_remindersList all reminders for the authenticated userReadslackbot_get_reminderRetrieve details of a specific reminderReadslackbot_create_a_reminderCreate a new reminder (supports natural language time)Writeslackbot_delete_reminderDelete an existing reminderWrite (Destructive)
ToolDescriptionModeslackbot_get_call_infoRetrieve a point-in-time snapshot of a callReadslackbot_start_callRegister a new call in SlackWriteslackbot_end_callEnd an ongoing Slack callWrite (Destructive)slackbot_update_call_infoUpdate call title, join URL, or desktop app URLWriteslackbot_add_call_participantsRegister participants added to a callWriteslackbot_remove_call_participantsRegister participants removed from a callWrite
ToolDescriptionModeslackbot_lookup_canvas_sectionsLook up section IDs in a CanvasReadslackbot_create_canvasCreate a new Slack Canvas with optional contentWriteslackbot_edit_canvasEdit a Canvas with granular content operationsWriteslackbot_delete_canvasDelete a Canvas permanentlyWrite (Destructive)
ToolDescriptionModeslackbot_list_user_groupsList all user groups in the workspaceReadslackbot_list_user_group_membersList all user IDs within a user groupReadslackbot_create_user_groupCreate a new user group (subteam)Writeslackbot_update_user_groupUpdate user group details (name, description, handle)Writeslackbot_update_user_group_membersReplace all members of a user groupWriteslackbot_enable_user_groupRe-enable a disabled user groupWriteslackbot_disable_user_groupDisable (archive) a user groupWrite
ToolDescriptionModeslackbot_search_messagesSearch messages with query modifiers and date rangesReadslackbot_search_allUnified search across messages and filesRead
ToolDescriptionModeslackbot_fetch_team_infoFetch metadata about the current Slack teamReadslackbot_get_team_profileRetrieve profile field definitions for the teamReadslackbot_list_custom_emojisList all custom emojis for the workspaceReadslackbot_get_bot_userRetrieve information about a specific bot userReadslackbot_list_conversationsList conversations accessible to a userRead
ToolDescriptionModeslackbot_get_user_dnd_statusRetrieve a user's DND statusReadslackbot_retrieve_current_user_dnd_statusRetrieve the current user's DND statusRead
Send a message to a channel:
json
{
"tool": "slackbot_send_message",
"args": {
"channel": "C01234567",
"markdown_text": "Build completed successfully. See details at https://ci.example.com/123"
}
}
Schedule a message for later:
json
{
"tool": "slackbot_schedule_message",
"args": {
"channel": "C01234567",
"post_at": 1750000000,
"text": "Standup starts in 10 minutes!"
}
}
Search messages with filters:
json
{
"tool": "slackbot_search_messages",
"args": {
"query": "from:@john in:#engineering after:2026-05-01"
}
}
Create a channel and invite users:
json
{
"tool": "slackbot_create_channel",
"args": {
"name": "project-phoenix",
"is_private": false
}
}
Add a reaction to a message:
json
{
"tool": "slackbot_add_reaction_to_an_item",
"args": {
"channel": "C01234567",
"timestamp": "1234567890.123456",
"name": "thumbsup"
}
}
clawlink_list_integrations to confirm slackbot is connected.clawlink_list_tools --integration slackbot to see the live catalog.slackbot_list_all_channels to discover channels (returns channel IDs needed for other tools).slackbot_find_users to locate specific users.text
Read Flow:
list_all_channels → retrieve_conversation_information → fetch_conversation_history
find_channels → get channel ID → fetch_conversation_history → fetch_message_thread
Write Flow:
find_channels → get channel ID → send_message (confirm)
find_users → open_dm → send_message (confirm)
Search Flow:
search_messages / search_all → retrieve results → act on specific messages
fetch_conversation_history only returns main channel timeline messages. For threaded replies, use fetch_message_thread_from_a_conversation with the parent message's thread_ts.Retry-After headers on 429 responses.ts value, not the thread's ID.open_dm first to get the DM channel ID, then use that ID with send_message.Status / ErrorMeaningchannel_not_foundInvalid channel ID; use find_channels to resolve names to IDsnot_in_channelBot is not a member of the target channelchannel_is_archivedChannel is archived; unarchive it firstusers_not_foundEmail not registered, user inactive, or privacy settings hide it429 Too Many RequestsRate limited; wait for Retry-After seconds before retrying
Run clawlink_list_tools --integration slackbot to verify the integration is active. If empty, reconnect at https://claw-link.dev/dashboard?add=slackbot.
Use slackbot_find_channels with exact_match=false to locate channels. Channel names are converted to lowercase. Private channels require the bot to be a member.
Verify the bot is a member of the target channel. Use find_channels to confirm the channel ID is correct. Check that markdown_text or blocks content is provided.
Use fetch_message_thread_from_a_conversation with the parent message's thread_ts, not the channel's ts. The parent message's thread_ts is found in fetch_conversation_history results.
Powered by ClawLink -- an integration hub for OpenClaw
