Onboarding, account linking and Home tab design
How a Slack app should welcome installers and first-time users, link a Slack account to an external account without manual mapping, lay out a Home tab that works for every viewer and every workspace size, and make the Messages tab answer back.
Build a great user experience that aligns with Slack’s commitment; to make work life simpler, more pleasant and more productive.
~8 min read · 7 practice questions ·
What the exam expects
- Design the first-run experience: let the installer set channel, notification types and message rate, and guide both the installer and first-time users to real value quickly.
- Link a Slack user to an external-service account through that service's own sign-in, and reject any design where people type, pick or upload the mapping.
- Lay out a Home tab that shows useful content to every viewer, puts personal items and core entry points first, hides settings and rare actions, and scales to very large workspaces.
- Make the App Home Messages tab conversational with the right scope and event subscription.
Key terms: App Home (private one-to-one space between a user and an app, with Home, Messages and About tabs); Home tab (a per-user Block Kit view published with views.publish); account binding (securely tying a Slack user ID to a user in another system); association URL (a link carrying a one-time nonce to a page behind the other system's login); Messages tab (the user's direct-message conversation with the app).
Key facts
- Detail
- Rate of messages, destination channel and notification types
- Detail
- Apps should not join all public channels after installation
- Detail
- Never manual; use a connect-account step that asks people to authorize
- Detail
- Carries a stored nonce to a page behind the internal system's login
- Detail
- Explicit consent before emailing addresses from the Slack API
- Detail
- Up to 100 blocks
- Detail
- Useful content for every viewer, authorized or not; only what they may see
- Detail
- Up to five options, for less important actions
- Detail
chat:write,im:historyand themessage.imbot event
Sources for this section (6)
- App designdocs.slack.dev (opens in a new tab)
- Submission guidelinesdocs.slack.dev (opens in a new tab)
- Binding accounts across servicesdocs.slack.dev (opens in a new tab)
- App Homedocs.slack.dev (opens in a new tab)
- Overflow menu elementdocs.slack.dev (opens in a new tab)
- message.im eventdocs.slack.dev (opens in a new tab)
- Why does Slack forbid letting users type their external-service username to link accounts?
- When should an app ask about channel, notification types and message rate?
- What must a Home tab show to a member who has not connected an account?
- Which event tells an app that a user sent it a message in the Messages tab?
The questions are free to read. Answers with their sources and self-grading are included with the pack.
Keep reading with the Slack Developer pack
- Core concepts
- Exam traps
- Worked scenario
The pack includes:
- All 38 lessons of the Slack Developer guide, with reading progress
- Interactive decision walks and step-by-step sequence steppers
- Inline practice questions and one-click topic practice (7 questions for this lesson)
- An official source cited for every claim
- An AI tutor that answers from the guide
- Unlimited timed practice exams