Everything below lives in Settings → Integrations → Slack. Pick the tab that fits — you can use webhooks and bots at the same time.

Webhook URLs — notifications (one-way)

Best for alerts and digests: watchdog findings, routine/sequence summaries, completion pings. Ambrose only posts — it can't read replies on this mode.

1
In Slack: api.slack.com/apps → your app → Incoming Webhooks → Activate → Add New Webhook to Workspace → pick a channel → copy the URL.
2
In Ambrose: Settings → Integrations → Slack → Webhook URLs → give it a label (e.g. #alerts) + paste the URL → Add. "Test" posts a small visible message.

Add as many channels as you want — each is a separate row, and agents/routines pick a target by label.

Slack Bots — two-way (@mention / DM → an agent or team)

This is the powerful mode. A bot is a Slack app connected to your Ambrose agents/teams. Tag the bot in a channel (or DM it) and an agent/team answers, replying in the same thread. You can add as many bots as you like. Each bot runs in one of two modes:

ModeWho answersHow you use it
BoundOne fixed agent/team you pick when you create the bot.@YourBot your question — always the same node.
RouterAny team/agent in your agency, chosen by name from the message.@YourBot renewals: your question — one bot reaches every team.
Which should I use? Use Bound for a single-purpose bot (e.g. a Support bot). Use Router when you want one bot in Slack that can reach all of your teams by name — no more one-app-per-team.

Fastest: one-click install (when enabled)

If Slack is pre-configured for your Ambrose platform, Settings → Integrations → Slack shows an “Add Ambrose to Slack” button. Click it → press Allow on Slack's consent screen → done. This installs a ready-to-use router bot — no Slack app to create, no scopes to add, no tokens to copy. You can immediately @Ambrose teamname: your question in any channel you invite it to.

You can also “Sign in with Slack” from the login or sign-up page to create or access your Ambrose account with your Slack identity — no password needed. A brand-new Slack identity creates its own Ambrose workspace; an existing one signs straight in.

See those buttons? Use them and skip the rest of this page — the whole manual setup below is only needed when the one-click install isn't available.

Manual setup — Step 1: Create the Slack app (both modes)

1
Go to api.slack.com/appsCreate New AppFrom scratch → name it (e.g. "Ambrose") → pick your workspace → Create.
2
OAuth & PermissionsBot Token Scopes → add: app_mentions:read, chat:write, im:history, im:read, channels:history, users:read. Add files:write too if you want long answers uploaded as file snippets.
3
App Home → under Show Tabs, turn on the Messages Tab, then tick "Allow users to send Slash commands and messages from the messages tab." Without this checkbox, Slack shows "Sending messages to this app has been turned off" and DMs never reach Ambrose.
4
Event Subscriptions → toggle on → paste the Request URL shown in the Ambrose Bot tab (it is https://app.hiambrose.com/slack/events) → wait for the green Verified → under Subscribe to bot events add app_mention (channel mentions) and message.im (DMs) → Save.
5
Install to Workspace (OAuth & Permissions → Install App → Allow). Then copy the Bot User OAuth Token (xoxb-…, OAuth page) and the Signing Secret (Basic Information → App Credentials).
Reinstall after any change. Adding a scope or event does not take effect until you reinstall the app — and if the token changes, paste the new xoxb-… back into Ambrose (rotate it on the bot row).

Step 2 — Add the bot in Ambrose

1
Settings → Integrations → Slack → Bot Token tab → Add a bot.
2
Choose the Mode: Bound (pick the one agent/team it answers as) or Router (optionally pick a default team used when a message has no team name).
3
Enter a name, paste the Bot User OAuth Token + Signing Secret, choose whether it also answers DMs, then Add bot. Ambrose verifies the token with Slack and records the bot's workspace.

Step 3 (Router) — mention a team by name

Slack can't @-mention a team (teams aren't Slack users), so with a Router bot you mention the bot and name the team in the text, followed by a colon:

@YourBot renewals: which of my clients have a plan termination this quarter?
@YourBot "client service": draft a welcome message for a new enrollee

In a DM you don't mention the bot — just start with the team name:

aca-website: how do I generate an ACA website?

How the name is matched (all scoped to your agency, teams win ties over agents):

  • Exact slugrenewal-manager
  • Exact name (case-insensitive) — Renewal Manager
  • Unique prefix / substringrenewalsrenewal-manager

Fallbacks: if the name matches nothing, the bot replies with the list of teams you can reach. If it matches more than one, it asks you to be more specific. If you set a default team and send a message with no team prefix, that default runs.

The colon matters. @YourBot renewals: … routes to the renewals team; @YourBot how do I … (no colon) runs the bot's default team instead — or shows the team list if no default is set. Typing a team's name as a fake @mention (e.g. @renewals) does not work — Slack treats it as plain text.

Make the bot usable for everyone in your workspace

Installing the app to your workspace already makes it available to every member — there is no per-user install. If teammates can't use it:

  • Invite it to the channel. A bot only answers in channels it has joined: /invite @YourBot in each channel.
  • For DMs, members open it from the left sidebar → Apps → search the app name → Message. (Requires the Messages Tab from Step 1.)
  • Workspace app approval. If your workspace requires admin approval for apps, an Owner/Admin must approve it under Settings & administration → Manage apps.
  • Different workspace? To let a separate Slack workspace install it, activate public distribution (api.slack.com/apps → Manage Distribution). Same-workspace use never needs this.

How it works

  • Routing. Every bot shares one Request URL. Ambrose matches each incoming event to the right bot by workspace + the bot's signing secret, then (bound) runs the fixed node or (router) resolves the team named in the message.
  • Isolation. A router bot only ever resolves teams/agents inside its own agency — never from the Slack workspace or the message text. A name that isn't yours simply doesn't match.
  • In-thread replies. The answer is posted back in the same thread as the mention, so conversations stay tidy.
  • Mentions & DMs. Channel @mentions always work. DMs work when "Also answer direct messages" is on and message.im is subscribed.
  • Multiple bots. Run a bound Support bot and a router bot side by side; each is independent. Each row has Enable/Disable and Delete.
  • Billing. Bot replies run the agent/team exactly like in-app chat — billed the normal way (platform Bedrock deducts credits; your own Anthropic key is logged but not charged). See AI provider.
  • Privacy. The agent/team's normal PHI handling applies; only de-identified content leaves under the configured mode. See PHI mode.

Troubleshooting

  • "Sending messages to this app has been turned off." Turn on App Home → Messages Tab and tick "Allow users to send Slash commands and messages from the messages tab," then reinstall and reopen Slack. This is a Slack setting, not an Ambrose one.
  • Router bot answered generically instead of the team. You left out the colon (or the bot mention). Use @YourBot teamname: your question; in a DM, start with teamname:.
  • "Which team?" or "matched more than one." The name you used was empty/unknown or ambiguous. Use the exact slug (e.g. aca-website:) — the reply lists the names you can use.
  • Slack won't verify the Request URL. Paste it exactly (https://app.hiambrose.com/slack/events) and press Retry in Slack.
  • Bot doesn't respond to a mention. Confirm it's invited to that channel, enabled in Ambrose, and you subscribed to app_mention.
  • DMs ignored. Turn on "Also answer direct messages," subscribe to message.im, and enable the Messages Tab.
  • Other members can't use it. Invite the bot to their channels, have an admin approve it under Manage apps, and make sure the app is installed to the workspace.
  • "Slack rejected the bot token." The xoxb-… token is wrong or the app wasn't installed — reinstall and copy the Bot User OAuth Token again.