# 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, as in a direct message, only sending a Slack message waits for you.** A mention reaches the same assistant you get in a direct message and in the console — every tool your connections give it, the [MCP servers](/integrations/mcp/) you connected yourself, and [goals](/insulin/agents/#long-running-work) — so it can create and update records from a channel too. What bounds it is the access level you gave each connection and your own Fours permissions, not where you asked. The one action that stops for your approval is posting a Slack message — see [Approving an Action](#approving-an-action).
:::

:::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.
:::

## Sending Files and Images

Attach files to the message you send the bot — in a direct message, or on the message that `@mentions` it in a channel or a thread — and it reads them the way it reads a file you attach in the console: images, PDFs, Word, Excel and PowerPoint files, and text files. Each file is saved to your own Fours file storage, the same place a file you attach in the console goes. What a model can see in a PDF or an image depends on the model; see [File Attachments](/insulin/agents/#file-attachments).

| Limit | Value |
| --- | --- |
| Files per message | Up to 10 |
| Size per file | Up to 25 MB |
| All the files in one message | Up to 64 MB |

- **Only the message that addresses the bot.** Files on earlier messages in a thread are seen by name only, so the bot knows which file "the PDF above" means but cannot open it. To have it read one, attach the file again with your request.
- **Not everything Slack shows as a file can be read.** A canvas or a post, a link to a file kept somewhere else (such as Google Drive or Dropbox), and a file that was deleted or hidden by a free workspace's history limit have nothing to download.
- **A file that can't be loaded is not skipped silently.** The bot is told which file it could not load and why — over 25 MB, past the 64 MB or ten-file limit, a download that took too long or failed (attach it again to retry), or your organization's storage limit — so it can tell you.

If the bot says it can't read Slack attachments yet, your organization's Slack connection was made before the bot could read files. An org admin reconnects Slack under **Settings ▸ Integrations** — see [Configure Notification](/integrations/slack/#configure-notification) for the steps.

## 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.
- **Read a file** — attach a spreadsheet, a PDF or a screenshot to your message and ask about it; see [Sending Files and Images](#sending-files-and-images).
- **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**, it stops and asks — in a direct message and in a channel alike. Rather than acting and telling you afterwards, it posts a card naming the action and its exact target — the text of the message and the channel or person it would go to — with **Allow** and **Deny**.

- 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
**Changes to your own records are not gated this way, in a direct message or a channel.** 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**. |
| It says it can't read Slack attachments yet | Your organization's Slack connection predates the bot reading files. Ask an org admin to reconnect Slack under **Settings ▸ Integrations** — see [Sending Files and Images](#sending-files-and-images). |
| The AI models are busy or at their usage limit right now | At least one model it tried was busy or at its usage limit, and nothing pointed at a broken connection. Nothing needs reconnecting: try again in a few minutes. |
| 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.
