> ## Documentation Index
> Fetch the complete documentation index at: https://docs.letsflow.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack

> Slack channel delivery, ingress events, and workspace automation.

export const flowWebUrl = "https://app.letsflow.ai";

Flow uses this integration to run Slack actions from automations with the team connection selected during setup. Admins choose which actions that team can use, and automation runs call only those allowed actions through the connection.

<Tabs>
  <Tab title="Provider OAuth">
    ### Prepare in Slack

    Prepare any Slack access, credential, app approval, or admin permission required for the actions this team will use.

    ### Connect in Flow

    <Steps>
      <Step title="Find the Slack integration">
        1. Open **Integrations**.
        2. Choose **Add connection**.
        3. In **Add connection**, search for **Slack**.
        4. Select the **Slack** card.

        <a className="flow-app-link" href={flowWebUrl}>
          Open Flow

          <svg aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M7 7h10v10" />

            <path d="M7 17 17 7" />
          </svg>
        </a>
      </Step>

      <Step title="Connect">
        1. Pick the team that will use the connection.
        2. Select the Slack actions that team's automations need.
        3. Complete the provider authorization or credential step.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Permissions and scopes

Flow requests scopes during setup based on the actions allowed on the connection. At runtime, Flow checks action access and granted scopes before calling the provider.

<div className="flow-scope-filter" data-flow-scope-filter>
  <button type="button" className="flow-scope-filter-picker" data-flow-scope-filter-trigger>
    <svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <path d="M3 6h18" />

      <path d="M7 12h10" />

      <path d="M10 18h4" />
    </svg>

    Filter
  </button>

  <div className="flow-scope-filter-menu" data-flow-scope-filter-menu hidden />

  <span data-flow-scope-filter-chips />

  <button type="button" className="flow-scope-filter-clear" data-flow-scope-filter-clear hidden>Clear</button>
</div>

| Scope | Used by actions |
| - | - |
| `admin.users:write` | Remove workspace user |
| `channels:read` | List channel members, List channels |
| `channels:write` | Create channel, Invite channel users, Remove channel user |
| `chat:write` | Post ephemeral message, Post message |
| `groups:read` | List channel members, List channels |
| `groups:write` | Create channel, Invite channel users, Remove channel user |
| `im:read` | List channel members, List channels |
| `im:write` | Create channel, Invite channel users, Remove channel user |
| `mpim:read` | List channel members, List channels |
| `mpim:write` | Create channel, Invite channel users, Remove channel user |
| `pins:write` | Add message pin, Remove message pin |
| `search:read` | Search messages |
| `users:read.email` | Look up user by email |

## Supported actions

| Action | Description | <Tooltip tip="Risk estimates the impact of the action. Low reads provider data, medium changes existing records, and high can grant access, remove data, disable resources, or make broad changes.">Risk</Tooltip> |
| - | - | - |
| Add message pin | Adds a pin to a Slack channel message using automation-provided input. Use it when the automation needs to add this provider record or request. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| Create channel | Creates a Slack channel using automation-provided input. Use it when the automation needs to add this provider record or request. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| Invite channel users | Invites users to a Slack channel using automation-provided input. Use it when the automation needs to add this provider record or request. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| List channel members | Reads members of a Slack channel. Use it to fetch current provider state without modifying data. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| List channels | Reads Slack channels. Use it to fetch current provider state without modifying data. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| Look up user by email | Reads a Slack user by email address. Use it to fetch current provider state without modifying data. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| Post ephemeral message | Posts a temporary message that is visible only to one user in a Slack channel as the connected Slack sender. | <Badge color="yellow" size="sm" shape="pill">medium</Badge> |
| Post message | Posts a persistent message to a Slack channel, thread, or direct message as the connected Slack sender. | <Badge color="yellow" size="sm" shape="pill">medium</Badge> |
| Remove channel user | Removes a user from a Slack channel. Use it only after the flow confirms the exact target. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| Remove message pin | Removes a pin from a Slack channel message. Use it only after the flow confirms the exact target. | <Badge color="green" size="sm" shape="pill">low</Badge> |
| Remove workspace user | Removes a user from a Slack workspace. Use it only after the flow confirms the exact target. | <Badge color="red" size="sm" shape="pill">high</Badge> |
| Search messages | Reads Slack messages that match the search query. Use it to fetch current provider state without modifying data. | <Badge color="green" size="sm" shape="pill">low</Badge> |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.