# Onboarding, account linking and Home tab design

*Slack Developer Study Guide · Design a Great User Experience · Last updated October 21, 2026 · https://www.certifyforce.com/study-guide/slack-developer/design-a-great-user-experience/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.

- Certification: Salesforce Slack Developer
- Exam section: Design a Great User Experience
- Study guide: https://www.certifyforce.com/study-guide/slack-developer

**Official exam objective:**

> Build a great user experience that aligns with Slack’s commitment; to make work life simpler, more pleasant and more productive.

## 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

| Fact | Detail | Source |
|---|---|---|
| Install-time preferences | Rate of messages, destination channel and notification types | [App design](https://docs.slack.dev/surfaces/app-design/) |
| Joining channels | Apps should not join all public channels after installation | [Submission guidelines](https://docs.slack.dev/slack-marketplace/slack-marketplace-app-guidelines-and-requirements/) |
| Account mapping | Never manual; use a connect-account step that asks people to authorize | [Submission guidelines](https://docs.slack.dev/slack-marketplace/slack-marketplace-app-guidelines-and-requirements/) |
| Association URL | Carries a stored nonce to a page behind the internal system's login | [Binding accounts across services](https://docs.slack.dev/authentication/binding-accounts-across-services) |
| User emails | Explicit consent before emailing addresses from the Slack API | [Submission guidelines](https://docs.slack.dev/slack-marketplace/slack-marketplace-app-guidelines-and-requirements/) |
| Home tab view size | Up to 100 blocks | [App Home](https://docs.slack.dev/surfaces/app-home) |
| Home tab audience | Useful content for every viewer, authorized or not; only what they may see | [Submission guidelines](https://docs.slack.dev/slack-marketplace/slack-marketplace-app-guidelines-and-requirements/) |
| Overflow menu | Up to five options, for less important actions | [Overflow menu element](https://docs.slack.dev/reference/block-kit/block-elements/overflow-menu-element) |
| Messages tab replies | `chat:write`, `im:history` and the `message.im` bot event | [App Home](https://docs.slack.dev/surfaces/app-home), [message.im event](https://docs.slack.dev/reference/events/message.im) |

## Check yourself

- 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?

## Sources

- [Submission guidelines and requirements](https://docs.slack.dev/slack-marketplace/slack-marketplace-app-guidelines-and-requirements/)
- [App design](https://docs.slack.dev/surfaces/app-design/)
- [App Home](https://docs.slack.dev/surfaces/app-home)
- [Binding accounts across services](https://docs.slack.dev/authentication/binding-accounts-across-services)
- [message.im event](https://docs.slack.dev/reference/events/message.im)
- [app_home_opened event](https://docs.slack.dev/reference/events/app_home_opened)
- [views.publish method](https://docs.slack.dev/reference/methods/views.publish)
- [Select menu element](https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element)
- [Overflow menu element](https://docs.slack.dev/reference/block-kit/block-elements/overflow-menu-element)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 7 linked practice questions, and unlimited timed mock exams are included with the Slack Developer pack (USD $19): https://www.certifyforce.com/practice-exams
