Slack Connector
Description
Slack is a messaging platform. This component allows posting messages to Slack channels, managing conversations, files, and users, and receiving real-time events through webhooks and polling triggers.
API Documentation
This component was built using the following API References:
Processing Slack events in real-time
Slack requires providing only one webhook URL for the app, and Slack will send all customers' events to that URL. To detect and process changes to customers' Slack accounts in real-time, see the Single-Endpoint Webhook Integrations guide on handling webhook requests from apps that require specifying a single webhook endpoint.
Connections
OAuth 2.0
key: oauth2The vast majority of actions in this component use OAuth 2.0 for authentication.
Prerequisites
- A Slack workspace with administrator access
- Access to the Slack Developer App Portal
Setup Steps
- Navigate to the Slack Developer App Portal
- Click Create New App
- Choose to create the app From scratch
- Give the app a name and select the workspace. It will be configured to be multi-workspace capable in a moment
- Select OAuth & Permissions from the sidebar
- Under Redirect URLs, add
https://oauth2.prismatic.io/callback. - At the bottom, add some User Token Scopes if the integration will send messages on behalf of users, or Bot Token Scopes if a Slack "bot" will send the messages.
The scopes required depend on what types of things the Slack integration will need to do (create channels, send messages, etc).
For sending messages to a channel as a bot, add these scopes:
chat:write chat:write.public. To send messages as a user, see the section below.
- Under Redirect URLs, add
- Next, select Distribute App under Manage Distribution. Confirm that "removed hard coded information" is checked and select Activate Public Distribution.
- Finally, open Basic Information. Copy the Client ID, Client Secret and Signing Secret.
Public Distribution Requirement
Activate public distribution before deploying to customers. Without it, the app is locked to the single workspace. Users in any other Slack workspace cannot install or authenticate with the integration.
What users see without public distribution: If a user in another workspace attempts to install the app, they reach a Slack error page before the OAuth consent screen loads. The installation is blocked entirely.
This activation step does not require Slack's review or approval. It is a configuration toggle that must be explicitly enabled.
Separately, if the app is intended to be listed in the Slack App Directory, a formal Slack review is required. App Directory listing is optional. Apps with public distribution enabled can be distributed to customers and installed in any workspace without being listed in the directory.
Configure the Connection
Add a Slack step to the integration. This creates a connection config variable. Open the connection config variable.
- Enter the Client ID, Signing Secret and Client Secret from the Slack app
- For Scopes, enter the required scopes based on what Slack actions the integration includes:
- For sending messages to a channel, enter the scopes
chat:write chat:write.publicto assign a bot token that can write messages to public channels. See below for information on sending messages to private channels. - Conversation and channel-related actions require
admin.conversations:write. - Enter scopes with spaces in between them (e.g.
chat:write users:read users:read.email)
- For sending messages to a channel, enter the scopes
A list of all Slack OAuth scopes and what each does are available in the Slack documentation.
Sending messages to private channels
The chat:write.public scope allows the bot to send messages to public channels.
To send messages to private channels, or to be more selective about what channels the bot can send messages to, the bot must be invited to specific channels.
If a bot does not have chat:write.public or tries to write to a private channel it's not a part of, a not_in_channel error will be received from Slack when attempting to send a message to that channel.
Sending messages as a user
Slack applications typically send messages as bot users.
To instead send messages as a user, edit the Auth URL and add chat:write to a user_scope query parameter on the Authorization URL to get a User token. To manage channels, add the channels:write scope.
The Auth URL, then, will look something like this: https://slack.com/oauth/v2/authorize?user_scope=chat:write
Dynamically changing the bot's name
The bot's username and icon are set when creating the Slack app.
To override the bot's username within the integration, request the chat:write.customize scope in addition to chat:write.
Enterprise Grid
A Slack app can be installed into a single workspace, which is the default described above, or across an entire Enterprise Grid organization. Installing per workspace on a Grid workspace needs no extra configuration.
To install org-wide instead:
- In the Slack app, select OAuth & Permissions and confirm at least one Bot Token Scope is set
- Select Org Level Apps from the sidebar, choose Opt-In, then confirm Yes, Opt-in
- Have an Org Admin install the app to the organization rather than to a single workspace
Two things change once the token is org-level:
- Team ID becomes required. Slack can no longer infer which workspace to act on, so actions that expose a Team ID input need a value. The List Teams action returns the available IDs, and the Team ID input offers them in a dropdown. A workspace-level token accepts and ignores Team ID, so it is safe to always set it.
- Admin scopes become available. Admin actions only work on an org-level install. List Teams requires
admin.teams:readand Search Conversation requiresadmin.conversations:read. Otheradmin.*methods can be reached through the Raw Request action once the matching scope is added.
GovSlack
Slack offers GovSlack for government organizations that require compliance with FIPS 140-2, FedRAMP, ITAR, etc.
To use the Slack component with GovSlack, change the beginning of OAuth auth URL, token URL, and revoke URL from https://slack.com to https://slack-gov.com.
The component will automatically point API requests towards the Slack Gov API endpoint.
| Input | Notes | Example |
|---|---|---|
| Authorize URL | The OAuth 2.0 Authorization URL for Slack. To request access to the API on behalf of a User, append a | https://slack.com/oauth/v2/authorize |
| Client ID | The client ID issued by Slack for the OAuth 2.0 application. | |
| Client Secret | The client secret issued by Slack for the OAuth 2.0 application. | |
| Is User | When true, requests access to the API as a User instead of a Bot. When enabled, the Authorize URL must include a | false |
| Revoke URL | The OAuth 2.0 Revocation URL for Slack. For GovSlack, change the domain from slack.com to slack-gov.com. | https://slack.com/api/auth.revoke |
| Scopes (Bot) | A space-delimited set of one or more scopes used to obtain the Bot token. To access the API as a User, append a | chat:write chat:write.public users:read channels:read files:read files:write channels:manage channels:history groups:history mpim:history im:history |
| Signing Secret | The signing secret used to verify the authenticity of inbound webhook requests from Slack. | |
| Token URL | The OAuth 2.0 Token URL for Slack. For GovSlack, change the domain from slack.com to slack-gov.com. | https://slack.com/api/oauth.v2.access |
Webhook URL
key: webhookUrlThe Slack Message from Webhook and the Slack Block Message from Webhook actions are the only Slack actions that do not authenticate with OAuth. Instead, these actions use Slack Incoming Webhooks.
Prerequisites
- A Slack workspace with administrator access
- Ability to create Slack apps in the workspace
Setup Steps
To generate a Slack incoming webhook URL:
- Navigate to the Slack App Portal
- Click Create New App, adding an app to the workspace
- Under Add features and functionality select Incoming Webhooks
- Activate Incoming Webhooks and then Add New Webhook to Workspace
- Select the channel where messages will be posted
- Copy the Webhook URL. It should be of the form
https://hooks.slack.com/services/foo/bar/baz
Configure the Connection
- Enter the Webhook URL into the connection configuration
| Input | Notes | Example |
|---|---|---|
| Webhook URL | The Slack webhook URL. Instructions for generating a Slack webhook are available on the Slack component docs page. | https://hooks.slack.com/services/TXXXX/BXXXXX/XXXXXXX |
Triggers
Events API Webhook
Receive and validate event notifications from Slack's Events API for manually configured webhook subscriptions. Handles URL verification challenges automatically. | key: webhook
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. |
Slack can be configured to send events to a workflow. This webhook trigger uses the Slack app's signing secret to verify requests from Slack.
This trigger automatically handles Slack's challenge verification, so no additional verification steps are required.
How It Works
This trigger routes incoming requests to one of three branches based on the request type:
- URL Verify branch: Handles the initial challenge request when configuring the webhook in Slack. The trigger automatically responds with the proper challenge response.
- Notification branch: Handles actual event notifications from Slack, such as when a channel is created or a message is posted.
- Management branch: Handles requests from external systems for testing or management purposes. To invoke this branch, include the
prismatic-bypass-challenge: trueheader in the request to bypass Slack message verification.
The trigger verifies all requests using the signing secret to ensure they originate from Slack.
Configuration
Configure the following input:
- Connection: The Slack connection containing the signing secret from the Slack app. This secret is used to cryptographically verify that webhook requests originate from Slack.
Event Types
Slack supports numerous event types that can trigger this webhook. Common events include:
Available Events (6)
| Event | Description |
|---|---|
app_mention | App was mentioned in a channel |
channel_created | Channel was created |
channel_deleted | Channel was deleted |
message.channels | Message was posted in a public channel |
message.im | Message was posted in a direct message |
user_change | User profile information changed |
Refer to Slack's Event Types documentation for the complete and up-to-date list of available event types.
Returned Data
The trigger returns different payloads depending on the branch:
Example Notification Payload
{
"token": "XXYYZZ",
"team_id": "TXXXXXXXX",
"api_app_id": "AXXXXXXXXX",
"event": {
"type": "channel_created",
"channel": {
"id": "C024BE91L",
"name": "general",
"created": 1360782804
},
"event_ts": "1360782804.083113"
},
"type": "event_callback",
"event_id": "Ev08MFMKH6",
"event_time": 1234567890
}
Example Challenge Payload (URL Verify Branch)
{
"token": "XXYYZZ",
"challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
"type": "url_verification"
}
New and Updated Messages
Checks for new messages in a selected Slack channel on a configured schedule. Messages are emitted in the 'created' bucket; the 'updated' bucket is preserved for shape parity but is always empty because Slack's conversations.history endpoint returns immutable history (use the Events API Webhook trigger to receive message_changed events). | key: pollChangesTrigger
| Input | Notes | Example |
|---|---|---|
| Channel ID | The static ID of the Slack channel. | C02MS7HV6KB |
| Connection | The Slack connection to use. | |
| Look-back Date | The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record created on or after this date once. | 2026-01-01 |
| Show New Records | When true, new messages in the channel are included in the trigger output. | true |
| Show Updated Records | When true, includes updated messages in the trigger output. Reserved for shape consistency with other polling triggers — Slack messages are immutable through | true |
This trigger polls Slack's conversations.history endpoint on a configured schedule and emits new messages posted in a selected Slack channel. Load history once with a Look-back Date, check for new messages on a schedule, or both.
The trigger checks for:
- New records: Messages posted in the channel since the last poll, when Show New Records is enabled.
- Updated records: Reserved for shape consistency with other polling triggers. Slack's
conversations.historyendpoint returns immutable history, so message edits and deletions are not surfaced as separate records and theupdatedbucket is always empty. To receivemessage_changedandmessage_deletedevents, use the Events API Webhook trigger instead.
How It Works
- The trigger runs on the configured schedule (for example, every five minutes).
- It calls
conversations.historywitholdestset to its stored position, formatted as UNIX seconds with subsecond precision (for example,1716397800.000200). On the first recurrence there is no stored position yet, so Look-back Date decides where it starts. - Slack returns matching messages newest-first. If the page is truncated because more messages exist than fit in a single page, the trigger advances its cursor to the
tsof the oldest fetched message so the next poll resumes from that point. Otherwise, the cursor advances to the current time. - The cursor is persisted via
context.polling.setState({ lastPolledAt }), so subsequent invocations only return messages newer than the previous run. - When no new messages are returned, the trigger reports
polledNoChanges: trueand the flow is not invoked.
The first recurrence
- Look-back Date empty: the trigger records the current time and reports nothing. Incremental polling begins on the next recurrence.
- Look-back Date set: the trigger begins a one-time initial sync covering every message posted on or after that date, seeding each one exactly once. The date is read in
YYYY-MM-DDform and normalized to UTC midnight, and a future date is rejected rather than silently ignored.
During an initial sync
No inputs are suppressed. A sync seeds a complete starting state, and none of this trigger's inputs narrow the change feed in a way that would leave gaps in it, so every input keeps the effect it has during incremental polling. Show New Records still gates whether messages reach the created bucket, and Channel ID still selects the single channel the sync covers. Show Updated Records has no effect during a sync for the same reason it has none afterward: conversations.history never returns an edit as its own record.
There is no page-size input to cap a page of the sync. Each recurrence fetches the whole window it can reach, following Slack's cursor pagination until the endpoint reports no more pages or the trigger's internal page cap stops it.
Batching
Batching is enabled per flow on this trigger. Once enabled, each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and the number of batches dispatched concurrently can both be overridden per instance. Raising concurrency increases the request volume sent to Slack.
To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default to use the size this trigger ships with, or choose Custom batch size to set a specific size. Batch Concurrency is optional; leave it blank for no batch-level limit.
Enabling batching changes the payload a downstream step receives. With batching off a step reads data.created and data.updated; with batching on those arrays do not exist and data is a single changeType/record item, or an array of them (see Returned Data). Any step reading the older shape must be updated before batching is turned on. Because batching is per flow, this affects only that flow, not the component or other flows using the same trigger.
Batching changes how fetched messages are dispatched, not how they are fetched. This trigger retrieves its window within a single recurrence either way, so turning batching on does not shorten or lengthen the drain.
Handing off to the schedule
An initial sync has no separate upper bound: the trigger advances its stored position to the current time once the window is exhausted, exactly as an incremental recurrence does, and the next recurrence resumes from there. No field in the payload marks the handoff, and there is no phase in which a different set of filters applies.
Returned Data
What arrives in data depends on whether batching is enabled on the flow.
Without batching, data is a single object holding the created and updated arrays. updated is always empty.
Example Payload: batching disabled
{
"payload": {
"body": {
"data": {
"created": [
{
"type": "message",
"user": "U012AB3CDE",
"text": "Heads up, deploy at 3pm.",
"ts": "1716397800.000200",
"team": "T012AB3C4"
},
{
"type": "message",
"user": "U987XY6Z5",
"text": "Got it, thanks.",
"ts": "1716397950.000100",
"team": "T012AB3C4"
}
],
"updated": []
}
}
},
"polledNoChanges": false
}
Fields shown are representative. The full response object includes additional properties.
With batching enabled, data holds one slice of the batch instead of those two arrays. Every message becomes its own item, shaped as changeType plus record. changeType is created or updated, and record is the polled Slack message. Because updated is always empty, every item this trigger dispatches carries changeType: "created".
With a batch size of 1, data is a single item.
Example Payload: batching enabled, batch size 1
{
"data": {
"changeType": "created",
"record": {
"type": "message",
"user": "U012AB3CDE",
"text": "Heads up, deploy at 3pm.",
"ts": "1716397800.000200",
"team": "T012AB3C4"
}
}
}
Fields shown are representative. The full response object includes additional properties.
With a batch size greater than 1, data is an array of those items.
Example Payload: batching enabled, batch size greater than 1
{
"data": [
{
"changeType": "created",
"record": {
"type": "message",
"user": "U012AB3CDE",
"text": "Heads up, deploy at 3pm.",
"ts": "1716397800.000200",
"team": "T012AB3C4"
}
},
{
"changeType": "created",
"record": {
"type": "message",
"user": "U987XY6Z5",
"text": "Got it, thanks.",
"ts": "1716397950.000100",
"team": "T012AB3C4"
}
}
]
}
Fields shown are representative. The full response object includes additional properties.
Notes
- Connection scopes. The Slack OAuth connection must include the appropriate
*:historyscope for the channel type being polled (for example,channels:history,groups:history,im:history,mpim:history). A connection missing the scope for the selected channel fails at the first request rather than returning an empty page. updatedis always empty. Slack'sconversations.historyendpoint does not return edited or deleted messages as separate records. To react tomessage_changedormessage_deletedevents, configure the Events API Webhook trigger and subscribe to the corresponding Slack event types.- Truncation behavior. When Slack reports
has_more: true, the cursor advances only to the oldest message in the returned page so the next poll resumes from there. This guarantees no messages are skipped under sustained traffic, though high-volume channels may take several polls to catch up. - Rate limits.
conversations.historyis rate limited at Tier 3 (50+ requests per minute for Marketplace apps). Avoid polling intervals shorter than one minute when monitoring many channels.
Example Payload for New and Updated Messages⤓
Slash Command Webhook
Receive slash command and modal interaction requests from Slack for manually configured webhook endpoints. | key: slashCommandWebhook
| Input | Notes | Example |
|---|---|---|
| Content Type | The content type of the response returned to Slack. | text/plain |
| Response Body | The response body to return to Slack. Leave empty for no response body. |
Slack slash commands and modal interaction requests post their parameters as application/x-www-form-urlencoded data. This trigger receives those requests at a manually configured webhook endpoint and automatically deserializes the form body into a JSON object, so no additional decoding step is required.
How It Works
- Slack posts the slash command or interaction payload to the configured webhook URL as URL-encoded form data.
- The trigger reads the raw request body and parses it into a key/value object exposed on
payload.deserializedBody. - The trigger responds synchronously with the configured Content Type and optional Response Body, which Slack displays back to the user (for example, an ephemeral acknowledgment message).
- The original raw payload remains available on
payload.rawBodyfor components or steps that need the unparsed request.
Configuration
Configure the following inputs:
- Response Body: Optional JSON payload returned to Slack as the response body. Leave empty to respond with no body.
- Content Type: The
Content-Typeheader for the response sent back to Slack. Usetext/plainfor simple message replies orapplication/jsonwhen returning a Block Kit payload.
Returned Data
Example Slash Command Payload (deserialized)
{
"payload": {
"deserializedBody": {
"token": "gIkuvaNzQIHg97ATvDxqgjtO",
"team_id": "T0001",
"team_domain": "example",
"channel_id": "C2147483705",
"channel_name": "test",
"user_id": "U2147483697",
"user_name": "Steve",
"command": "/weather",
"text": "94070",
"response_url": "https://hooks.slack.com/commands/1234/5678",
"trigger_id": "13345224609.738474920.8088930838d88f008e0"
}
}
}
Example Modal Interaction Payload (deserialized)
{
"payload": {
"deserializedBody": {
"payload": "{\"type\":\"view_submission\",\"team\":{\"id\":\"T0001\",\"domain\":\"example\"},\"user\":{\"id\":\"U2147483697\",\"username\":\"Steve\"},\"view\":{\"id\":\"VMHU10V25\",\"type\":\"modal\",\"callback_id\":\"identify_your_modals\",\"state\":{\"values\":{}}}}"
}
}
}
Notes
- The trigger does not validate the Slack signing secret. For signed-request verification, route slash command traffic through the Events API Webhook trigger or add a verification step downstream.
- Modal interaction payloads from Slack include a nested JSON-encoded
payloadfield. Parse that field with a JSON parser step before consuming the inner structure.
Data Sources
Select Channel
Select a Slack channel from a dropdown menu (up to 10,000 channels). Selecting Private Channels requires accessing the API as a User with the 'user_scope' configuration. | key: selectChannels | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Include IM Channels | When true, includes direct message (IM) channels in results. | false |
| Include Multi-Party IM Channels | When true, includes multi-party IM (mpim) channels in results. | false |
| Include Private Channels | When true, includes private channels in results. | false |
| Include Public Channels | When true, includes public channels in results. | true |
| Show Channel ID in Dropdown | When true, displays the channel ID alongside the channel name (e.g., '#my-channel (ID: C123456)'). | false |
Example Payload for Select Channel⤓
Select Team
Select a workspace from an Enterprise Grid organization. Requires an org-level connection with the 'admin.teams:read' scope. | key: selectTeams | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Show Team ID in Dropdown | When true, displays the team ID alongside the workspace name (e.g., 'Example Workspace (ID: T1234567890)'). | false |
Example Payload for Select Team⤓
Select User
Select a user from a dropdown menu (up to 10,000 users). | key: selectUsers | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Show User ID in Dropdown | When true, displays the user ID alongside the username (e.g., 'jane.doe (ID: U1234567890)'). | false |
Example Payload for Select User⤓
Actions
Archive Conversation
Archive an existing conversation. | key: archiveConversation
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. |
Example Payload for Archive Conversation⤓
Close Conversation
Close an existing conversation. | key: closeConversation
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Conversation Name | The display name for the Slack conversation. | Book Club |
Example Payload for Close Conversation⤓
Conversation Exists
Returns true if the conversation already exists. | key: conversationExists
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. |
Example Payload for Conversation Exists⤓
Create Conversation
Create a new conversation. | key: createConversation
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Conversation Name | The display name for the Slack conversation. | Book Club |
| Is Private | When true, the Slack conversation will be private. | false |
| Team ID | The unique identifier for the Slack team. Required when an org-level token is used; ignored on a workspace-level token. | T1234567890 |
Example Payload for Create Conversation⤓
Delete Message
Delete the content and metadata of an existing message. | key: deleteMessage
| Input | Notes | Example |
|---|---|---|
| Channel ID | The static ID of the Slack channel. | C02MS7HV6KB |
| Connection | The Slack connection to use. | |
| Message ID | The unique identifier of a message or thread to reply to (thread_ts). | 1503435956.000247 |
Example Payload for Delete Message⤓
Delete Pending Scheduled Message
Delete the content and metadata of a pending scheduled message from a queue. | key: deletePendingMessage
| Input | Notes | Example |
|---|---|---|
| Channel ID | The static ID of the Slack channel. | C02MS7HV6KB |
| Connection | The Slack connection to use. | |
| Message ID | The unique identifier of a message or thread to reply to (thread_ts). | 1503435956.000247 |
Example Payload for Delete Pending Scheduled Message⤓
Get Conversation History
Get the history of a conversation. | key: getConversationsHistory
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Fetch All | When true, fetches all pages of results. | false |
| Include All Metadata | When true, includes all metadata in results. | false |
| Pagination | Cursor and page-size controls for paging through results. | |
| Time Range | Timestamp bounds and inclusivity for the messages returned in results. |
Example Payload for Get Conversation History⤓
Get User By Email
Get a user's information by email. | key: getUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
The email address of the user. | someone@example.com |
Example Payload for Get User By Email⤓
Get User By ID
Get a user's information by ID. | key: getUserById
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| User ID | The unique identifier for the Slack user. | U1234567890 |
Example Payload for Get User By ID⤓
Invite User to Conversation
Invite a user to an existing conversation. | key: inviteUserToConversation
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| User ID | The unique identifier for the Slack user. | U1234567890 |
Example Payload for Invite User to Conversation⤓
Leave Conversation
Leave an existing conversation. | key: leaveConversation
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. |
Example Payload for Leave Conversation⤓
List Conversation Members
List all members of a conversation. | key: listConversationMembers
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Fetch All | When true, fetches all pages of results. | false |
| Pagination | Cursor and page-size controls for paging through results. |
Example Payload for List Conversation Members⤓
List Conversations
List all conversations. | key: listConversations
| Input | Notes | Example |
|---|---|---|
| Channel Types | Which channel types to include in results: public, private, multi-party IM, and IM channels. | |
| Connection | The Slack connection to use. | |
| Exclude Archived | When true, archived results will be excluded from the result set. | false |
| Fetch All | When true, fetches all pages of results. | false |
| Pagination | Cursor and page-size controls for paging through results. | |
| Team ID | The unique identifier for the Slack team. Required when an org-level token is used; ignored on a workspace-level token. | T1234567890 |
Example Payload for List Conversations⤓
List Files
List all available files. | key: listFiles
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Cursor | The pagination cursor from a previous request. | 3 |
| Fetch All | When true, fetches all pages of results. | false |
Example Payload for List Files⤓
List Scheduled Messages
List all scheduled messages. | key: listScheduledMessages
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. |
Example Payload for List Scheduled Messages⤓
List Teams
List the workspaces in an Enterprise Grid organization along with their team IDs. | key: listTeams
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Fetch All | When true, fetches all pages of results. | false |
| Pagination | Cursor and page-size controls for paging through results. |
Example Payload for List Teams⤓
List User Conversations
List all conversations for a user. | key: listUsersConversations
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Fetch All | When true, fetches all pages of results. | false |
| Pagination | Cursor and page-size controls for paging through results. | |
| Team ID | The unique identifier for the Slack team. Required when an org-level token is used; ignored on a workspace-level token. | T1234567890 |
| User ID | The unique identifier for the Slack user. | U1234567890 |
Example Payload for List User Conversations⤓
List Users
List all users in the workspace. | key: listUsers
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Fetch All | When true, fetches all pages of results. | false |
| Pagination | Cursor and page-size controls for paging through results. | |
| Team ID | The unique identifier for the Slack team. Required when an org-level token is used; ignored on a workspace-level token. | T1234567890 |
Example Payload for List Users⤓
Open View
Open a view for a user. | key: openView
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Trigger ID | The short-lived token used to exchange for posting a view to the user. | 12345.98765.abcd2358fdea |
| View | A view payload. This must be a JSON-encoded string. |
Example Payload for Open View⤓
Post Block Message
Post a block-formatted message to a Slack channel. | key: postBlockMessage
| Input | Notes | Example |
|---|---|---|
| Blocks | A JSON array containing blocks (objects) that make up the desired message. Use Slack's Block Kit Builder to build block messages. | |
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Alt Message | The fallback message used when the block message cannot be rendered. | Hello from Acme! |
| Message ID | The unique identifier of a message or thread to reply to (thread_ts). | 1503435956.000247 |
| Bot Username | The username of the bot the message will be sent from. This requires the 'chat:write.customize' scope. | exampleUser |
Example Payload for Post Block Message⤓
Post Ephemeral Message
Post an ephemeral message to a user or channel. | key: postEphemeralMessage
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Message | The message to send the Slack channel. | Hello from Acme! |
| User ID | The unique identifier for the Slack user. | U1234567890 |
| Bot Username | The username of the bot the message will be sent from. This requires the 'chat:write.customize' scope. | exampleUser |
Example Payload for Post Ephemeral Message⤓
Post Message
Post a message to a Slack channel. | key: postMessage
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Message | The message to send the Slack channel. | Hello from Acme! |
| Message ID | The unique identifier of a message or thread to reply to (thread_ts). | 1503435956.000247 |
| Bot Username | The username of the bot the message will be sent from. This requires the 'chat:write.customize' scope. | exampleUser |
Example Payload for Post Message⤓
Post Slack Block Message From Webhook
Post a block-formatted message to a Slack channel from a webhook URL. | key: postWebhookBlockMessage
| Input | Notes | Example |
|---|---|---|
| Blocks | A JSON array containing blocks (objects) that make up the desired message. Use Slack's Block Kit Builder to build block messages. | |
| Connection | The Slack connection to use. | |
| Alt Message | The fallback message used when the block message cannot be rendered. | Hello from Acme! |
Example Payload for Post Slack Block Message From Webhook⤓
Post Slack Message From Webhook
Post a message to a Slack channel from a webhook URL. | key: postSlackMessage
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Message | The message to send the Slack channel. | Hello from Acme! |
Example Payload for Post Slack Message From Webhook⤓
Publish View
Publish a static view for a user. | key: publishView
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| User ID | The unique identifier for the Slack user. | U1234567890 |
| View | A view payload. This must be a JSON-encoded string. |
Example Payload for Publish View⤓
Push View
Push a view onto the stack of a root view. | key: pushView
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Trigger ID | The short-lived token used to exchange for posting a view to the user. | 12345.98765.abcd2358fdea |
| View | A view payload. This must be a JSON-encoded string. |
Example Payload for Push View⤓
Raw Request
Send raw HTTP request to Slack. | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | The path portion of the Slack API URL only (e.g., | /team.info |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
Rename Conversation
Rename an existing conversation. | key: renameConversation
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Conversation Name | The display name for the Slack conversation. | Book Club |
| New Conversation Name | The display name for the Slack conversation. | Book Club |
Example Payload for Rename Conversation⤓
Search All
Searches for messages and files matching a query. | key: searchAll
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Highlight | When true, enables query highlight markers in results. | false |
| Pagination | Page and page-size controls. | |
| Query | The search query. May contain boolean operators (AND, OR, NOT) and modifiers. | pickleface |
| Sort | The method to sort the results. For example, member_count will sort by the number of members in the channel. | score |
| Sort Direction | The direction to sort the results. For example, desc will sort the results in descending order. | desc |
| Team ID | The encoded team ID to search in. Required when an org-level token is used. | T1234567890 |
Example Payload for Search All⤓
Search Conversation
Search for public or private channels in an Enterprise organization. | key: searchConversation
| Input | Notes | Example |
|---|---|---|
| Connected Team IDs | An array of encoded team IDs identifying external orgs to search through. | T00000000 |
| Connection | The Slack connection to use. | |
| Pagination | Cursor and page-size controls for paging through results. | |
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Search Channel Types | The type of channel to include or exclude in the search. For example, private will search private channels, while private_exclude will exclude them. | |
| Sort | The method to sort the results. For example, member_count will sort by the number of members in the channel. | member_count |
| Sort Direction | The direction to sort the results. For example, desc will sort the results in descending order. | desc |
| Team IDs | An array of team IDs identifying internal workspaces to search through. | T00000000 |
| Total Count Only | When true, returns only the total_count of channels. Omits channel data and allows access for admins without channel manager permissions. | false |
Example Payload for Search Conversation⤓
Search Files
Searches for files matching a query. | key: searchFiles
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Highlight | When true, enables query highlight markers in results. | false |
| Pagination | Page and page-size controls. | |
| Query | The search query. May contain boolean operators (AND, OR, NOT) and modifiers. | pickleface |
| Sort | The method to sort the results. For example, member_count will sort by the number of members in the channel. | score |
| Sort Direction | The direction to sort the results. For example, desc will sort the results in descending order. | desc |
| Team ID | The encoded team ID to search in. Required when an org-level token is used. | T1234567890 |
Example Payload for Search Files⤓
Search Messages
Searches for messages matching a query. | key: searchMessages
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| Highlight | When true, enables query highlight markers in results. | false |
| Pagination | Page and page-size controls. | |
| Query | The search query. May contain boolean operators (AND, OR, NOT) and modifiers. | pickleface |
| Sort | The method to sort the results. For example, member_count will sort by the number of members in the channel. | score |
| Sort Direction | The direction to sort the results. For example, desc will sort the results in descending order. | desc |
| Team ID | The encoded team ID to search in. Required when an org-level token is used. | T1234567890 |
Example Payload for Search Messages⤓
Set Conversation Purpose
Set the purpose of an existing conversation. | key: setConversationPurpose
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Conversation Purpose | The purpose statement describing the conversation's intent. | Engineering |
Example Payload for Set Conversation Purpose⤓
Set Conversation Topic
Set the topic of an existing conversation. | key: setConversationTopic
| Input | Notes | Example |
|---|---|---|
| Channel Name or ID | The name or static ID of the Slack channel. | general |
| Connection | The Slack connection to use. | |
| Conversation Topic | The topic shown at the top of the conversation. | Engineering |
| User ID | The unique identifier for the Slack user. | U1234567890 |
Example Payload for Set Conversation Topic⤓
Update Message
Update the contents of an existing message. | key: updateMessage
| Input | Notes | Example |
|---|---|---|
| Channel ID | The static ID of the Slack channel. | C02MS7HV6KB |
| Connection | The Slack connection to use. | |
| Message | The message to send the Slack channel. | Hello from Acme! |
| Message ID | The unique identifier of a message or thread to reply to (thread_ts). | 1503435956.000247 |
Example Payload for Update Message⤓
Update View
Update an existing view. | key: updateView
| Input | Notes | Example |
|---|---|---|
| Connection | The Slack connection to use. | |
| External ID | A custom external identifier assigned to the view. Either view_id or external_id is required. | bmarley_view2 |
| View | A view payload. This must be a JSON-encoded string. | |
| View ID | The unique identifier of the view to be updated. Either view_id or external_id is required. | VMM512F2U |
Example Payload for Update View⤓
Upload File
Upload a new file to a Slack conversation. | key: uploadFile
| Input | Notes | Example |
|---|---|---|
| Channels | A comma-separated list of channel IDs that the file will be shared in. | C02B0APBKP1, C02B0APBKP2, C02B0APBKP3 |
| Connection | The Slack connection to use. | |
| File Content | The binary data of the file to upload. | |
| File Name | The name to assign to the uploaded file. | reports.csv |
| Initial Comment | The message text introducing the file in the specified channels when uploaded. | Example message |
| Thread Reply | Another message's ts value to upload this file as a reply. Never use a reply's ts value — use the parent instead. | u830hd230 |
| File Title | The title of the file as it will appear in the channel. | Monthly Reports |
Example Payload for Upload File⤓
Changelog
2026-09-04
Added Enterprise Grid support and enhanced component capabilities:
- Added the List Teams action for listing the workspaces in an Enterprise Grid organization
- Added the Select Team inline data source, providing a dropdown for the Team ID input on the Create Conversation, List Conversations, List User Conversations, List Users, Search All, Search Files, and Search Messages actions
- Added the Search Conversation action for searching channels across an Enterprise Grid organization
- Added org-level install detection; actions that accept a Team ID now report a clear error when an org-level token is used without one
- Updated the Slack API host to be read from the connection rather than a fixed address, so a Slack Gov connection reaches the Slack Gov API for token verification and for the Raw Request action
- Updated inline action calling support on the Conversation Exists, Get Conversation History, List Conversation Members, List Conversations, List Files, List Users, and List User Conversations actions for improved example output during configuration
- Added opt-in batching to the New and Updated Messages trigger, dispatching each changed record individually or in configured batches so large backlogs drain in one recurrence; enabling it changes the shape a downstream step receives
- Added an optional Look-back Date input on the New and Updated Messages trigger for performing an initial sync of records; the backfill begins on the first recurrence and seeds each record once; later recurrences are unaffected
- Fixed List Files raising a TypeError when Fetch All is enabled; enumeration currently stops at the first page
2026-07-31
Added inline action calling support across all actions so the app builder can show example output during configuration
2026-07-20
Grouped related inputs into structured objects across list, search, and conversation actions:
- Grouped Limit and Cursor into a Pagination structured object on Get Conversation History, List Conversations, List Conversation Members, Search Conversation, List Users, and List User Conversations; the Fetch All input stays flat
- Grouped Count and Page into a Pagination structured object on Search Messages, Search Files, and Search All
- Grouped Include Public Channels, Include Private Channels, Include Multi-Party IM Channels, and Include IM Channels into a Channel Types structured object on List Conversations
- Grouped Oldest, Latest, and Inclusive into a Time Range structured object on Get Conversation History
2026-05-28
Added New and Updated Records polling trigger that monitors a channel for new messages on a configured schedule. Messages are emitted in the created bucket; the updated bucket is always empty because Slack's conversations.history API does not surface message edits as separate records — use the webhook trigger to receive message_changed events
2026-04-30
Various modernizations and documentation updates
2026-03-13
Removed the Debug Request input from all action inputs. Debug logging is now controlled internally and no longer appears as a configurable field in actions.
2026-02-02
Improved channel fetching for List Conversations action and Select Channel data source:
- Refactored to fetch channels by type (public, private, IM, multi-party IM) separately for more reliable results
- Improved pagination handling when fetching large channel lists with mixed types
2025-11-19
Enhanced webhook triggers to support simulated test executions
2025-04-25
Added inline data sources for improved data selection and integration capabilities