Skip to Content
IntegrationsSlackOverview

Slack Integration — Overview

Connecting Slack does two things: it lets you send yourself a one-off test message, and it lets FlowState post two kinds of deal alerts — overdue-deal alerts and a weekly digest — from the daily pipeline run into channels you choose. No other FlowState notification (APN sync events, billing, account, or platform events) is delivered to Slack; those remain email-only. See Notifications for exactly what each of the two Slack alerts contains and how routing works.

What the integration does

Connect your Slack workspace

FlowState uses a bring-your-own-app model: you create a Slack app in your own workspace (from a manifest FlowState provides, or manually) and give FlowState the resulting Client ID and Client Secret. FlowState then completes an OAuth install using those credentials. See Getting started for the full flow.

Send a test message

Once connected, the Send test message button DMs the FlowState bot’s fixed test text (“FlowState is connected to this Slack workspace.”) to the Slack account matching your own FlowState login email. This confirms the bot token works and that a Slack account exists for your email — it is a connectivity check, not a preview of a real deal alert.

Notification routing

Settings → Integrations → Slack and the set_slack_notification_routing MCP tool let you store a list of {event_category, channel_id} rules. Two categories are live today — deals.outdated (overdue-deal alerts) and deals.weekly_digest (the Monday digest) — and route real deliveries from the daily pipeline run to the channel you choose. Any other category is accepted and saved but has no producer yet, so it has no effect until FlowState adds one. See Notifications for the full detail, including what data each message contains.

Permissions required in Slack

FlowState’s Slack app requires the following OAuth scopes:

ScopeCurrently used for
chat:writePosting the test-connection direct message, and posting the overdue-deal alert and weekly-digest messages (see Notifications) to whichever channel you’ve routed them to.
channels:readListing public channels via the list_slack_channels MCP tool or GET .../integrations/slack/channels REST endpoint, so you can pick a channel ID when setting up routing. Not yet surfaced in the FlowState UI — reachable only via MCP or a direct API call today.
groups:readSame as above, for private channels the bot has been added to.
im:writeOpening the direct-message conversation used to send the test message.
users:readRequested up front for the app’s OAuth grant, for future use.
users:read.emailResolving the test message’s target Slack user from your FlowState login email (users.lookupByEmail).

The FlowState bot must be invited into a channel (/invite @FlowState, see Getting started) before it can post deal alerts there — chat:write alone doesn’t add it to channels it isn’t already a member of.

FlowState never reads message history, reactions, file content, or any data from channels other than what is explicitly posted by the FlowState bot.

What the integration does not do

  • FlowState does not deliver APN sync events, billing, account, or platform notifications to Slack. Only the two deal alerts described in Notifications — overdue-deal alerts and the weekly digest — are delivered to Slack; everything else remains email-only regardless of what routing rules are stored for other categories.
  • FlowState does not read Slack messages.
  • FlowState does not respond to Slack slash commands.
  • FlowState does not access Slack workspaces other than the one your tenant has authorized.