A developer builds a Slack bot and picks a clean, obvious username: notify. It installs into a workspace without any error, so everything looks fine. Somewhere in that same workspace, though, someone already has a bot or a user with that exact username. Slack does not reject the install and does not prompt for a different name. It silently appends a number, turning the chosen username into notify2 without asking. The developer only finds out when a teammate mentions the bot in a message and the auto generated version shows up on screen. This is one of several naming quirks in Slack app development that only becomes visible after the fact, not before it.
A Slack bot has two names, and they follow different rules
A Slack bot has a display name and a username, and Slack's own developer documentation treats them as two separate fields with two separate rule sets. The display name is what other users see when the bot posts a message or when someone views its profile, and it has no strict formatting rules attached to it. The default username, the string used when someone mentions the bot with an at symbol, follows Slack's regular username guidelines directly: lowercase letters, numbers, underscores, dashes, and periods only, capped at under 22 characters. These are enforced rules, not suggestions. A display name can read as Deployment Notifier, with capital letters and a space, while the username tied to that same bot has to be something like deploy-notify to actually be valid. Most developers name the display name first, treating it as the bot's identity, then treat the username as an afterthought, when the username is actually the field carrying the hard technical constraints. This two field split mirrors a pattern that shows up elsewhere in developer tooling, including the same two name pattern covered in NameKit's VS Code extension guide.
What happens when your username is already taken
This is one of the more surprising parts of Slack's naming system, and it is worth explaining precisely. When a bot is installed into a workspace where its default username is already reserved, whether by an existing user, another bot, or a different app, Slack does not block the installation and does not prompt the developer to pick a different name. It silently modifies the username by appending an incrementing number, so a username like notify can become notify2 without any warning at install time. This means the exact username you tested and confirmed during development is not guaranteed to be the one that actually appears once your app is installed into someone else's workspace. There is no way to reserve a username globally across Slack the way you can check availability on npm or GitHub, since usernames are scoped per workspace, not globally unique. The practical implication follows directly: choose a username specific enough that a collision is unlikely, since a generic single word like bot or notify is far more likely to already be taken in an active workspace than something more descriptive.
Naming rules that apply beyond the username field
The username collision problem is not the only naming decision a Slack app developer has to get right. Slack enforces at least three more rule sets across different parts of an app, and each one has its own logic and its own consequences for getting it wrong.
Avoid trademark conflicts in the display name
Slack's own guidance instructs developers to pick a name representative of the brand and function of the bot, while being careful not to violate trademarks or existing brand names. This is not a stylistic suggestion. It is the same category of constraint covered in Chrome extension naming, a real compliance concern rather than a matter of taste. A display name that borrows too heavily from an existing product's branding can create the same kind of review friction that Chrome extension developers run into, which is the same trademark caution covered in NameKit's Chrome extension guide. Treat the display name as a real brand decision, not a placeholder you can fix later.
Slash command names have their own readability standard
For apps built with Slack's Bolt framework, slash commands need a descriptive name that stays easy to remember and easy to type, since users type it manually in the message box every single time they use it. A slash command lives in the message box the same way a CLI command lives in a terminal, and the same friction rules apply, which is the same typing ergonomics developers already deal with when naming command line tools. A slash command that is too long or too close to an existing command creates that same daily friction problem. Short, typeable, and unambiguous wins over clever every time.
Channel names follow yet another, stricter rule set
If your bot creates or references Slack channels programmatically, channel names must be lowercase, cannot contain spaces or periods, and are capped at 80 characters, using hyphens or underscores to separate words. This is a fourth distinct naming rule set inside the same platform, separate from the display name, the username, and the slash command conventions already covered above. A bot that generates channel names dynamically needs to sanitize its output against this rule set specifically, since none of the other naming rules on this page carry over to it automatically.
A pre-launch naming check for a Slack app
- 01Confirm your default username is lowercase, uses only letters, numbers, underscores, dashes, and periods, and stays under 22 characters, since Slack enforces this format directly.
- 02Choose a username specific enough that a collision in an active workspace is unlikely, since Slack silently appends a number rather than warning you when your chosen username is already taken.
- 03Check your display name against Slack's own guidance on trademark and brand name conflicts before finalizing it.
- 04If your app includes slash commands, confirm each one is short enough to type from memory and does not closely resemble an existing common Slack command.
- 05If your app creates channels programmatically, confirm any generated channel names are lowercase, contain no spaces or periods, and stay under the 80 character limit.
Name the bot, then plan for the name that actually ships
A Slack bot's name is not one decision. It is several, spread across different fields with different enforced rules, and the username specifically can change without warning depending on which workspace it lands in. Before you settle on a single display name, it helps to generate a wider pool of candidates and narrow from there. NameKit's Project Name Generatoris a reasonable starting point for producing that pool of display name candidates before you check any of them against Slack's username format and pick a final, valid version.
Frequently asked questions
What is the difference between a Slack bot's display name and username?
The display name is shown when the bot posts messages or its profile is viewed, with no strict formatting rules. The username is the string used when someone mentions the bot with an at symbol, and it must follow Slack's format rules: lowercase, numbers, underscores, dashes, periods, under 22 characters.
Can two Slack bots have the same username?
Not within the same workspace. If a bot's default username is already taken when installed, whether by another bot, an app, or an existing human user, Slack automatically appends an incrementing number to create a unique version, without prompting the developer or warning anyone in advance that the change happened.
Are Slack usernames globally unique like GitHub or npm names?
No. Slack usernames are scoped per workspace, not reserved globally. A username that is available in one workspace may already be taken in another, so there is no way to permanently claim a username across all of Slack the way you can on other platforms.
Do Slack channel names follow the same rules as bot usernames?
No, they are a separate rule set entirely. Channel names must be lowercase, cannot contain spaces or periods, and are limited to 80 characters, using hyphens or underscores between words, which is a noticeably longer limit than the 22 character cap enforced on bot usernames themselves.
Should my Slack bot's name include my company or product trademark?
Only your own trademark, and even then with care. Slack's guidance instructs developers to choose names representative of their own brand and function while avoiding violating other existing trademarks or brand names, which applies to any third party marks referenced in the name.