# Slack Bot

Ask Insulin from Slack: direct-message the bot, or `@mention` it in a channel.

---

## What You Get

The Fours bot is not a separate assistant. It is the **same Insulin agent** you use in the console, reached from Slack instead of a browser — your connected integrations, your knowledge bases, your memory, your role. The surface changes; what you can do does not.

That has a practical consequence worth knowing up front: **everything is configured in the console, and Slack inherits it.** Connect a tool there and the bot can use it here. Connect nothing and the bot can still talk, but it has nothing to reach into. There is no separate setup on the Slack side, and nothing to configure per channel.

Use it when the question comes up where the work is happening: a deal in a sales channel, an entitlement question in support, a revenue figure during a standup.

## Before You Start

Two things have to be in place.

1. **An org admin connects Slack.** In the Fours console, go to **Settings ▸ Integrations** and connect [Slack](/integrations/slack/) for your organization. This installs the Suger app into your Slack workspace — the app still carries Fours' former name. Any member can see the organization's integrations, but only an org admin can connect one.
2. **Your Slack email matches your Fours account.** The bot identifies you by the email on your Slack profile, finds the matching Fours user, and checks that you are a member of the organization this workspace is connected to. If your Slack profile has no email, or uses a different address than your Fours account, the bot will tell you so rather than guess.

Nothing else is needed to *talk* to the bot — no API key, no per-person install. What it can *do* for you depends on the third step.

3. **Connect the tools you want it to use.** The bot reaches only what you have connected in the console, under **Settings ▸ Integrations**:

   - **Your Fours resources** — offers, products, entitlements, buyers, revenue, co-sell records — come through the **Fours MCP server**, under **Settings ▸ Integrations ▸ Custom MCP Servers**. This one is required for any question or action about Fours data. Without it the bot works but has nothing to read, and it will tell you the connection is missing rather than claim the data does not exist.
   - **Your own tools** — Gmail, Google Calendar, Google Drive, Gong, Salesforce and the rest — are personal connections, available to your agents alone. Connect them once in the console and they work in Slack too.

   Each integration's own page covers both halves: how to connect it to your account, and what the agent can then do with it. **[Gong](/integrations/gong/)** is a worked example — [Create User Integration](/integrations/gong/#create-user-integration) is four steps through an OAuth redirect, and [Fours AI Tools](/integrations/gong/#fours-ai-tools) lists what that buys you, from reading call transcripts to finding a company's calls by the CRM account linked to them. Once it is connected, "what did we discuss on the last call with this buyer?" works in Slack exactly as it does in the console.

   When you connect the Fours MCP server you choose how far it reaches, and **the default is read-only**:

   | Access | What the bot can do |
   | --- | --- |
   | **Read** (default) | Look things up and report them. It cannot change anything. |
   | **Read & write** | Also create and update records — an offer, a referral. |
   | **Read, write & delete** | Also delete them. |

   Pick the level you actually want. If you ask the bot to create something and it tells you it cannot, a read-only connection is the usual reason. The level caps which tools it is offered; your own Fours permissions still apply on every call, so it can never do something through Slack that you could not do in the console.

   Your other connections can be narrowed one at a time, too — **Read-only**, **Edit**, or **Full** — in the Insulin assistant's settings panel in the console, and the bot follows those levels as well; see [What the Insulin assistant may do with your integrations](/insulin/agents/#what-the-insulin-assistant-may-do-with-your-integrations).

:::info
**Connections are per person, not per channel.** Two people mentioning the bot in the same Slack channel each get their own: yours reaches your calendar and your Fours organization, theirs reaches theirs. Nothing you connect becomes available to a colleague because you both use the bot in one place.

**Organization-level integrations are never available here.** The bot is the Insulin agent, and that agent is user-level by design: it runs on your own connections and never holds the organization's. Those are reached by org-level agents instead. This holds even if you are an org admin — it is a boundary, not a permission you are missing. So when the bot says it lacks an integration, it is describing *your* connections, and connecting that tool to your own account is the fix.
:::

## Asking in a Direct Message

Open a direct message with the Suger app and type as you would in the console. No mention is needed — every message is a question for the bot.

A direct message is a continuing conversation: the bot remembers what you asked earlier in it, so you can follow up with "and for Azure?" without repeating yourself.

## Asking in a Channel

In a channel, the bot answers when you **`@mention`** it and never otherwise. It does not read along, and it does not reply to messages between colleagues — being in a channel is not the same as being addressed.

Its reply mentions you, so you can tell which question it belongs to when several people are asking at once.

In a **private** channel the bot has to be invited before it can see a mention at all — `/invite @Suger` once, and it works there like any other channel.

**Each mention is its own conversation.** Mentioning the bot again at the top level of a channel starts a fresh exchange rather than continuing the last one. To carry on, reply **in the thread** under its answer — there the bot keeps the context of that thread, including the messages your colleagues wrote in it.

:::info
**In a channel, what would change something waits for you.** Anyone in a channel can write the messages the bot reads there, so before the bot runs anything it can't recognize as a read — creating, updating or sending anything on your behalf, handing part of the work to a helper agent, and some lookups too — it stops and posts an approval card that only you can answer. The scratch work it does in its own temporary sandbox doesn't wait. In a direct message, only sending a Slack message waits for approval.
:::

:::warning
A channel answer is visible to everyone in the channel, and it can draw on what your connections can read — which may include your private Slack messages, Teams chats and email. Ask in a direct message about anything you would not post in that channel yourself.
:::

## What You Can Ask

Anything you would ask in the console. In practice the questions that suit Slack are the ones that come up mid-conversation, where opening the console would break the thread:

- **Look something up** — a buyer's entitlements, an offer's status, which products a customer is on, how a co-sell referral is progressing.
- **Roll something up** — new entitlements this week, offers awaiting acceptance, pipeline by partner. Ask for the count rather than the list when that is what you want.
- **Work out why something failed** — give it the offer or referral and ask what went wrong; it reads the record and reports what it finds rather than guessing.
- **Pull a brief together** — if you have connected [Gong](/integrations/gong/) and Salesforce, ask for the picture before a call and it combines what each one knows.
- **Change something** — create or update an offer or referral, if you granted the connection write access.
- **Draft something** — an outreach email, a summary of the thread you were just added to.

What it can reach is what *you* connected, so two people asking the same question in the same channel can get different answers. That is the model working, not a fault.

## While It Works

The bot posts a short status as it goes — "Gathering information", or the name of the tool it is using — then replaces it with the answer. A long question can take a minute or more; the status is how you know it is still working. On a long step the status is refreshed every minute so it stays visible, for up to ten minutes without progress. The reply itself is only the final answer: the notes the bot writes along the way, and a helper agent's drafts, are not posted.

If an answer is a large table, you get a CSV file instead of a wall of text, with the links preserved so you can open each record.

## Approving an Action

Before the bot **sends a message on your behalf** — or, when you asked in a channel, before it runs anything it can't recognize as a read — it stops and asks. Rather than acting and telling you afterwards, it posts a card naming the action and its exact target — for a message, the text and the channel or person it would go to — with **Allow** and **Deny**. In a channel, the card asks *"Run `<tool>` from an untrusted shared-channel request?"* and names the tool.

- Only the person who asked can decide. A card in a channel is visible to everyone, but a click from anyone else is refused.
- Nothing happens until you choose. **Deny** and the action is dropped.
- You have **three minutes**. After that the card expires, the action is abandoned, and the bot says so — ask again if you still want it.

Read the target before you allow it. The card spells out the destination precisely so a near-miss — the right message to the wrong channel — is visible before it happens rather than after.

:::info
**In a direct message, changes to your own records are not gated this way.** Ask the bot to update an offer and it updates it, the same as a teammate would on your instruction. What bounds that is the access level you gave the Fours MCP connection — read-only means it cannot change anything at all, whatever it is asked. Decide there, not here.
:::

## Answering a Question

When the bot needs a choice from you — which organization to create an offer under, which of several matching records you meant — it posts the question with a button for each option. Pick one and it carries on from there.

As with approvals, only the person who asked can answer.

## Handing Work to a Job

Because this is the same agent, you can also ask it to automate something — there is no form to fill in, in Slack or in the console. Tell it what you want to happen and when:

> every weekday at 9am, summarise new AWS entitlements

It creates the [job](/insulin/jobs/) for you, choosing the trigger that matches what you asked — a recurring schedule, an incoming event, or a single run you start yourself.

A job you create this way is yours. It runs with your access and your connections, and it is private to you: only you can see, run, edit or delete it, org admins included. Manage it and read its run history in the **Jobs** app in the console, where every run leaves a record you can open.

### When a job run finishes

When a run of a job you own finishes — one you started yourself, or one on a schedule — the bot sends you a direct message in Slack with the result:

- ✅ **Job finished: {job title}**, followed by the job's output,
- ❌ **Job failed: {job title}**, followed by the error, or
- ⚠️ **Job finished — rate-limited, result may be partial: {job title}**.

Each heading carries an **Open in Fours Insulin console** link to the job's details in the **Jobs** app, where a result too long for Slack can be read in full. Reply in the message's thread to follow up; the bot answers with the result in view.

```d2
direction: right
run: "A run of a job you own\nfinishes (manual or scheduled)"
fours: "Fours finds you by your\nFours email in the Slack\nworkspace your organization connected"
dm: "The bot's direct message:\nfinished, failed, or rate-limited,\nwith the result"
console: "Open in Fours Insulin console:\nthe job's details in Jobs"
run -> fours -> dm -> console
```

You get this message for jobs that run one turn per run and that you own. Jobs triggered by an incoming event, goal jobs, and jobs owned by a channel don't send one. Fours finds you by your Fours account's email in the Slack workspace your organization connected, and only while you are still a member of the organization.

## Troubleshooting

| What the bot says | What it means |
| --- | --- |
| This Slack workspace isn't connected to a Suger organization right now | The Slack integration was disconnected in Fours, but the app is still in your workspace. Ask an org admin to reconnect it under **Settings ▸ Integrations**. |
| I couldn't read your Slack email | Your Slack profile has no email, or the workspace admin has not granted the Suger app permission to read profiles. |
| I couldn't find a Suger account matching your Slack email | No Fours user has that address. Sign up, or ask an admin to invite the address your Slack profile uses. |
| Your Suger account isn't a member of the Suger organization this workspace is connected to | You have a Fours account, but not in the organization this workspace is connected to. The message gives that organization's ID; ask one of its admins to add you. |
| It mentions no Fours data connection | The per-person Fours MCP connection is missing, so it can neither read nor change Fours records — see **Before You Start** above. |
| It says it does not have an integration | That tool is not connected under **your** account. Connect it in the console under **Settings ▸ Integrations**; an organization-level connection does not count. |
| It says it cannot create or change something | The Fours MCP connection is read-only — the default. Reconnect it with **Read & write** under **Settings ▸ Integrations ▸ Custom MCP Servers**. |
| A teammate gets an answer you do not | Each of you runs on your own connections and your own Fours access. Compare what you have connected before assuming the data is missing. |

**The bot does not answer at all.** Check that you mentioned it rather than typing its name as plain text, and that it is in the channel — a private channel needs `/invite @Suger` first. In a direct message, check that the app appears in your Slack sidebar.
