Rolling out the red carpet

Designing a delightful user onboarding experience for your Slack app

Illustration by Josh Holinaty
This post was co-written by Shane DeWael, Developer Advocate and Amy Wallace, Head of the App Directory. On May 21, they’ll co-host a webinar that dives deeper into this article’s content, with plenty of time for Q&A. Sign up here and join from anywhere!

Onboarding experiences are among the most important interactions you have with users — and it starts before they even know your app exists. A well-designed experience shows off core functionality while communicating clear steps for getting started.

Building your app’s onboarding flow breaks down into three important stages: discovery, initiation, and adoption. Let’s walk through each stage with some recommended best practices.

App discovery

Users can find your app in many places: your homepage, the App Directory, or even through a recommendation from a colleague. No matter the path, given the chance, you should immediately show the value.

Optimizing your app for the App Directory

It’s probable that users will find your app listed on the Slack App Directory. This is where your app can shine, and where you can tell the story of how it will solve the problems your customers are facing.

Here are a few pointers for creating your app listing with your customers in mind:

  • Write a comprehensive description that helps the customer understand what problems your app solves and how it will help them be more productive. Put yourself in their shoes, and think about what language they might use to search for your app or the problem your app is solving. This will help customers find your app more easily.
  • When submitting your app to the directory, you’ll select from a series of categories — like Productivity, Sales, Team Culture, etc.. Select your categories carefully so people can find you app in the directory with ease.
  • Add high-quality screenshots and a video that captures how your app works in Slack. This helps customers get a sense of why and how they would use your app before they install it. Need a place to start? Consult our App Directory submission guidelines, including new design templates.
  • Make sure your support page has an email address, and consider adding some clear support links or guidance on your listing. The better the support resources, the simpler it will be to engage with your app.

Building a streamlined install flow

It’s also important to consider the app install experience. We recommend using direct install, which makes it possible for people to install apps without being directed to another website. This streamlines the installation process and reduces possible roadblocks between your app and eager potential users.

If you’re using direct install, we suggest you still provide your customers with a high-quality and helpful landing page for your app, which you can link out to from your App Directory listing.

Your landing page should have a more detailed description than your app listing, guiding potential customers through what your app will do for their team, how to install and begin using it.

Enabling discovery within Slack

When someone shares a link in Slack that’s associated with your service, Slack will recommend app installation if you have app suggestions enabled. This simple-yet-powerful feature, which unfurls a helpful App Directory link, allows people to instantly install your app.

An app suggestion prompting installation appears when a user posts links associated with your app.

Set up app suggestions on your app configuration page, and read more on our API site.

App initiation

Once a user installs your app, explain its functionality clearly, concisely and respectfully. You may be tempted to DM a welcome message to every user in a workspace, but resist the urge. This will cause confusion, and potentially lead to uninstallation. Generally, you should only direct message the individual installer of your app.

Crafting a quality welcome message

Send a friendly welcome message to the person who installed your app that clearly communicates:

  1. The value your app is adding to their workspace
  2. The primary way(s) to use your app
  3. The next actionable steps

Let’s examine how this applies in a real world scenario.

An example welcome message for a task management app. See it in the Block Kit Builder.
  1. The value is stated upfront: Taskbot will help you create and manage tasks in Slack.
  2. The message explains two primary ways to use Taskbot. If your app has slash commands, create another way to take action, since slash commands tend to be less intuitive for non-technical users. This welcome message highlights both methods for creating a task, including an image to make it even clearer.
  3. The welcome message has an actionable next step: Add Taskbot to a channel.

Let’s dig a little further into other types of actionable next steps for apps.

Prompting user action after installation

Help people adopt your app by prompting them with next steps along the way. Using the same example, TaskBot makes it easy by including an inline call to action, Select a Channel. Like TaskBot, your language should be explicit about what will happen once a user takes action.

Here’s another example of a clear call to action:

An example welcome message for an app that connects to a third-party service. See it in the Block Kit Builder.

The app is prompting the installer to connect a third-party account with Slack.

Tip: Minimize the number of steps by redirecting them to Slack and confirming their account connection, so they can become familiar with your app ASAP.

App adoption

So far, a user installed and completed an action with your app. What’s next? How does the rest of the installer’s team — or cross-functional teams — engage with your app?

Introducing your app to a new team

When someone adds your app to a channel, assume people have little knowledge of what your app does or how to use it. Introduce your app by stating the value you can add to the team, such as why someone added you to the channel and how to get started. This is a great way to tell people where they can go if they forget how to use the app, too.

Anticipating user intent

If someone opens a DM with your app, they’re likely ready to get started. By using the app_home_opened event, you’ll receive a trigger when someone opens a DM, enabling you to respond with a timely welcome message. Use this opportunity to communicate the value of your app and how to access that value quickly.

Tip: Only send a welcome message the first time. Your app will quickly become a spammy nuisance if users receive the same onboarding message every time they open a DM.

You can also share updates using this event when you release a new feature. For example, imagine you’ve added a new message action to your app. The next time a user opens your app’s DM, you might send information on the new action, its value, and how to use it.

Providing usage instructions

Maybe someone stumbles across your app in their workspace. Perhaps they forgot how to use it. There’s also a chance that they want to learn about advanced functionality. In any case, if a user DMs your bot “help,” they are likely looking for instructions on how to use your app.

Explain the functionality of your app in detail and supply an email or website for support. This is important to grow and retain your user base — and it’s required for your app to be listed in the Directory.

Tip: If your app has a slash command, provide how-to instructions when a user types /yourCommand help.

Explore what’s possible

Be attentive to the different ways users might discover or learn about your app. Allow them to access (and re-access) instructional information, and always reiterate the value your app delivers.

Join us on May 21 for a webinar that dives deeper into onboarding best practices, including extensive Q&A with our developer relations team and the head of Slack’s App Directory.

Looking to explore other design concepts for your app? Take a peak at Designing a Great Experience on our API site.


Questions or feedback? Email feedback@slack.com or tweet us @SlackAPI.