Slack Integration
Find Your Great's Slack integration turns your day-to-day Slack activity into a continuous, shareable record of your impact — without manual reporting and without exposing data the bot doesn't need.
Add Find Your Great to your Slack workspace
Find Your Great installs through your Find Your Great account. Sign up (or sign in), then connect Slack from the Integrations page in two clicks — no manual configuration required.
Once you're signed in
- Open Settings → Integrations and click Connect on the Slack card.
- Approve the requested permissions on Slack's consent screen.
Workspace admin approval may be required, depending on your Slack workspace's app-install policy.
What it does
Learns from your work automatically
Messages, reactions, threads, and shared files across the public channels and DMs you already use are synthesized into a living record of what you worked on. Private channels are opt-in, per channel — when you join one, the bot DMs you to ask whether to include it. Only after you say yes do we read messages from that channel.
Shares recurring impact updates
The bot sends periodic summaries to your manager and teammates on the cadence you choose — no extra status meetings.
Answers questions about your work
DM the bot to ask things like "What did I ship last sprint?" or "What decisions did I make in the payments project?"
Scores work against your goals
Activity is evaluated against your role's dimensions so you can see progress without subjective performance-review theater.
How it works
Install
Connect Slack from the Integrations page in your Find Your Great account. The OAuth consent screen lists every scope we request.
Welcome DM confirms install
Within seconds you'll receive a one-time welcome DM from @FindYourGreat in Slack confirming the install. If you don't see it, check the Apps section in your Slack sidebar.
Read-only by default
Find Your Great reads your public-channel posts through your own Slack session — the bot is never added to any channel automatically. To @-mention the assistant inline in a specific channel, /invite @FindYourGreat there. Private channels are opt-in per channel: when you join one, the bot DMs you to ask whether to include it.
Recurring summaries
Impact updates arrive on the cadence you set. Reply in thread to chat with the bot about any of them, or DM the bot anytime.
Talking to the bot
- DM @FindYourGreat anything — the assistant answers questions about your work, meetings, and impact.
- Reply in any impact-summary thread — chat about that specific summary in context.
- Type
help— see the list of commands at any time. - @-mention the bot in a channel — invoke the assistant inline without switching to a DM.
Permissions we ask for, and why
Every OAuth scope is tied to a specific user-visible feature. If a scope can't be justified by something the product does, we don't ask for it.
Bot scopes (13)
channels:history
Read threads and context in public channels the user has explicitly /invited the Find Your Great bot to, so the chat assistant can respond inline when @-mentioned in those channels. The user's own public-channel posts are captured via their user-scope channels:history — the bot is never auto-added to a channel.
Without this scope: When users @-mention Find Your Great in a channel they explicitly invited the bot to, the assistant would not be able to read the surrounding thread context needed to respond usefully.
channels:read
Channel name display in the activity feed and metadata lookups on public channels the user has invited the bot to. Used to render `#project-foo` instead of opaque channel IDs and to resolve channel metadata when the bot is summoned via @-mention.
Without this scope: Public-channel activity entries would show raw channel IDs instead of names, and the bot could not resolve context on @-mention.
groups:history
Learn from private-channel activity the bot has been invited to. Same feature as channels:history, limited to private channels where the user chose to invite the bot.
Without this scope: Activity in private channels wouldn't be included even after an explicit bot invite.
groups:read
Channel name display for private channels in the activity feed.
Without this scope: Private-channel activities would display with opaque IDs.
im:history
Conversational chat with the FYG assistant over Slack DM. When the user DMs the bot or replies to an impact-summary DM, we need to read the message to respond.
Without this scope: The bot couldn't read the user's own DMs to it, so the chat assistant would be mute.
mpim:read
Not actively used by Find Your Great. The bot cannot be added to multi-party direct messages (group DMs) in Slack — conversations.invite returns method_not_supported_for_channel_type for mpim channels, and Slack's UI does not expose third-party apps in the mpim 'Add apps' picker. We do not request this scope for any feature.
Without this scope: No user-facing functionality is affected.
Required by Slack's platform: the member_joined_channel bot event's scope requirement is 'channels:read OR groups:read OR mpim:read'. Slack's dashboard enforces this as an 'any-of' set and does not let us remove mpim:read while the event subscription is retained. We marked it optional on the consent screen so installations never fail over it.
reactions:read
"Added reaction" activity — we log when the user emoji-reacts to messages, as a low-friction signal of their engagement or feedback on teammates' work.
Without this scope: Reaction activity would never appear in the feed.
users:read
Resolve Slack user IDs to names across every feature — activity attribution, impact-summary recipients, thread participant display.
Without this scope: Messages and activities would show U12345ABC instead of "Alice Smith".
users:read.email
Match Slack users to FYG members. Email is the join key between a Slack user ID and an organization_members row, so we only ingest activity for members you've added to FYG.
Without this scope: We couldn't attribute Slack activity to specific FYG members — everything would be unattributed.
chat:write
Send impact-summary DMs, approval-request DMs, and chat-assistant replies to DM and channel destinations.
Without this scope: We couldn't deliver impact summaries over Slack, couldn't ask managers for approval, couldn't reply in DMs.
im:write
Open a DM channel from the bot to a FYG member so the bot can deliver an impact summary even if the user hasn't DM'd first.
Without this scope: Impact-summary DMs could only reach users who DM'd the bot first — broken for the canonical onboarding flow.
assistant:write
Show a "thinking…" status indicator in Slack while the chat assistant runs tools (search, lookup) during a multi-step response, per Slack's Assistant API design.
Without this scope: Users would see silence for 5–30 seconds during agent runs with no feedback that work is happening.
app_mentions:read
Receive the app_mention event when the Find Your Great bot is @-mentioned in any channel or thread the bot is in. Lets users summon the chat assistant inline ("@FindYourGreat what did I ship this week?") instead of having to switch to a 1:1 DM.
Without this scope: Users could only invoke the assistant via DM. Inline @mentions in channels would be silently ignored — a major friction point for collaborative work.
User scopes (10)
User-token scopes cover signals our bot physically cannot see — your own public-channel posts (so we don't have to add the bot to every channel), your 1:1 and group DMs with teammates, and reactions in private contexts. The Find Your Great bot is never added to a public or private channel unless you explicitly invite it.
channels:history
We learn from the user's public-channel Slack posts as activity in the Find Your Great record. Crucially, we read via the user's own Slack session rather than adding the Find Your Great bot to each channel — customer feedback was that the cascade of "Find Your Great joined #channel" broadcasts felt invasive given the tool was for their own personal use, so the bot is now only ever added to a channel when the user explicitly /invites it. This scope delivers message.channels user events scoped to channels the user is a member of, and unlocks conversations.history on those channels for thread-context lookups.
Without this scope: Public-channel activity — typically the largest share of an individual contributor's day-to-day work — would require the bot to be in every channel, which broadcasts a "bot joined" message and is socially unacceptable on large workspaces.
im:history
We learn from the user's 1:1 Slack DMs with teammates as activity in the Find Your Great record. The bot is not a party to those DMs, so we use the user token to subscribe to the message.im user event and read message history. Without this, peer feedback and 1:1 coordination — a major share of how knowledge work actually happens — would be invisible to the product.
Without this scope: The activity feed and impact summaries would systematically underrepresent the user's actual work because the largest share of their direct-message coordination would be missing.
im:read
We resolve the identity of the OTHER participant in the user's 1:1 Slack DMs so the Find Your Great activity feed can show 'DMed Alice' instead of an opaque 'Direct message' entry. Slack requires im:read to call conversations.info on IM channels separately from im:history (which only covers message content). We use this scope exclusively for counterparty resolution on the user's own DMs — never to enumerate or inspect DMs the user is not a party to.
Without this scope: DM activities in the feed would render as 'Direct message' with no recipient name — a partial attribution gap that makes 1:1 coordination harder to interpret and review.
mpim:history
We learn from the user's multi-party Slack DMs (group DMs) with teammates that do not include the Find Your Great bot, as activity in the Find Your Great record. We use the user token to subscribe to the message.mpim user event and read message history. Small-team coordination often happens in mpim threads; without this, that signal class is lost.
Without this scope: Group-DM coordination would be invisible unless the user manually added the bot to every multi-party DM — infeasible.
mpim:read
We resolve the names and identities of the other participants in the user's multi-party Slack DMs (group DMs) that do not include the Find Your Great bot. We use this scope solely to call conversations.members and conversations.info on mpim IDs the user is in. Without it, group-DM activities would show opaque participant IDs instead of teammate names, and collaboration attribution in the activity feed would be incomplete.
Without this scope: Group-DM activities would show opaque participant IDs instead of teammate names, leaving collaboration attribution incomplete.
reactions:read
We log emoji reactions the user adds in DMs and other Slack contexts where the Find Your Great bot is not present, as "Added reaction" activities in the activity feed. We use this scope solely to subscribe to the reaction_added and reaction_removed user events; without it, reaction activities in 1:1 and group DMs would not be included.
Without this scope: Reaction activity from the user's DMs would be lost. Only reactions in channels where our bot is a member would appear in the feed.
files:read
We summarize the visual content of files the user shares in Slack (screenshots, architecture diagrams, design mocks, PDFs) so that visually-communicated work appears as readable context in the Find Your Great activity feed. A significant portion of technical and design work is shared as files rather than described in text. We use this scope to fetch file content via files.info in the DM, group-DM, and private-channel contexts where our bot is not present, via a server-side processor that generates a short textual description.
Without this scope: Files shared in the user's DMs and private conversations would appear as opaque "shared a file" entries with no context about what was actually communicated visually.
channels:read
Channel-name lookups in the activity feed (so public-channel entries render as `#project-foo` instead of a raw ID) and delivery of member_joined_channel user events for public channels (retained for future features). We do NOT use this scope to auto-invite the bot — the bot is never added to a public channel unless the user explicitly /invites it themselves.
Without this scope: Public-channel activities would render with opaque channel IDs, and future growth hooks that depend on detecting channel joins would not work.
groups:read
We detect when the user joins a new private Slack channel so we can DM them an opt-in prompt asking whether to include that channel in Find Your Great. We use this scope to subscribe to the member_joined_channel user event for private contexts, and for channel-name lookups in the activity feed. We do NOT read private-channel message content with this scope.
Without this scope: The opt-in DM prompt for private channels would not fire. Users joining new private channels would have to know to go to their integrations page to enable tracking.
groups:history
We read messages in the private Slack channels the user has explicitly opted into via the Find Your Great Include/Dismiss DM prompt. Reading is via the user's own token so that the Find Your Great bot never has to be added to a private channel — bot additions are publicly visible to every channel member and are socially unacceptable in sensitive contexts (incident response, performance conversations, strategic projects). Messages are only ingested for channels the user has explicitly flagged as included; default state is suppressed.
Without this scope: We would have no way to include private-channel activity without adding the bot to each private channel — a highly visible, socially disruptive action that users would reasonably refuse. Work in private channels (a significant share of sensitive work) would be invisible to Find Your Great.
For more on how we secure your data on-device and at rest, see the section.