Skip to main content

Slack API Scopes

A reference for IT teams on the Slack API scopes required by Fellow.

Written by Amin Mirzaee
Updated over a week ago

Fellow's Slack integration uses Slack's granular permissions system, which means a separate scope is requested for each individual action Fellow performs - rather than broad read/write access.

There are two types of scopes:

  • Bot Token Scopes: govern what Fellow can access and do as a bot within Slack.

  • User Token Scopes: govern Fellow's ability to access user data and act on behalf of a specific user. These are only requested when optional features like Slack status sync are enabled.

Bot Token Scopes

Requested by default when a user connects their Slack workspace to Fellow.


app_mentions:read

Description: View messages that directly mention @fellow in conversations the app is in.

Why Fellow needs it: Required to enable interactivity with the Fellow bot.

Note: This scope only grants access to messages where Fellow was explicitly mentioned. It does not provide the ability to read other messages.


channels:read

Description: View basic information about public channels in a workspace.

Why Fellow needs it: Allows users to select a public Slack channel to post meeting notes to from within Fellow.

Note: This scope only allows Fellow to see which channels exist. It does not provide the ability to read messages.


chat:write

Description: Send messages as @fellow.

Why Fellow needs it: Core to bot interactivity — used to post meeting recaps, action item reminders, and notifications.

Note: This applies only to channels Fellow has been added to. It does not provide the ability to read messages.


chat:write.public

Description: Send messages to channels @fellow isn't a member of.

Why Fellow needs it: Allows Fellow to post meeting notes to public channels without needing to be added to them first.

Note: This applies only to public channels.


commands

Description: Add shortcuts and slash commands that people can use.

Why Fellow needs it: Required to support Fellow's slash commands in Slack, including giving feedback and adding notes.


dnd:read

Description: View Do Not Disturb settings for people in a workspace.

Why Fellow needs it: Used to avoid sending messages or notifications to users when they have Do Not Disturb enabled.


emoji:read

Description: View custom emoji in a workspace.

Why Fellow needs it: Required to access custom workspace emojis used in Fellow messages and notifications sent via Slack.


groups:read

Description: View basic information about private channels that Fellow has been added to.

Why Fellow needs it: Allows users to select a private Slack channel to post meeting notes to from within Fellow.

Note: This scope does not provide the ability to read messages.


im:history

Description: View messages and other content in direct messages that Fellow has been added to.

Why Fellow needs it: Core to bot interactivity — allows the Fellow bot to receive and respond to direct messages from users.

Note: This only applies to messages sent directly to the Fellow bot. It does not provide access to any other direct message conversations.


im:read

Description: View basic information about direct messages that Fellow has been added to.

Why Fellow needs it: Core to bot interactivity.

Note: This scope does not provide the ability to read messages.


im:write

Description: Start direct messages with people.

Why Fellow needs it: Allows Fellow to send direct messages to users, such as meeting recap notifications and action item reminders.

Note: This scope does not provide the ability to read messages.


links:read

Description: View Fellow URLs in messages (app.fellow.co, fellow.link, fellow.app).

Why Fellow needs it: Allows Fellow to detect when a Fellow link is shared in Slack so it can display a note preview.


links:write

Description: Show previews of Fellow URLs in messages.

Why Fellow needs it: Enables link unfurling — when a Fellow meeting link is shared in Slack, Fellow can display the meeting note content as a preview inline.


mpim:read

Description: View basic information about group direct messages that Fellow has been added to.

Why Fellow needs it: Allows users to select a group direct message to post meeting notes to from within Fellow.

Note: This scope does not provide the ability to read messages.


mpim:write

Description: Start group direct messages with people.

Why Fellow needs it: Allows Fellow to send meeting notes and notifications to group direct message conversations.

Note: This scope does not provide the ability to read messages.


team:read

Description: View the name, email domain, and icon for workspaces Fellow is connected to.

Why Fellow needs it: Used to sync workspace information to Fellow so users can see which Slack workspace is currently connected.


users:read

Description: View people in a workspace.

Why Fellow needs it: Allows users to find and select Slack teammates to send meeting notes to from within Fellow.


users:read.email

Description: View email addresses of people in a workspace.

Why Fellow needs it: Used to match Slack users to their corresponding Fellow accounts.

User Token Scopes (optional)

These scopes are only requested when the Slack status sync feature is enabled. They allow Fellow to read and update the signed-in user's Slack status — for example, automatically setting a user's status to "In a meeting" during a call.


users.profile:read

Description: Read user profile data.

Why Fellow needs it: Required to read the user's current Slack profile and status.


users.profile:write

Description: Update a user's profile.

Why Fellow needs it: Required to update the user's Slack status to reflect their current meeting state (e.g. "In a meeting"). Fellow only updates the status field — it does not modify any other profile information.


Workflow Scopes

workflow.steps:execute

Description: Add steps that people can use in Workflow Builder.

Why Fellow needs it: Allows Fellow to be used as a step in Slack's Workflow Builder, enabling teams to build automations using Fellow data — such as automatically sharing meeting notes to a channel when a meeting ends.

Note: This scope is configured in the app manifest and is not explicitly requested as part of the standard OAuth flow.

Did this answer your question?