# What is a Slack bot? Three different things share the name

> Webhook, bot user, agent: what actually differs, and which one you want.

Source: https://heyray.io/blog/what-is-a-slack-bot

Three different things answer to the same name

**A Slack bot is software that posts or acts inside Slack. The name covers three different things: an incoming webhook, which posts to one channel and has no identity to talk back with, a bot user, which is an app with its own presence in the workspace, and an agent, which is a bot user that decides what to do rather than waiting to be told.**

## Key takeaways

- Three different things are called a Slack bot, and they differ in whether they have an identity at all, whether they can read anything, and whether they decide for themselves.
- An incoming webhook is a URL you post to. It puts a message in one channel, cannot read, cannot be replied to, and has no presence in the workspace. Most build-your-own tutorials teach this one.
- A bot user is an app with its own identity in the workspace. It appears in the member list, can be added to channels, and can be talked to.
- An agent is a bot user that decides. Same install, but instead of answering a command it reads what is happening and works out whether something is worth doing.
- The question worth asking about any of them is not what it does. It is whose account it does it from: a bot token is tied to the app, a user token acts as the person who installed it.
- No bot sees every channel. It sees the channels it has been added to, and only the scopes granted at install.

Published 2026-08-26. About 5 minutes to read.

A one-way webhook and an autonomous agent are both called Slack bots, and the gap between them is the whole decision. The difference shows up in one place: whose identity the thing acts under.

## What are the three things called a Slack bot?

Start with what they can and cannot do, because that is what the word is hiding.

- An incoming webhook is a URL you post to. It puts a message in one channel. It cannot read anything, cannot be replied to, and has no presence in the workspace. Most build-your-own-Slack-bot tutorials are teaching this.
- A bot user is an app with its own identity in the workspace. It appears in the member list, can be added to channels, can read what it has been given permission to read, and can be talked to. Almost everything you install from the Slack directory is this.
- An agent is a bot user that decides. Same installation shape, but instead of answering a command it reads what is happening and works out whether something is worth doing.

|  | Webhook | Bot user | Agent |
| --- | --- | --- | --- |
| Has an identity | No | Yes | Yes |
| Can read | No | Channels it is in | Channels it is in |
| Can be replied to | No | Yes | Yes |
| Decides for itself | No | No | Yes |

The first is a pipe. The second is a participant. The third is a participant with judgement, and the difference between the second and the third is not visible in the install flow at all.

## Whose identity does a Slack bot act under?

Slack issues different tokens for different kinds of access, and the distinction is the one thing worth understanding before installing anything.

Slack documents that bot tokens represent a bot associated with an app installed in a workspace, and that unlike user tokens they are not tied to a user's identity, only to the app. That is why a bot survives the person who installed it leaving the company.

User tokens are the other case. Slack documents that they represent workspace members, issued for the user who installed the app and for users who authenticate it. An app holding one acts with that person's access, and a write it makes lands as if that person made it.

So the useful question about any Slack bot is not what it does. It is whose account it is doing it from.

## What can a Slack bot actually see?

Permissions in Slack are granular. An app asks for specific scopes and gets exactly those, which is why the install screen lists them one by one instead of asking for blanket access.

The practical consequence people miss: a bot user in a workspace does not see every channel. It sees the channels it has been added to. A private channel it is not in is invisible to it, and no amount of workspace-level permission changes that.

## Which kind do you actually want?

If you need a build to announce itself in one channel, a webhook is correct and anything else is overhead.

If you need something people talk to, you need a bot user. If you need something that notices, you need the third kind, and the honest test is whether you want to keep typing the command. A bot that only responds to a slash command is a faster way to do work you were already doing. A bot that reads the channel is doing the noticing for you, which is a different product and a different set of risks.

## Which kind is Ray?

Ray is the third kind. It installs as a bot user with its own identity, reads the channels it is added to, and decides for itself whether something in a conversation is worth acting on rather than waiting for a command.

Where it acts on your other tools, it connects with each person's own account, so a ticket it files in Jira is filed as the person who asked. Anything that writes, sends or spends asks for approval first. Reads never do.

If Ray is already in your workspace, try this in any channel it is in:

```
@Ray what have you got open for us right now?
```

## What Ray does not do here

- Ray reads only the channels it has been added to. A private channel it is not a member of is invisible to it, exactly as it is to any other bot user.
- Ray does not act under your personal Slack account for its own messages. It posts as itself, so anything it says in a channel is attributable to it and not to you.
- Ray never writes, sends or spends without asking first. That is a fixed rule rather than a setting, and it means it is slower than a script for work you already trust.
- Judging whether a conversation is worth acting on is the model's call, and in a busy channel it is deliberately biased towards silence. It will stay quiet on some things a person would have flagged.

## What people ask next

**Is a Slack app the same as a Slack bot?**

Not quite. An app is the installable unit. A bot user is one thing an app can include, and it is the part that appears in your workspace with a name and can be added to channels.

**Can a Slack bot read all my messages?**

No. It reads the channels it has been added to, and only the scopes it was granted at install. A private channel it is not in is invisible to it.

**What is the difference between a webhook and a bot?**

A webhook is one-way. You post to a URL and a message appears in one channel. It cannot read, cannot reply, and has no identity in the workspace. A bot user is a participant with its own presence and its own permissions.

**Does a Slack bot stop working if the person who installed it leaves?**

A bot token is tied to the app rather than to a person, so it survives. An app holding a user token acts with that person's access and does not.

## Sources

- Slack, token types: https://docs.slack.dev/authentication/tokens. The definitions of bot tokens and user tokens quoted above, including that bot tokens are tied to the app rather than a user's identity, come from this reference.
- Slack, Web API and Events API overview: https://docs.slack.dev/apis/. Cited for the distinction between apps that call the Web API and apps that subscribe to the Events API to be pushed activity, which is the mechanical difference between answering and noticing.
