Slack-First Onboarding: When Your Product Lives in Slack

When your product lives inside Slack, the usual onboarding playbook goes out the window. No landing page to optimize. No dashboard to tour. No signup form to streamline. Your onboarding happens through conversations, slash commands, and Slack's quirky interface patterns.
This guide covers how to design onboarding for products that exist primarily within Slack.
The Slack-First Context
What Makes It Different
In traditional SaaS, users visit your website, sign up with email, land in your product, and you control the interface.
In Slack-first, users install from the App Directory or a link, authenticate via OAuth with Slack, live inside Slack, and Slack controls the interface. Big difference.
Slack Product Types
Bots are conversational agents that respond to messages. Think standup bots, support bots, notification bots.
Workflow Apps automate processes within Slack. Approval workflows, form collectors.
Integrations connect external services to Slack. GitHub notifications, Salesforce alerts.
Full Apps pack complex functionality into modals and surfaces. Project management, time tracking.
Unique Constraints
You're working with real limitations here.
On the interface side: no custom UI (mostly), message-based interaction, Block Kit for rich formatting, modals for forms, Home tab for dashboards.
On distribution: Slack App Directory is your main discovery channel, workspace admin approval is often required, and installation happens per-workspace.
On user identification: Slack user ID is your primary identifier, you might not have email access, and team/workspace context matters a lot.
Installation Flow
The Install Journey
Discovery → Install Click → OAuth Consent →
Workspace Selection → Permission Grant → Redirect → First Use
OAuth Permissions
Keep Permissions Minimal:
Request only what you need.
Common Scopes:
| Scope | Purpose | User Concern |
|---|---|---|
users:read | See workspace users | Low |
chat:write | Send messages | Medium |
channels:read | See channels | Medium |
channels:history | Read messages | High |
Permission Strategy:
- Start with minimum required
- Request additional when needed
- Explain why you need each
Post-Install Redirect
Options After OAuth:
- Back to Slack:
Redirect to Slack with your app opened.
slack://app?team={team_id}&id={app_id}
-
Web Setup Page:
Show additional configuration.
Brief—users want to get back to Slack. -
Confirmation Page:
Simple success message with next steps.
Best Practice:
Get users back to Slack quickly—that's where they'll use your product.
First-Run Experience
DM Introduction
When App Is Installed:
Send an introductory DM from your bot.
👋 Hey there! I'm [Bot Name], and I'm here to help you [value prop].
Here's what I can do:
• [Capability 1]
• [Capability 2]
• [Capability 3]
Try these commands to get started:
• `/[command] help` - See all commands
• `/[command] setup` - Configure your settings
• `/[command] demo` - See me in action
Questions? Just reply here anytime.
Key Elements:
- Friendly greeting
- Clear value proposition
- Actionable next steps
- Help access
Home Tab Setup
If Using Home Tab:
Design a useful "home base" for users.
┌─────────────────────────────────────┐
│ [Your App] Home │
├─────────────────────────────────────┤
│ 👋 Welcome, [User Name]! │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Quick Actions │ │
│ │ [Create Task] [View Dashboard] │ │
│ └─────────────────────────────────┘ │
│ │
│ 📊 Your Stats │
│ • Tasks completed: 12 │
│ • Team rank: #3 │
│ │
│ ⚙️ [Settings] [Help] [Feedback] │
└─────────────────────────────────────┘
Channel Setup
If App Needs Channel:
Guide users to add your app to relevant channels.
To get started, add me to a channel:
1. Go to any channel
2. Type `/invite @[bot-name]`
3. I'll introduce myself there
Or click here to choose a channel:
[Add to Channel]
Conversational Onboarding
Progressive Disclosure
Don't Dump Everything:
Introduce capabilities as users need them.
Conversation Flow:
User: /taskbot help
Bot: Here are the basics:
• `/taskbot create` - Create a task
• `/taskbot list` - See your tasks
Want to learn more? Type `/taskbot help advanced`
Teaching Through Use
When User Takes Action:
User: /taskbot create Buy groceries
Bot: ✓ Task created: "Buy groceries"
💡 Tip: Add a due date with `/taskbot create Buy groceries due:tomorrow`
[View Task] [Mark Complete]
Handling Unknown Commands
Turn Errors into Learning:
User: /taskbot remove task-123
Bot: I don't recognize "remove" 🤔
Did you mean:
• `/taskbot delete task-123` - Delete a task
• `/taskbot done task-123` - Mark as complete
Type `/taskbot help` for all commands.
Interactive Onboarding
Using Modals
For Setup Flows:
User: /[app] setup
Bot: Opens modal:
┌─────────────────────────────────────┐
│ Setup Your Preferences │
├─────────────────────────────────────┤
│ How would you like reminders? │
│ [Dropdown: DM / Channel / None] │
│ │
│ Default channel for updates: │
│ [Channel selector] │
│ │
│ Time zone: │
│ [Time zone picker] │
│ │
│ [Cancel] [Save Settings] │
└─────────────────────────────────────┘
Using Buttons
Guide Actions:
Welcome to [App]! Let's get you set up.
What would you like to do first?
[📋 Create First Task]
[⚙️ Configure Settings]
[📚 Watch Tutorial]
[💬 Explore Commands]
Using Workflows
For Multi-Step Onboarding:
Slack Workflow Builder can create structured onboarding:
Step 1: Welcome message
Step 2: Setup form
Step 3: Channel selection
Step 4: First action prompt
Step 5: Success confirmation
Permission Patterns
Just-in-Time Permissions
Don't Ask for Everything Upfront:
User: /app analyze #marketing
Bot: To analyze channel activity, I need permission
to read messages in #marketing.
[Grant Permission] [Learn More]
Explaining Permissions
When Sensitive:
You're about to enable message monitoring.
What this means:
• I'll read messages in selected channels
• Used to: Track project mentions
• I won't: Store message content permanently
Your data is: Encrypted and never shared
[Enable] [Cancel] [Privacy Policy]
Channel vs DM
When to Use DM
Personal Information:
- Settings and preferences
- Private notifications
- Sensitive data
Individual Actions:
- Personal tasks
- One-on-one interactions
- Account management
When to Use Channel
Team Information:
- Team notifications
- Shared data
- Collaborative features
Visibility:
- Status updates everyone should see
- Team achievements
- Shared workflows
Guiding Users
Help Users Choose:
Where should I post daily standups?
💬 DM - Just you
📢 Channel - Your team
[Choose DM] [Choose Channel]
Slash Command Design
Command Structure
Discoverable Commands:
/app → Quick actions menu
/app help → All commands
/app [action] → Specific action
/app [action] [params] → Action with parameters
Help Command
Essential for Onboarding:
User: /taskbot help
[TaskBot] Here's what I can do:
📋 Tasks
• `/taskbot create [task]` - Create a task
• `/taskbot list` - See all tasks
• `/taskbot done [id]` - Complete a task
⚙️ Settings
• `/taskbot settings` - Your preferences
• `/taskbot notify [on/off]` - Toggle notifications
📊 Reports
• `/taskbot summary` - Weekly summary
• `/taskbot stats` - Your stats
Need more help? Try `/taskbot help [command]` or DM me!
Smart Defaults
Reduce Required Input:
User: /standup
Bot: Good morning! Let's do your standup.
(I'll post to #team-standups at 9am as usual)
What did you do yesterday?
[Type your response...]
Measuring Slack Onboarding
Key Metrics
Installation:
- Install rate from App Directory
- OAuth completion rate
- Workspace vs. user installs
Activation:
- First command used
- First meaningful action
- Bot interaction rate
Engagement:
- Commands per user
- Daily/weekly active users
- Feature adoption
Tracking in Slack
Events to Track:
// Pseudo-code for event tracking
trackEvent('app_installed', {
workspace_id,
installer_user_id,
install_source
});
trackEvent('first_command', {
user_id,
command,
days_since_install
});
trackEvent('feature_used', {
user_id,
feature,
context
});
Funnel Analysis
Installs: 1,000
First command used: 700 (70%)
Setup completed: 500 (50%)
Weekly active: 300 (30%)
Monthly retained: 200 (20%)
Common Mistakes
Mistake 1: Too Many Messages
Problem: Overwhelming users with DMs.
Fix: Consolidate, use threads, respect attention.
Mistake 2: No Clear Start
Problem: User installs but doesn't know what to do.
Fix: Clear first-run message with specific action.
Mistake 3: Complex Commands
Problem: Hard-to-remember command syntax.
Fix: Simple commands, buttons for common actions.
Mistake 4: Ignoring Context
Problem: Same behavior in DM and channel.
Fix: Adapt to context (private vs. public).
Mistake 5: No Help Access
Problem: Users get stuck with no guidance.
Fix: Always-available help command, DM support.
Advanced Patterns
Onboarding Checklist in Home Tab
┌─────────────────────────────────────┐
│ Getting Started │
│ ━━━━━━━━━━━━━━━━ 50% │
│ │
│ ✓ Install app │
│ ✓ Configure settings │
│ ○ Add to a channel │
│ ○ Create first [item] │
│ │
│ [Continue Setup] │
└─────────────────────────────────────┘
Interactive Tutorial
Bot: Want a quick tour? (takes 2 minutes)
[Start Tour] [Maybe Later]
User: [clicks Start Tour]
Bot: Great! Let's create your first task.
Type: `/taskbot create Learn TaskBot`
User: /taskbot create Learn TaskBot
Bot: ✓ Perfect! You created a task.
Now let's see your tasks:
Type: `/taskbot list`
...
Workspace Admin Flow
For Apps Requiring Admin Setup:
Hi [Admin]! You installed [App] for your workspace.
Before your team can use it:
1. [Choose default channel] - Required
2. [Set team preferences] - Optional
3. [Invite to channels] - Optional
[Complete Setup]
Once done, your team will get a welcome message.
The Bottom Line
Slack-first onboarding means embracing Slack's conversational nature. The best Slack apps feel native. They teach through interaction, respect Slack's patterns, and meet users where they already are.
What matters:
- Clear first-run message with one next action
- Teach through use, not docs
- Buttons and modals for complex flows
- Simple, discoverable commands
- Respect the conversational context
Your goal is making your Slack app feel like a natural part of how teams already work. Not some foreign tool they have to learn.
Continue learning: Integration Onboarding and Chrome Extension Onboarding.
Frequently Asked Questions
How do I design onboarding for a Slack app or bot?
Start with a clear DM introduction stating your value prop and actionable commands. Use progressive disclosure to teach through use rather than documentation. Leverage Slack's Home tab for setup checklists, buttons for guided actions, and modals for configuration flows.
What should a Slack bot's first-run experience include?
Send an introductory DM with a friendly greeting, clear value proposition, 2-3 key capabilities, actionable slash commands to try, and help access. Include buttons for common first actions like 'Start Tour' or 'Configure Settings' to guide users toward activation.
How do I handle slash command design for Slack app onboarding?
Keep commands simple and discoverable with a consistent structure: /app for quick actions, /app help for all commands, /app [action] for specific tasks. Include smart defaults, turn errors into learning opportunities with suggestions, and always provide an accessible help command.
What metrics should I track for Slack app onboarding?
Track installation metrics (install rate, OAuth completion), activation metrics (first command used, first meaningful action, days since install), and engagement metrics (commands per user, daily/weekly active users, feature adoption). Analyze your funnel from installs through weekly retention.
What are common mistakes in Slack bot onboarding?
Common mistakes include overwhelming users with too many DMs, providing no clear starting action after install, using complex hard-to-remember command syntax, ignoring context differences between DMs and channels, and not providing accessible help when users get stuck.
