Skip to main content
slack icon

Slack Connector

SourceAPI DocsAPI ChangelogConnector Changelog

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: oauth2

The vast majority of actions in this component use OAuth 2.0 for authentication.

Prerequisites

Setup Steps

  1. Navigate to the Slack Developer App Portal
  2. Click Create New App
  3. Choose to create the app From scratch
  4. Give the app a name and select the workspace. It will be configured to be multi-workspace capable in a moment
  5. Select OAuth & Permissions from the sidebar
    1. Under Redirect URLs, add https://oauth2.prismatic.io/callback.
    2. 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.
  6. Next, select Distribute App under Manage Distribution. Confirm that "removed hard coded information" is checked and select Activate Public Distribution.
  7. 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.public to 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)

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.

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.

InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL for Slack. To request access to the API on behalf of a User, append a user_scope query parameter to the end of the Authorize URL (e.g., https://slack.com/oauth/v2/authorize?user_scope=chat:write,channels:read,groups:read,im:read,mpim:read).

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 user_scope query parameter. Leaving this false grants a Bot token instead.

false
Revoke URL

The OAuth 2.0 Revocation URL for Slack.

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 user_scope query parameter to the Authorize URL and set the 'Is User' flag to true.

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.

https://slack.com/api/oauth.v2.access

Webhook URL

key: webhookUrl

The 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:

  1. Navigate to the Slack App Portal
  2. Click Create New App, adding an app to the workspace
  3. Under Add features and functionality select Incoming Webhooks
  4. Activate Incoming Webhooks and then Add New Webhook to Workspace
  5. Select the channel where messages will be posted
  6. 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
InputNotesExample
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

InputNotesExample
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: true header 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)
EventDescription
app_mentionApp was mentioned in a channel
channel_createdChannel was created
channel_deletedChannel was deleted
message.channelsMessage was posted in a public channel
message.imMessage was posted in a direct message
user_changeUser 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

InputNotesExample
Channel ID

The static ID of the Slack channel.

C02MS7HV6KB
Connection

The Slack connection to use.

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 conversations.history, so the updated bucket is always empty (use the webhook trigger to receive message_changed events).

true

This trigger polls Slack's conversations.history endpoint on a configured schedule and emits new messages posted in a selected Slack channel.

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.history endpoint returns immutable history, so message edits and deletions are not surfaced as separate records and the updated bucket is always empty. To receive message_changed and message_deleted events, use the Events API Webhook trigger instead.

How It Works

  1. The trigger runs on the configured schedule (for example, every five minutes).
  2. It calls conversations.history with oldest set to the timestamp of the previous successful poll (formatted as UNIX seconds with subsecond precision, for example 1716397800.000200).
  3. 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 ts of the oldest fetched message so the next poll resumes from that point. Otherwise, the cursor advances to the current time.
  4. The cursor is persisted via context.polling.setState({ lastPolledAt }), so subsequent invocations only return messages newer than the previous run.
  5. When no new messages are returned, the trigger reports polledNoChanges: true and the flow is not invoked.

Configuration

Configure the following inputs:

  • Connection: The Slack OAuth connection used to call conversations.history. The connection must include the appropriate *:history scope for the channel type (for example, channels:history, groups:history, im:history, mpim:history).
  • Channel ID: The static Slack channel ID to poll (for example, C02MS7HV6KB). The dropdown is populated by the selectChannels data source.
  • Show New Records: When true, newly posted messages are included in the created bucket. Defaults to true.
  • Show Updated Records: Reserved for shape consistency with other polling triggers. The updated bucket is always empty because conversations.history does not surface message edits. Defaults to true but has no effect.

Returned Data

Example Polling Payload
{
"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
}

Notes

  • updated is always empty. Slack's conversations.history endpoint does not return edited or deleted messages as separate records. To react to message_changed or message_deleted events, 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.history is 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
Loading…

Slash Command Webhook

Receive slash command and modal interaction requests from Slack for manually configured webhook endpoints. | key: slashCommandWebhook

InputNotesExample
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

  1. Slack posts the slash command or interaction payload to the configured webhook URL as URL-encoded form data.
  2. The trigger reads the raw request body and parses it into a key/value object exposed on payload.deserializedBody.
  3. 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).
  4. The original raw payload remains available on payload.rawBody for 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-Type header for the response sent back to Slack. Use text/plain for simple message replies or application/json when 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 payload field. 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). To select Private Channels, you must access the API as a User and use the 'user_scope' configuration. | key: selectChannels | type: picklist

InputNotesExample
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
Loading…

Select User

Select a user from a dropdown menu (up to 10,000 users). | key: selectUsers | type: picklist

InputNotesExample
Connection

The Slack connection to use.

Show User ID in Dropdown

When true, displays the user ID alongside the username (e.g., '#user-id (ID: C123456)').

false
Example Payload for Select User
Loading…

Actions

Archive Conversation

Archive an existing conversation. | key: archiveConversation

InputNotesExample
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
Loading…

Close Conversation

Close an existing conversation. | key: closeConversation

InputNotesExample
Connection

The Slack connection to use.

Conversation Name

The display name for the Slack conversation.

Book Club
Example Payload for Close Conversation
Loading…

Conversation Exists

Returns true if the conversation already exists. | key: conversationExists

InputNotesExample
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
Loading…

Create Conversation

Create a new conversation. | key: createConversation

InputNotesExample
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.

T1234567890
Example Payload for Create Conversation
Loading…

Delete Message

Delete the content and metadata of an existing message. | key: deleteMessage

InputNotesExample
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
Loading…

Delete Pending Scheduled Message

Delete the content and metadata of a pending scheduled message from a queue. | key: deletePendingMessage

InputNotesExample
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
Loading…

Get Conversation History

Get the history of a conversation. | key: getConversationsHistory

InputNotesExample
Channel Name or ID

The name or static ID of the Slack channel.

general
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
Include All Metadata

When true, includes all metadata in results.

false
Inclusive

When true, includes messages with oldest or latest timestamps in results. Ignored unless either timestamp is specified.

false
Latest

Only messages before this Unix timestamp will be included in results. Default is current time.

Limit

The maximum number of results to return.

80
Oldest

Only messages after this Unix timestamp will be included in results.

Example Payload for Get Conversation History
Loading…

Get User By Email

Get a user's information by email. | key: getUser

InputNotesExample
Connection

The Slack connection to use.

Email

The email address of the user.

someone@example.com
Example Payload for Get User By Email
Loading…

Get User By ID

Get a user's information by ID. | key: getUserById

InputNotesExample
Connection

The Slack connection to use.

User ID

The unique identifier for the Slack user.

U1234567890
Example Payload for Get User By ID
Loading…

Invite User to Conversation

Invite a user to an existing conversation. | key: inviteUserToConversation

InputNotesExample
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
Loading…

Leave Conversation

Leave an existing conversation. | key: leaveConversation

InputNotesExample
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
Loading…

List Conversation Members

List all members of a conversation. | key: listConversationMembers

InputNotesExample
Channel Name or ID

The name or static ID of the Slack channel.

general
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
Limit

The maximum number of results to return.

80
Example Payload for List Conversation Members
Loading…

List Conversations

List all conversations. | key: listConversations

InputNotesExample
Connection

The Slack connection to use.

Cursor

The pagination cursor from a previous request.

3
Exclude Archived

When true, archived results will be excluded from the result set.

false
Fetch All

When true, fetches all pages of results.

false
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
Limit

The maximum number of results to return.

80
Team ID

The unique identifier for the Slack team.

T1234567890
Example Payload for List Conversations
Loading…

List Files

List all available files. | key: listFiles

InputNotesExample
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
Loading…

List Scheduled Messages

List all scheduled messages. | key: listScheduledMessages

InputNotesExample
Connection

The Slack connection to use.

Example Payload for List Scheduled Messages
Loading…

List User Conversations

List all conversations for a user. | key: listUsersConversations

InputNotesExample
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
Limit

The maximum number of results to return.

80
Team ID

The unique identifier for the Slack team.

T1234567890
User ID

The unique identifier for the Slack user.

U1234567890
Example Payload for List User Conversations
Loading…

List Users

List all users in the workspace. | key: listUsers

InputNotesExample
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
Limit

The maximum number of results to return.

80
Team ID

The unique identifier for the Slack team.

T1234567890
Example Payload for List Users
Loading…

Open View

Open a view for a user. | key: openView

InputNotesExample
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.

{
  "type": "modal",
  "title": {
    "type": "plain_text",
    "text": "Modal title"
  },
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "It's Block Kit...but _in a modal_"
      },
      "block_id": "section1",
      "accessory": {
        "type": "button",
        "text": {
          "type": "plain_text",
          "text": "Click me"
        },
        "action_id": "button_abc",
        "value": "Button value",
        "style": "danger"
      }
    },
    {
      "type": "input",
      "label": {
        "type": "plain_text",
        "text": "Input label"
      },
      "element": {
        "type": "plain_text_input",
        "action_id": "input1",
        "placeholder": {
          "type": "plain_text",
          "text": "Type in here"
        },
        "multiline": false
      },
      "optional": false
    }
  ],
  "close": {
    "type": "plain_text",
    "text": "Cancel"
  },
  "submit": {
    "type": "plain_text",
    "text": "Save"
  },
  "private_metadata": "Shhhhhhhh",
  "callback_id": "view_identifier_12"
}
Example Payload for Open View
Loading…

Post Block Message

Post a block-formatted message to a Slack channel. | key: postBlockMessage

InputNotesExample
Blocks

A JSON array containing blocks (objects) that make up the desired message. Use Slack's Block Kit Builder to build block messages.

{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "plain_text",
        "text": "Hello world"
      }
    }
  ]
}
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
Loading…

Post Ephemeral Message

Post an ephemeral message to a user or channel. | key: postEphemeralMessage

InputNotesExample
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
Loading…

Post Message

Post a message to a Slack channel. | key: postMessage

InputNotesExample
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
Loading…

Post Slack Block Message From Webhook

Post a block-formatted message to a Slack channel from a webhook URL. | key: postWebhookBlockMessage

InputNotesExample
Blocks

A JSON array containing blocks (objects) that make up the desired message. Use Slack's Block Kit Builder to build block messages.

{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "plain_text",
        "text": "Hello world"
      }
    }
  ]
}
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
Loading…

Post Slack Message From Webhook

Post a message to a Slack channel from a webhook URL. | key: postSlackMessage

InputNotesExample
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
Loading…

Publish View

Publish a static view for a user. | key: publishView

InputNotesExample
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.

{
  "type": "modal",
  "title": {
    "type": "plain_text",
    "text": "Modal title"
  },
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "It's Block Kit...but _in a modal_"
      },
      "block_id": "section1",
      "accessory": {
        "type": "button",
        "text": {
          "type": "plain_text",
          "text": "Click me"
        },
        "action_id": "button_abc",
        "value": "Button value",
        "style": "danger"
      }
    },
    {
      "type": "input",
      "label": {
        "type": "plain_text",
        "text": "Input label"
      },
      "element": {
        "type": "plain_text_input",
        "action_id": "input1",
        "placeholder": {
          "type": "plain_text",
          "text": "Type in here"
        },
        "multiline": false
      },
      "optional": false
    }
  ],
  "close": {
    "type": "plain_text",
    "text": "Cancel"
  },
  "submit": {
    "type": "plain_text",
    "text": "Save"
  },
  "private_metadata": "Shhhhhhhh",
  "callback_id": "view_identifier_12"
}
Example Payload for Publish View
Loading…

Push View

Push a view onto the stack of a root view. | key: pushView

InputNotesExample
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.

{
  "type": "modal",
  "title": {
    "type": "plain_text",
    "text": "Modal title"
  },
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "It's Block Kit...but _in a modal_"
      },
      "block_id": "section1",
      "accessory": {
        "type": "button",
        "text": {
          "type": "plain_text",
          "text": "Click me"
        },
        "action_id": "button_abc",
        "value": "Button value",
        "style": "danger"
      }
    },
    {
      "type": "input",
      "label": {
        "type": "plain_text",
        "text": "Input label"
      },
      "element": {
        "type": "plain_text_input",
        "action_id": "input1",
        "placeholder": {
          "type": "plain_text",
          "text": "Type in here"
        },
        "multiline": false
      },
      "optional": false
    }
  ],
  "close": {
    "type": "plain_text",
    "text": "Cancel"
  },
  "submit": {
    "type": "plain_text",
    "text": "Save"
  },
  "private_metadata": "Shhhhhhhh",
  "callback_id": "view_identifier_12"
}
Example Payload for Push View
Loading…

Raw Request

Send raw HTTP request to Slack. | key: rawRequest

InputNotesExample
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). The base URL https://slack.com/api is already included. For example, to call https://slack.com/api/team.info, enter only /team.info here.

/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

InputNotesExample
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
Loading…

Search All

Searches for messages and files matching a query. | key: searchAll

InputNotesExample
Connection

The Slack connection to use.

Count

The number of items to return per page.

80
Highlight

When true, enables query highlight markers in results.

false
Page

The page number of results to return (1-based).

1
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
Loading…

Search Files

Searches for files matching a query. | key: searchFiles

InputNotesExample
Connection

The Slack connection to use.

Count

The number of items to return per page.

80
Highlight

When true, enables query highlight markers in results.

false
Page

The page number of results to return (1-based).

1
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
Loading…

Search Messages

Searches for messages matching a query. | key: searchMessages

InputNotesExample
Connection

The Slack connection to use.

Count

The number of items to return per page.

80
Highlight

When true, enables query highlight markers in results.

false
Page

The page number of results to return (1-based).

1
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
Loading…

Set Conversation Purpose

Set the purpose of an existing conversation. | key: setConversationPurpose

InputNotesExample
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
Loading…

Set Conversation Topic

Set the topic of an existing conversation. | key: setConversationTopic

InputNotesExample
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
Loading…

Update Message

Update the contents of an existing message. | key: updateMessage

InputNotesExample
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
Loading…

Update View

Update an existing view. | key: updateView

InputNotesExample
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.

{
  "type": "modal",
  "title": {
    "type": "plain_text",
    "text": "Modal title"
  },
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "It's Block Kit...but _in a modal_"
      },
      "block_id": "section1",
      "accessory": {
        "type": "button",
        "text": {
          "type": "plain_text",
          "text": "Click me"
        },
        "action_id": "button_abc",
        "value": "Button value",
        "style": "danger"
      }
    },
    {
      "type": "input",
      "label": {
        "type": "plain_text",
        "text": "Input label"
      },
      "element": {
        "type": "plain_text_input",
        "action_id": "input1",
        "placeholder": {
          "type": "plain_text",
          "text": "Type in here"
        },
        "multiline": false
      },
      "optional": false
    }
  ],
  "close": {
    "type": "plain_text",
    "text": "Cancel"
  },
  "submit": {
    "type": "plain_text",
    "text": "Save"
  },
  "private_metadata": "Shhhhhhhh",
  "callback_id": "view_identifier_12"
}
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
Loading…

Upload File

Upload a new file to a Slack conversation. | key: uploadFile

InputNotesExample
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
Loading…

Changelog

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