# Reach Them on Slack Bring your AI employee into the Slack workspace your team already lives in. Mention them, DM them, run `/alice`, or open the assistant container in the top bar. They reply in the same thread, remember every channel they sit in, and read history when invited somewhere new. ## TL;DR Connect Slack from the Communications page, pick the employee who answers, then invite the bot to a channel or open a DM. Mentions, DMs, slash commands, and the top-bar assistant container all reach the same employee. Memory is shared with web chat, so a conversation that starts on Slack continues anywhere else. ## How It Works The AI employee is a real bot user inside your workspace. Slack delivers events to a signed webhook when someone mentions the bot, opens a DM, invites the bot to a channel, fires a slash command, or clicks an approval button. We hand the message to the employee, the employee replies, the response posts back into the same Slack thread. - **Same employee, every surface.** Memory, tasks, skills, and tools are shared across web chat, Slack, mailbox, and every other channel. - **Threaded conversations.** Each Slack thread becomes a continuous conversation. Once the employee has replied in a thread, you can keep typing in it without re-mentioning them. - **Cross-channel awareness.** A conversation started in web chat is in the employee's memory when you message them on Slack. - **Silent unless invited.** The bot only replies to direct mentions, DMs, the assistant container, and threads it is already in. It never auto-replies to other channel traffic. ## What You Can Do | Action | How it looks in Slack | |---|---| | **DM the employee** | Open a direct message with Alice and type. Conversation continues with full memory. | | **Mention in a channel** | `@Alice what is the latest revenue number?` after the bot is invited. Reply lands in-thread. | | **Continue a thread** | After the employee has replied in a thread, keep typing in that thread without re-mentioning. | | **Run a slash command** | `/alice summarize this channel`. You get an instant ephemeral confirmation, the real reply lands in the channel. | | **Open the assistant container** | Click the Alice icon in the Slack top bar to open the split-pane. Four suggested prompts appear. Live "Thinking..." status shows while she works. | | **Invite to a new channel** | `/invite @Alice`. She reads the last 50 messages once, posts a warm acknowledgement, saves a 3 to 5 line channel summary in her notebook so future replies skip the re-read. | | **Summarise channel history** | Ask "summarize this channel" or "when did we first discuss X". She pulls recent messages on demand. | | **Approve or reject from Slack** | When the employee asks for a sign-off, you get a DM with Approve and Reject buttons. Clicking either resolves the request the same way the webapp button does. | | **Receive proactive updates** | When any employee on your team finishes work or hits something worth surfacing, you get a Slack DM from Alice naming who said what. | | **Hand off from web chat** | Start the conversation on the web app, finish it on your phone in Slack. Memory carries over. | | **Disconnect** | Click Disconnect on the Communications page. The bot stops responding immediately. | ## How to Set It Up The first part is a one-time platform setup the workspace owner does. After that, every team member can use the bot. **1. Connect Slack from the Communications page** Go to Settings, Communications, click Connect on the Slack panel. You are redirected to slack.com to approve the install on your workspace, then bounced back. The channel flips on automatically. **2. Pick which employee answers** Before you click Connect, choose the employee who handles inbound Slack messages. That employee is the bot's brain. To switch later, reconnect Slack and pick a different employee. **3. Open the assistant container** Click the Alice icon in your Slack top bar. You see four suggested prompts ("Summarize this channel", "What is on my plate today", "Bring in a specialist", "Draft a message"). Click one or type your own. **4. Invite the bot into channels** In any channel, type `/invite @Alice`. From then on, anyone in that channel who mentions Alice gets a reply. The first time she joins a channel, she reads the recent history and writes a short summary in her notebook so she does not re-fetch on every later turn. **5. Or just DM her** DMs work without inviting. Open a direct message with the bot user and start typing. ## The Inbound Ack Every inbound message gets an instant hourglass reaction within about 200ms while the employee runs. The reaction is removed when the reply posts, so you always know whether your message landed. In the assistant container, the same signal appears as a live "Thinking..." status above the composer, matching Slack's native AI UX. Either way, you never wonder if the message was received. ## Tips and Tricks - **Threads keep context.** Replying inside a thread keeps the employee in that conversation. A new top-level message starts a fresh one. - **Be specific in channels.** In a public channel the employee is one of many voices. Concrete asks like `@Alice summarize the deal pipeline for Q3` work better than vague ones. - **DMs are private.** A DM stays between you and the employee, the same way Slack DMs work between people. - **Approve in Slack, not the webapp.** When you get an Approve or Reject card, click in Slack. The card replaces itself with a confirmation and the underlying request resolves on the same path the webapp uses. - **Use the web app for big work.** Long-running tasks, file uploads, and the full execution timeline are still best in the web workspace. Slack is for quick interactions, approvals, and progress updates. ## Behind the Scene | Layer | What happens | |---|---| | **Inbound events** | Slack Events API delivers mentions, DMs, in-thread replies, assistant thread starts, channel joins, and slash commands to a signed webhook. | | **Outbound replies** | The bot posts via the Slack Web API into the same thread. Block Kit cards are used for approvals. | | **Identity** | One single Slack App per workspace (Alice). Proactive messages from every employee route through Alice and name the real sender. | | **Per-workspace state** | An install row holds the bot identity, the encrypted bot token, the installer's Slack user id, the chosen employee, and the workspace team id. | | **Tokens** | Per-workspace bot token, encrypted at rest. Decrypted only at the moment of a call. | | **Signature** | Every inbound payload is HMAC-checked against the App's signing secret before the dispatch fires. | | **Dedup** | Slack retries are filtered by event_id, so the employee only sees a message once. | | **Per-channel memory** | First time the bot is invited to a channel, it reads the last 50 messages and writes a short summary into its notebook. Future turns read the summary instead of re-fetching. | | **Approvals** | Approve and Reject buttons land on the same internal resolution path the webapp button uses. The Slack card swaps to a confirmation, the request resolves once. | ## What It Costs | Cost | What it covers | |---|---| | **Token credits** | Same as web chat. Billed per LLM call the employee makes. | | **Runtime credits** | 1 credit per minute of processing time. | | **Workflow credits** | 1 credit per Slack message the employee handles. | There is no per-message Slack fee. You pay only for the work the employee does. ## Is It Safe - **Signature verification.** Every inbound event is HMAC-verified against the App's signing secret before any agent runs. Forged requests are rejected. - **Tenant isolation.** A Slack install is bound to one tenant. Messages from one workspace never reach another tenant's employee. - **Token encryption.** Each workspace's bot token is encrypted at rest with a Fernet key generated per environment. Decrypted only at the moment of a reply. - **Installer-only approvals.** Only the person who installed the Slack App can resolve Approve or Reject from inside Slack. Clicks from other members are logged and ignored. - **Channel gate.** The Communications page toggle is the master switch. Disable it and the bot stops responding immediately. - **Soft uninstall.** Disconnecting keeps the audit row but revokes the bot's ability to post anything. ## Good to Know - **One bot identity per workspace.** Every employee on your team is reached through Alice. Replies still name the real sender. - **History summary, not full transcript.** On a fresh channel invite the bot writes a brief summary, not a full message dump. For specific past-message questions she pulls history on demand. - **No file uploads yet.** Sending a file in Slack does not upload it to the employee. File uploads work in the web app. - **Disconnects are reversible.** Disconnect, then reconnect later. The same workspace re-binds to the same employee with memory intact. ## Frequently Asked Questions **Q: Does the bot read every message in a channel?** A: No. By default Slack only delivers messages that mention the bot or land in a thread the bot is already in. The one exception is the first time you invite the bot to a channel, when she reads the recent history once, writes a short summary into her notebook, and uses that summary from then on. **Q: How do I trigger Alice without typing the full mention?** A: Three ways. Run `/alice ` from any channel for a quick trigger. Open the assistant container from the top bar for a split-pane chat. DM her directly for private one-to-one conversation. **Q: I clicked Approve in Slack. Does that count, or do I still need to confirm on the webapp?** A: Clicking Approve or Reject in Slack resolves the request on the same internal path the webapp button uses. The Slack card immediately replaces itself with a confirmation, the request status updates everywhere, the workflow continues. No double-confirmation. **Q: Will the employee remember Slack conversations later in web chat?** A: Yes. Memory is shared across channels for the same employee. Anything important from Slack is in her memory the next time you talk on the web app. **Q: A teammate sent a message in a channel Alice is in. Did she see it?** A: She gets the event, but unless your teammate mentioned her or replied inside a thread she is already in, she stays silent. If you want her to weigh in, mention her or invite her into the thread. **Q: What happens if I uninstall the bot from Slack?** A: The Slack channel goes quiet. The conversation history stays in the database. Reconnecting restores full functionality without losing memory.