Install
openclaw skills install slackbotSlack bot API integration with managed OAuth for Slack workspace automation. Send messages, manage channels, handle files, manage user groups, schedule messages, search content, manage reactions, pins, reminders, calls, and canvases. Use this skill when users want to automate Slack messaging, search workspace content, manage channels and members, send scheduled messages, or interact with Slack canvases and files.
openclaw skills install slackbot
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: Install | Step 2: Pair Account | Step 3: Connect Slack |
|---|---|---|
![]() | ![]() | App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Slack |
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Slack API │
│ (User Chat) │ │ (OAuth) │ │ │
└─────────────────┘ └──────────────┘ └──────────────────┘
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Send a message to a channel:
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:
clawlink_execute_tool --integration slackbot --tool slackbot_search_messages --args '{"query": "quarterly report"}'
List all channels in the workspace:
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:
clawlink_list_integrations
Verify connection:
clawlink_execute_tool --integration slackbot --tool slackbot_fetch_team_info
Reconnect: If a connection expires, visit the dashboard URL above and reconnect Slack.
| Tool | Description | Mode |
|---|---|---|
slackbot_send_message | Post a message to a channel, DM, or private group | Write |
slackbot_updates_a_message | Update an existing message by timestamp | Write |
slackbot_deletes_a_message_from_a_chat | Delete a message by channel and timestamp | Write (Destructive) |
slackbot_send_ephemeral_message | Send a message visible only to one user in a channel | Write |
slackbot_send_me_message | Send a /me message displayed as a third-person action | Write |
slackbot_schedule_message | Schedule a message for future delivery (up to 120 days) | Write |
slackbot_delete_scheduled_message | Delete a pending scheduled message | Write (Destructive) |
slackbot_customize_url_unfurl | Customize URL preview content in a message | Write |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_all_channels | List conversations available to the user | Read |
slackbot_find_channels | Find channels by name, topic, purpose, or description | Read |
slackbot_retrieve_conversation_information | Retrieve metadata for a conversation by ID | Read |
slackbot_retrieve_conversation_members_list | Retrieve paginated member IDs for a channel | Read |
slackbot_fetch_conversation_history | Fetch chronological messages from a channel | Read |
slackbot_fetch_message_thread_from_a_conversation | Retrieve replies to a specific parent message | Read |
slackbot_create_channel | Create a public or private channel | Write |
slackbot_join_an_existing_conversation | Join an existing conversation by ID | Write |
slackbot_leave_conversation | Leave a conversation by channel ID | Write |
slackbot_invite_users_to_a_channel | Invite users to a channel by their Slack user IDs | Write |
slackbot_remove_user_from_conversation | Remove a user from a conversation | Write (Destructive) |
slackbot_archive_conversation | Archive a conversation (makes it read-only) | Write |
slackbot_unarchive_channel | Reverse conversation archival | Write |
slackbot_rename_conversation | Rename a Slack channel | Write |
slackbot_set_conversation_purpose | Set the purpose text for a conversation | Write |
slackbot_set_the_topic_of_a_conversation | Set or update the topic for a conversation | Write |
slackbot_set_read_cursor_in_a_conversation | Mark a message as the most recently read | Write |
slackbot_close_conversation | Close a DM or MPDM from the sidebar | Write |
slackbot_open_dm | Open or resume a DM with one or more users | Write |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_all_users | List all users with profile details in the workspace | Read |
slackbot_find_users | Find users by email, name, or display name | Read |
slackbot_find_user_by_email_address | Find a user by their registered email | Read |
slackbot_retrieve_detailed_user_information | Retrieve comprehensive info for a user ID | Read |
slackbot_retrieve_user_profile_information | Retrieve profile information for a user | Read |
slackbot_get_user_presence | Retrieve a user's real-time presence status | Read |
slackbot_set_user_presence | Manually set a user's presence (active/away) | Write |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_files_with_filters_in_slack | List files with filtering by user, channel, or type | Read |
slackbot_retrieve_detailed_information_about_a_file | Retrieve file metadata and comments | Read |
slackbot_download_file | Download file content and get a public URL | Read |
slackbot_upload_or_create_a_file_in_slack | Upload files, images, or documents to channels | Write |
slackbot_delete_file | Permanently delete a file by ID | Write (Destructive) |
slackbot_delete_file_comment | Delete a comment from a file | Write (Destructive) |
slackbot_enable_public_sharing_of_a_file | Generate a public URL for a file | Write |
slackbot_revoke_file_public_sharing | Revoke a file's public URL | Write (Destructive) |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_remote_files | List remote files added to Slack | Read |
slackbot_get_remote_file | Retrieve information about a remote file | Read |
slackbot_add_remote_file | Add a reference to an external file (Google Drive, etc.) | Write |
slackbot_share_remote_file | Share a remote file into channels | Write |
slackbot_update_remote_file | Update metadata for an existing remote file | Write |
slackbot_remove_remote_file | Remove a Slack reference to an external file | Write (Destructive) |
| Tool | Description | Mode |
|---|---|---|
slackbot_fetch_item_reactions | Fetch reactions for a message, file, or file comment | Read |
slackbot_list_user_reactions | List all reactions added by a specific user | Read |
slackbot_add_reaction_to_an_item | Add an emoji reaction to a message | Write |
slackbot_remove_reaction_from_item | Remove an emoji reaction from an item | Write (Destructive) |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_pinned_items | List all pinned messages and files in a channel | Read |
slackbot_pin_item | Pin a message to a channel | Write |
slackbot_unpin_item | Unpin a message from a channel | Write (Destructive) |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_reminders | List all reminders for the authenticated user | Read |
slackbot_get_reminder | Retrieve details of a specific reminder | Read |
slackbot_create_a_reminder | Create a new reminder (supports natural language time) | Write |
slackbot_delete_reminder | Delete an existing reminder | Write (Destructive) |
| Tool | Description | Mode |
|---|---|---|
slackbot_get_call_info | Retrieve a point-in-time snapshot of a call | Read |
slackbot_start_call | Register a new call in Slack | Write |
slackbot_end_call | End an ongoing Slack call | Write (Destructive) |
slackbot_update_call_info | Update call title, join URL, or desktop app URL | Write |
slackbot_add_call_participants | Register participants added to a call | Write |
slackbot_remove_call_participants | Register participants removed from a call | Write |
| Tool | Description | Mode |
|---|---|---|
slackbot_lookup_canvas_sections | Look up section IDs in a Canvas | Read |
slackbot_create_canvas | Create a new Slack Canvas with optional content | Write |
slackbot_edit_canvas | Edit a Canvas with granular content operations | Write |
slackbot_delete_canvas | Delete a Canvas permanently | Write (Destructive) |
| Tool | Description | Mode |
|---|---|---|
slackbot_list_user_groups | List all user groups in the workspace | Read |
slackbot_list_user_group_members | List all user IDs within a user group | Read |
slackbot_create_user_group | Create a new user group (subteam) | Write |
slackbot_update_user_group | Update user group details (name, description, handle) | Write |
slackbot_update_user_group_members | Replace all members of a user group | Write |
slackbot_enable_user_group | Re-enable a disabled user group | Write |
slackbot_disable_user_group | Disable (archive) a user group | Write |
| Tool | Description | Mode |
|---|---|---|
slackbot_search_messages | Search messages with query modifiers and date ranges | Read |
slackbot_search_all | Unified search across messages and files | Read |
| Tool | Description | Mode |
|---|---|---|
slackbot_fetch_team_info | Fetch metadata about the current Slack team | Read |
slackbot_get_team_profile | Retrieve profile field definitions for the team | Read |
slackbot_list_custom_emojis | List all custom emojis for the workspace | Read |
slackbot_get_bot_user | Retrieve information about a specific bot user | Read |
slackbot_list_conversations | List conversations accessible to a user | Read |
| Tool | Description | Mode |
|---|---|---|
slackbot_get_user_dnd_status | Retrieve a user's DND status | Read |
slackbot_retrieve_current_user_dnd_status | Retrieve the current user's DND status | Read |
Send a message to a channel:
{
"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:
{
"tool": "slackbot_schedule_message",
"args": {
"channel": "C01234567",
"post_at": 1750000000,
"text": "Standup starts in 10 minutes!"
}
}
Search messages with filters:
{
"tool": "slackbot_search_messages",
"args": {
"query": "from:@john in:#engineering after:2026-05-01"
}
}
Create a channel and invite users:
{
"tool": "slackbot_create_channel",
"args": {
"name": "project-phoenix",
"is_private": false
}
}
Add a reaction to a message:
{
"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.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 / Error | Meaning |
|---|---|
channel_not_found | Invalid channel ID; use find_channels to resolve names to IDs |
not_in_channel | Bot is not a member of the target channel |
channel_is_archived | Channel is archived; unarchive it first |
users_not_found | Email not registered, user inactive, or privacy settings hide it |
| 429 Too Many Requests | Rate 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
