Skip to main content

What Slack adds to Halo

Slack is the most common notification destination in Halo, plus a channel for AI agents to operate in: Connect at Integrations > Slack.

Setup

Connecting

Click Connect Slack. You’ll be redirected to Slack’s OAuth consent screen. The required scopes include:
  • chat:write — post messages
  • channels:read, channels:join, channels:history — read public channels
  • groups:read, groups:history — read private channels
  • app_mentions:read — react to @halo mentions
  • users:read, users:read.email — identify Slack users
  • reactions:write — add reactions
  • im:history, im:write — direct messages with the agent
  • files:read — analyze shared screenshots and images
  • commands — the /halo slash command
After approval, Halo registers an Events API webhook automatically, sends the installer a welcome DM, and the Halo app appears in your workspace ready to be added to channels.
Workspaces connected before the DM and vision features shipped need a one-time reconnect to grant the new scopes. Everything else keeps working in the meantime.

Slack app configuration

If you manage your own Slack app for Halo, make sure it has:
  • Event subscriptions (bot events): message.channels, message.groups, message.im, app_mention, member_joined_channel, app_uninstalled, tokens_revoked
  • Interactivity pointed at /api/integrations/slack/interactions
  • Slash command /halo pointed at /api/integrations/slack/commands

Zero-setup: internal channels just work

In channels that contain only your org’s members, no setup is required. @Mention the bot and it answers as your team assistant (the same assistant as dashboard Ask AI and Slack DMs), with full access to your knowledge base and org data. It uses your configured DM agent, your first active internal agent, or the built-in Ask AI assistant, in that order. Mapping a dedicated agent (below) is optional: do it when you want channel-specific instructions, a customer-facing agent, or always-on response mode.

Mapping channels

To have a specific Halo agent answer in a Slack channel, either:
  • From Slack (fastest): invite the bot with /invite @Halo (or just @mention it in the channel). In shared channels, or when you have agents to choose from, the bot posts a setup card right there. Any Halo admin can complete it and the channel is live immediately.
  • From the dashboard: go to AI Agents > [Your Agent] > Channels > Slack and map the channels where the agent should respond.
You can map different channels to different agents (e.g. #support to the support agent, #sales-questions to the sales agent).

Data access: internal channels vs. shared channels

The channel’s makeup decides how much data the agent may touch there. This is automatic and secure by default: How it plays out:
  • Bot added to a team-only channel → the setup card offers your agents; internal agents get full org context.
  • Bot added to a shared channel (external members detected) → the setup card switches to a customer scoping card: a Halo admin searches for the customer, picks it, and hits Approve. Until that approval, the agent refuses to answer in the channel, so nothing can leak while it’s unconfigured.
  • An external member joins later (“drift”): if someone from outside your org joins a channel where the agent had full context, the agent immediately pauses, flags the channel, and posts the scoping card. It won’t answer again until an admin scopes it to a customer. Approvals are one click and happen right in Slack.
  • Once scoped, a channel never silently widens back to full context, even if the external members leave. Changing it back is an explicit dashboard action.
Detection uses two layers: Slack’s own member flags (Slack Connect, single/multi-channel guests) checked per channel and cached, plus a per-message sender check against your configured internal email domains. If Halo can’t verify a channel’s makeup, it fails safe and treats it as external. Per-channel access modes (visible on the agent’s Slack tab in the dashboard):
  • Auto (default): follows the channel makeup as described above.
  • Scoped to company: always limited to one customer’s data, regardless of who’s in the channel.
  • Full (override): full org context even with external members present. This is deliberately dashboard-only, admin-only, and labeled with the risk; it can never be enabled from within Slack.
Who can approve: only workspace members whose Slack email matches a Halo admin (or a user with the integrations permission) can complete setup or approve scoping. Everyone else gets a polite “ask an admin.”

What a conversation looks like

  • The bot reacts with an hourglass the moment it sees your message, and posts a short task-specific acknowledgement (“On it, pulling that account’s ticket history now.”) on the first message of an exchange.
  • Replies render with real structure: title bars, dividers, aligned tables, and tappable links into the Halo dashboard.
  • When it finishes, the hourglass flips to a checkmark (or an X if something failed).
  • Rapid messages in the same thread are answered in order, never interleaved.
  • Share a screenshot with your question and the agent analyzes the image directly.

Thread awareness

Once the agent is part of a thread (you mentioned it and it replied), you don’t need to re-tag it on every follow-up:
  • Follow-ups just work. Reply in the thread (“what about last month?”, “yes, do that”) and the agent answers.
  • It knows when you’re not talking to it. If two humans start a side conversation in the same thread (mentioning each other, coordinating between themselves), the agent stays quiet. A fast classifier judges each un-mentioned reply before responding.
  • A mention always wins. @mentioning the agent in any thread gets a response, no matter what.
This applies to channels in mention-only mode (the default). Channels in active mode already respond to everything, and observe channels never respond.

Slash commands

Ingest mode

When ingest is on:
  • Channel conversations — messages in mapped channels feed the AI’s awareness of team context
  • Channel history — on initial mapping, Halo can pull up to 500 historical messages from a channel, summarize them, and add as customer-scoped knowledge
Knowledge ingest is gated by both ingest mode and the agent being a customer-facing agent — internal-only Slack agents don’t add to your customer-facing knowledge.

Actions: post_message

The single Slack action lets an agent post messages into Slack channels. Configuration on the agent action card:
  • Default channel — the channel the agent posts to when not specified
  • Allowed channels — optional whitelist of channels the agent can post to
Use cases:
  • Customer-facing agent posts a summary into #customer-success after every escalation
  • Sales agent posts new lead alerts into #new-deals
  • Support agent posts known-issue alerts into #engineering
The action is flagged destructive — be intentional about which agents have it.

Notifications

Slack is the central notification sink in Halo. Configure notification routing on the Slack integration page: Each type can be enabled or disabled independently with its own destination channel.

AI-enriched vs simple notifications

Halo notifications come in two flavors:
  • Simple — fire as-is (e.g. “New ticket #1234 from Jane Doe”)
  • AI-enriched — Halo runs a summarization pass before posting, so the message includes context, root cause hypothesis, suggested response, etc.
AI-enriched types include: escalation, conversation summary, negative sentiment, health score drop, knowledge gap, feedback alert.

Testing notifications

Click Send test notification on the Slack integration page to verify wiring. A test message goes to your default notifications channel.

Slack DMs

Team members can DM the Halo app directly and talk to your internal agent — look up users and companies, pull ticket history, query metrics, search the knowledge base, and trigger enabled actions, all without a channel mapping. Security model:
  • Only members of your organization get replies. The sender’s Slack email must match a Halo dashboard user or your configured internal domains.
  • Guests and Slack Connect users receive a polite refusal and never see data.
  • DMs always run an internal agent; customer-facing agents are never exposed in DMs.
  • Group DMs are not supported: the agent works in channels and 1:1 DMs only. If someone @mentions it in a group chat, it politely points them to a direct DM.
Configure DMs on the Slack integration page: toggle them on or off, and choose which internal agent answers (defaults to your first internal agent, or the built-in Ask AI assistant when you haven’t created one). Internal DM conversations are never ingested into your customer knowledge base.

Where to go next

Agent Channels

Map Slack channels to specific agents.

Agent Actions

Enable post_message per agent.

Modes

Slack as notification sink for HubSpot, Stripe, PandaDoc, and more.