Slack
Send the right update through Slack at the right moment, with a person approving what reaches customers.
24 ways to read, 12 ways to write, each write switched on by you.
Quality checks
Built and tested with example responses.
- Ready to connect: doneEvery listed action is built in.
- Built and tested with example responses: doneEach action is built from the provider’s published API and tested against example responses, errors, rate limits and paging.
Connected, approved, proven.
The things teams do most with Slack, an example flow with a person in the loop, and what Nexra keeps as proof.
Top actions
- Add channel bookmarkApproval by rule
- Create canvasApproval by rule
- List channel bookmarksRead
Example flow
- BambooHR · Read employee directoryDone
- Slack · Create Slack user (SCIM)Needs approval
- Nexra · Record the decision and result in the evidence chainProven
Example workflow. Routine runs go through on their own. Only a change your rules flag, such as one over a limit you set, waits for the right person, who sees the exact change and the rule before it reaches Slack.
What gets logged
- Whether it ran on its own or who approved it, and under which rule
- A fingerprint of the exact request sent to Slack
- Slack's reply: what it created or changed
- One entry in the evidence chain, linked to the one before
Try this in the sandbox
Run the whole flow with test data in your sandbox, then connect a Salesforce test account before you go live.
For developers
Technical detail
Read Slack channels, messages, threads, pins, users, profiles, user groups, files and team info; search with a user token; post, update and schedule messages, react, create channels and canvases.
Salesforce API docs- Source actions
- 24
- Destination actions
- 12
- Data types
- 22
What you can map
Reads are always available. Writes are off until you switch them on for a connection, and governed writes follow your policies.
Auth1
- Check bot identitySource
Workspace and bot identity for the token (auth.test).
Bookmarks2
- Add channel bookmarkDestinationNot retried automaticallyApproval before production
Adds a link bookmark to a channel.
- List channel bookmarksSource
Bookmarks pinned to a channel's header.
Canvases2
- Create canvasDestinationNot retried automaticallyApproval before production
Creates a canvas from markdown, optionally attached to a channel.
- Replace canvas contentDestinationProvider duplicate protectionApproval before production
Replaces the entire canvas content with new markdown (canvases.edit replace).
Conversation members2
- Invite users to channelDestinationProvider duplicate protectionApproval before production
Invites up to 100 users to a channel.
- List channel membersSource
User IDs of the members of a channel.
Conversations3
- Create channelDestinationProvider duplicate protectionApproval before production
Creates a public or private channel. Channel names are unique per workspace.
- Get channelSource
Channel details including topic, purpose and member count.
- List channels and conversationsSource
Public and private channels, DMs and group DMs visible to the bot.
Direct messages1
- Open direct messageDestinationProvider duplicate protectionApproval before production
Opens (or returns the existing) direct or group DM with users; post to the returned channel ID.
Ephemeral messages1
- Post ephemeral messageDestinationNot retried automaticallyApproval before production
Posts a message only one user in the channel can see.
Files3
- Get file metadataSource
Metadata for one file (files.info); contents are not downloaded.
- List filesSourceIncremental
File metadata, optionally filtered by channel, user, type and time.
- Search filesSource
Searches file metadata the user token can see (search.files, a legacy Slack method).
Messages5
- Get messageSource
One channel message by timestamp (conversations.history bounded to that timestamp).
- List channel messagesSourceIncremental
Channel history, newest first, optionally bounded by time.
- Search messagesSource
Searches messages the user token can see, with Slack search modifiers such as in:#channel, from:@user and after:2024-01-01 (search.messages).
- Post messageDestinationNot retried automaticallyApproval before production
Posts a message to a channel or DM, optionally as a thread reply.
- Update messageDestinationProvider duplicate protectionApproval before production
Edits a message the app posted, identified by channel and timestamp.
Pins1
- List pinned itemsSource
Messages and files pinned to a channel.
Reactions1
- Add reactionDestinationProvider duplicate protectionApproval before production
Adds an emoji reaction to a message.
Scheduled messages1
- Schedule messageDestinationNot retried automaticallyApproval before production
Schedules a message for delivery up to 120 days ahead.
Team profile fields1
- List profile fieldsSource
The workspace's custom profile field definitions (team.profile.get).
Team1
- Get workspaceSource
Workspace name, domain, email domain and enterprise (team.info).
Thread replies1
- List thread repliesSource
The parent message and replies of a thread.
User conversations1
- List a user's conversationsSource
Channels and conversations a member (or the bot, when no user is given) belongs to (users.conversations).
User email lookups1
- Find user by email (private)Source
Looks up a member by email address with users.lookupByEmail, sending the email in a form-encoded POST body so it never appears in a URL.
User group members1
- List user group membersSource
User IDs in a user group (usergroups.users.list).
User groups1
- List user groupsSource
User groups (handles) with member IDs.
User presence1
- Get user presenceSource
Whether a member is active or away (users.getPresence).
User profiles1
- Get user profileSource
A member's full profile including status and custom profile fields (users.profile.get).
Users4
- Create Slack user (SCIM)DestinationProvider duplicate protectionApproval before production
Creates an active Slack account for a new starter through Slack's SCIM API, with their work email, name and title. Slack emails them an invitation to sign in.
- Get userSource
One user by ID.
- List usersSource
Workspace members including bots and deactivated users.
- Find user by emailSource
Looks up a member by email address (users.lookupByEmail).
Access and limits
- Authentication
- Bot user OAuth token (xoxb-), optional user token (xoxp-) for search
- Plans and access
- All Slack plans, including Free (Free workspaces only show 90 days of history). A bot token only sees channels the app is a member of; private channels and DMs need the app to be invited. Workspace admins may need to approve the app.
- Test environment
- Use a free workspace or a Slack developer sandbox from the Slack Developer Program.
- Rate limits
- Per-method tiers (Tier 1: 1+/min to Tier 4: 100+/min); chat.postMessage allows about one message per second per channel. HTTP 429 with Retry-After. Non-Marketplace apps created after May 2025 are limited to 1 request/min and 15 messages for conversations.history and conversations.replies.
- Pagination
- Cursor pagination with response_metadata.next_cursor; files.list uses page numbers.
- Provider events
- Events API (message, reaction, channel and user events). Flows can start the moment something happens: when a new message is posted in a channel the app is in; when someone mentions the app; when someone adds a reaction; when someone joins a channel.
Before you build a flow
- Slack has no idempotency key for chat.postMessage, chat.scheduleMessage, chat.postEphemeral, bookmarks.add or canvases.create; uncertain sends are not repeated automatically.
- Message and file search (search.messages, search.files) only accept a user token (xoxp-) with search:read; add the optional user token to use them. Results are what that user can see, are limited to 100 pages of up to 100 matches, and Slack lists search.files as a legacy method.
- users.lookupByEmail and email fields need users:read.email; Slack omits email when an admin hides it.
- Get message reads conversations.history bounded to one timestamp, so it returns channel (top-level) messages only; use List thread replies for replies.
- Pins, bookmarks, files and team data are read-only here apart from Add channel bookmark; pins.add, pins.remove, bookmarks.edit and bookmarks.remove are not implemented.
- No direct-message broadcast, chat.postMessage fan-out to many channels, admin.* methods, conversations.kick, conversations.archive or any delete method are implemented.
- File metadata is read; file contents are not downloaded or uploaded.
- Deleting messages, channels, bookmarks and canvases, and archiving channels, are not implemented.
- Slack returns most errors as HTTP 200 with ok:false; Nexra classifies the error code (invalid_auth, missing_scope, channel_not_found, ratelimited and others).
Developer reference
- Create the Salesforce credentials described above with the narrowest permissions your flows need.
- In Nexra, open Connect, then Connections, then New connection, choose Slack, enter its settings and credentials, and tick only the write actions you need. Connection guide
- Test the connection, then use its actions as flow sources and destinations. Flow guide
Machine-readable detail: GET /api/public/connect/connectors/slack and the Connections API.

