Slack
Slack experience
Slack is the richest of the external channels. Employees get an assistant that lives in their own Slack sidebar, streams answers as they are generated, and can be pulled into a channel conversation by name — with almost none of the trade-offs the other messaging channels carry.
This page covers what the experience looks like once the channel is live. For credentials, scopes and app installation, see Slack setup.
How employees start a conversation
There are three entry points, and they behave differently.
| Entry point | What happens |
|---|---|
| Direct message to the Leena AI app | The standard one-to-one conversation. Everything the assistant can do is available here. |
| Assistant tab (if enabled) | Slack's dedicated AI surface. Adds a History tab for past conversations and lets the assistant reply in the main chat rather than in a thread. |
| @mention in a channel or group DM | The assistant answers publicly or moves the conversation to a DM, depending on how sensitive the answer is. |
The @mention flow has its own behaviour worth reading separately — see Group Chat Agent for Slack.
The Assistant tab is worth turning onWithout it, the assistant replies inside a thread on the user's own message, which reads as clutter in a busy DM. With it, employees get a purpose-built panel and a history list. It is a toggle in the Slack app configuration, not a Leena AI setting.
What the @mention flow looks like
When someone tags the assistant in a channel, private channel or group DM:
- A short placeholder appears in the channel so everyone can see the request was picked up.
- The assistant reads a bounded window of recent conversation for context — roughly the last six hours or up to 30 messages in a channel, or the thread replies if the mention was inside a thread.
- The full answer streams into a direct message with the person who asked.
- The channel placeholder is then replaced with either the answer itself, or a short note saying the conversation is continuing in a DM.
Whether the answer goes public or private is decided per response, based on what was asked. A payroll question gets redirected; a "where's the travel policy" question can safely stay in the channel.
Follow-up questions in that DM stay connected to the original channel conversation, so employees don't have to re-explain themselves.
Slack Connect channels are not supportedMentions in shared or external Slack Connect channels are ignored. The assistant only responds inside your own workspace.
How responses are formatted
Responses are rendered with Slack's native Block Kit rather than posted as raw text, so formatting survives:
- Headings become real Slack header blocks. Because header blocks are plain text, bold and italic markers inside a heading are dropped.
- Lists render as bullets or numbered items, with continuation lines indented under their marker.
- Horizontal rules render as a visible separator line.
- Tables are converted to Slack's native table elements. Wide or complex tables that Block Kit can't hold are rendered as an image instead.
- Disclaimers appear as a quoted block below the answer rather than as plain trailing text.
One caveat: in streamed messages, Slack's streaming API can't emit header blocks, so headings render as bold text during streaming.
Streaming and thinking state
When streaming is enabled, answers appear token by token rather than arriving as a finished block. Alongside the text, the assistant shows thinking steps — small task cards that reveal what it is doing as it works, such as which knowledge source it is searching or which tool it is calling.
Card titles and detail text are plain text and capped, so long reasoning is trimmed in the card. The full prose is restored in the final message once the response completes.
If you're rolling this out, check Network requirements for streaming responses — corporate proxies that buffer responses will make streaming look broken.
Interactive elements
Slack has the most generous limits of any external channel:
| Element | Limit |
|---|---|
| Characters per message | 2,999 |
| Buttons | 20 |
| Menu items | 20 |
| Cards in a carousel | 20 |
| Buttons per row | 3 (extra buttons wrap to a new row) |
| Heading text | 150 characters |
"Menu", "Back" and "More" options are always moved to the end of a button group and styled as primary buttons, so their position stays predictable across every answer.
Webviews — raising a ticket, filling a workflow form, searching the employee directory — open as native Slack modals rather than pushing the user out to a browser. This is the single biggest reason Slack feels close to the Web App.
Files and media
Employees can send files and attachments to the assistant, and the assistant can send them back.
Files the assistant sends are delivered through short-lived private links, so a URL copied out of Slack stops working shortly afterwards. That's intentional — it prevents a document link pasted into a public channel from becoming a permanent leak.
When a notification carries both a message and a file, the two are merged into a single Slack message with the text as the file comment. They stay as two separate messages when the text contains a table, when the message has buttons attached, or when the combined text goes over the character limit.
Notifications
Notifications reach employees as direct messages from the Leena AI app, so they inherit whatever Slack notification preferences the employee has already set — including do-not-disturb and mobile push. There is no separate opt-in and no messaging window to work around.
The assistant can also message employees who have never interacted with it, which matters for company-wide announcements.
Compared with the Web App
| Capability | Web App | Slack |
|---|---|---|
| Parallel conversations | Multiple named chats with auto-generated titles | Slack threads; the Assistant tab adds a history list |
| Message length | No limit — long answers get a Read more control | 2,999 characters, longer answers split across messages |
| Buttons / menu items | 10 / 6 | 20 / 20 |
| Tables | Rendered natively | Native table blocks, image fallback for complex tables |
| Webviews | Full-page in-app | Native Slack modals |
| Typing indicator | Yes | No — replaced by thinking steps during streaming |
| Read receipts | Yes | No |
| Voice call | Yes | No |
| Side menu and navigation | Yes | No — everything is driven by conversation and buttons |
| Branding and theme | Configurable | Avatar and app name only; Slack controls the theme |
| Language selection | In-app setting | Follows the assistant's language detection |
The honest summary: Slack loses the persistent navigation, theming and voice calling, and gains a place employees are already in all day.
Things to tell your employees
- Long answers arrive as more than one message. The buttons always sit on the last one.
- Links to documents expire. Open them when they arrive rather than saving them for later.
- Tagging the assistant in a channel may move the answer to a DM. That's deliberate, not a failure.
- The assistant only sees recent messages in a channel — it isn't reading the channel's full history.
Setting up the channel
Full installation steps, required scopes, the app manifest and workspace member sync are covered in Slack setup.
Updated 35 minutes ago
