Slack App UIGuidelines
Slack App UIGuidelines
App UI Guidelines
Building great user experiences
on Slack
1
Contents
Building Apps for Slack..............................................................................4
2
App UI Guidelines
Contents
Storyboard Your Interactions.....................................................................30
Interactions have a life-cycle................................................................... 30
Pick entry points for interactions.............................................................. 31
Keep messages glance-able.................................................................... 32
Keep text segments bite-sized and conversational................................. 33
Choose sensible default options.............................................................. 35
Cleaning up after your app...................................................................... 35
Appendix..................................................................................................52
App templates.......................................................................................... 52
Onboarding experiences.......................................................................... 56
App stencil......................................................................................63
3
Building Apps for Slack
Building Apps
for Slack
We all want to make our users’ working lives more pleasant and
productive. And we understand that you want as many people in a
workspace to use your app—we do too! This guide is meant to steer
you in the right direction when designing a Slack app.
The best experience will look a little different for every app, but it
will always be one built with the end user in mind.
4
Understand Your Audience
Understand
Your Audience
Slack users are people of all ages, races, genders, and ability levels.
They may have poor internet connections, use Slack only on mobile,
or they might never have used a Slack app before. We want them
all to have a great experience on Slack, so please be sympathetic of
your audience when designing your app. Here are a few factors to
keep in mind:
Timezones
Slack is used in over 150 countries around the world. Even in a single
Slack workspace, there may be users spread out across multiple
timezones. If your app posts messages at a particular time of day,
understand that people may see it at a different time than everyone
else on their team.
Design Tip: If your app sends notifications, allow users to configure when and
how frequently the message is posted, preferably on a per-channel basis.
Team size
Not all Slack workspaces are the same size. There are five-person
non-profits using Slack, and there are 50,000-person enterprise
companies using Slack. Some teams keep their conversations in a
dozen channels, while others create five channels for every new
project or sub-team across their organization.
Thought Starter: If your app uses lists of users and channels, consider how the
experience may be on larger teams. You may need to find ways to abbreviate,
truncate, or paginate lists you display in your UI.
5
Understand Your Audience
Enterprise grid
Enterprise Grid is a tier of Slack that allows large organizations to
communicate across several workspaces. It also introduces new
features, like Shared Channels, which enable cross-organization
communication. In order to support Enterprise Grid, you’ll want to
handle a few new considerations:
Development Tip: The Events API de-duplicates events for you by default
and supports newer platform features like dialogs and actions. The RTM API
should only be used in unique situations when Events API cannot be used
(like IT firewall limitations).
6
Understand Your Audience
Development Tip: Your app can call the users.info method with any user ID
to determine their user type. If your app posts sensitive data that guest accounts
shouldn’t have access to, you may want to call users.info with the ID of any
user that interacts with your app (before posting any information).
7
Understand Your Audience
Every app feature Slack releases is tested across the different Slack
clients, though there will be changes to the way an interface appears
or how a user interacts with your app. Therefore, it’s important to
make sure that you test out your app’s interactivity and messages on
as many screens as you can.
Desktop
Mobile
Thought Starter: One reason people use Slack on their phones is to consume
information quickly. If your app posts messages like notifications or status
updates into channel, think of the mobile experience and make those messages
immediately glanceable.
8
Understand Your Audience
Development Tip: You can add an optional include _ locale for calls
that retrieve information about users and channels (like users.info,
conversations.info, channels.info, im.info).
9
Understand Your Audience
Development Tip: To get a user’s timezone, your app can call the users.info
endpoint and look under at the tz and tz_offset fields. The users.getPresence
and dnd.info endpoints allow your app to view a Slack user’s availability and
Do Not Disturb hours, respectively.
You can see all of the available team and user settings in our Help Center at
get.slack.help
10
Understand Your Audience
Imagine that someone who doesn’t know how to use your app
installs it to their Slack workspace. Or think about the perspective
of others in the same workspace as an installing user, who probably
don’t know that your app was installed. Try to picture the experience
of a user who has never encountered any Slack app before.
Try it out
• Where are your users primary located geographically?
• What segment are your users more likely a part of? Consumer,
Small-to-Medium businesses (SMB), or Enterprise businesses?
• Look back at the different kinds of users in the User roles and
access section and think about the different kinds of users that
will use your app in Slack. Should your app behave differently
for a standard member and a team owner? How about a
standard member and single-channel guest?
11
Voice and Tone: Communicate With Clarity
Well, you do now. Even if the only place it’s used right now is this
one app. So you need to be thoughtful about defining what you
brand voice is. Unless you’re bringing in a seasoned professional
writer to give the thing a real personality, the best thing to do is
think of this voice as an extension of your own voice.
12
Voice and Tone: Communicate With Clarity
No matter how useful the service that your app is providing, it’ll be
for nothing if you annoy people so much they’d rather go through
whatever laborious process they were using before than have to deal
with your overly chipper app one more time.
• If you decide to give gender to your app (and it’s very easy not
to), then be appropriate with the kind of things they should and
shouldn’t say. Don’t be tempted to use it as an excuse to get
lazy about behaviors or phrases stereotypical to any gender (or
to particular age groups, or anything else). You’ll end up driving
people away.
13
Voice and Tone: Communicate With Clarity
Like this
The first example still has plenty of distinctive personality, but gets
straight to the point, and doesn’t risk users tuning out/not wanting to
wade through unimportant content.
14
Voice and Tone: Communicate With Clarity
Be clear
Words and copy used in your interactions should be easily
understood even by someone who doesn’t speak the same language
fluently. That means:
15
Voice and Tone: Communicate With Clarity
Like this
Read over your copy and ask yourself, “Is there anywhere a user may
pause in confusion?” If so, rewrite.
16
Voice and Tone: Communicate With Clarity
Be empathetic
There is a diversity of people using Slack, and we previously
described how important it is to understand that variation in terms
of their ability to use your app properly. But that diversity is also
important when thinking about the tone you use to communicate
with them.
Ensure that your voice and tone has empathy towards every single
person who uses your app. Some basic steps to take include:
• Make an effort to trial your voice and tone with people from a
diversity of backgrounds
17
Voice and Tone: Communicate With Clarity
Congratulations!
18
Voice and Tone: Communicate With Clarity
Try it out
• Brainstorm and list five adjectives that describe your app’s
personality and tone.
19
Outline Your Use Cases
Outline Your
Use Cases
Now is the time to figure out how your app will help make other
people’s working lives simpler, more pleasant, and more productive.
Maybe your app can save people time by posting notifications from
your service into Slack, reducing the number of times they need to
switch between apps. Maybe your app provides a quicker way for
people to get common tasks done — like approving expense reports
or assigning tasks among a team.
20
Outline Your Use Cases
Message structure
Messages are a central interaction point between users and your
app. Your app’s messages are vehicles for all kinds of content and
experiences.
Think about what data you can include in a message that will help
people be productive after they receive it. Maybe the text of a
notification is enough; maybe you want to link out to your service
for more information, or let people take actions from within Slack.
Match your message layout to the work you want people to
get done.
21
Outline Your Use Cases
Blocks let you add rich layouts that structure data in an easily
readable and understandable way. While you may not use every
single block, it’s helpful to know the tools your messages have at
their disposal:
Section
As one of the most flexible blocks, section blocks can be used for text, in
combination with fields, or side-by-side with block elements like images,
buttons, or date-pickers.
22
Outline Your Use Cases
Image
Context
23
Outline Your Use Cases
Divider
Actions
Development Tip: Blocks can be used anywhere you send a message to Slack,
whether it’s using the Web API or webhooks. Dive deeper into block specifics on
api.slack.com/messaging.
24
Outline Your Use Cases
Button
Select Menu
25
Outline Your Use Cases
Date-picker
Overflow menu
26
Outline Your Use Cases
Desktop
Mobile
27
Outline Your Use Cases
Dialogs allow you to use text elements, text-areas, and select menus:
Thought Starter: When quickly prompting users for action, it’s best to use
interactive components in your app’s messages. But if your app needs more
input, like writing ticket details or filling out daily stand-ups, dialogs make more
sense for users and keeps channels clutter free.
28
Outline Your Use Cases
Try it out
• Pretend you’re designing a message that lets users take a poll
and displays the poll results. Draw the message below using the
app stencil included with this book. (Hint: there’s an example of
a polling app in the App templates section of the Appendix)
29
Storyboard Your Interactions
Storyboard
Your Interactions
Storyboarding is a great way to help you figure out the best flow
for interactions in your app. Taking it one step at a time, let’s walk
through designing interactions that will help your users get work
done efficiently inside of Slack.
30
Storyboard Your Interactions
Design Tip: Slash commands are intuitive for a technical audience, but less
usable for general audiences. If you’re designing for more than one kind of user,
giving your app more than one entry point can improve the user experience
across the board.
31
Storyboard Your Interactions
While all of those actions are valuable, it’s difficult to intuit the most
important action to take on the message.
32
Storyboard Your Interactions
Like this
Design Tip: The “Like this” image above is using a context block, which is great
for storing information that may be helpful in a message, but isn’t primary
content. Context blocks can store text, images, and emoji.
33
Storyboard Your Interactions
Like this
34
Storyboard Your Interactions
Say your app helps people buy coffee. Instead of presenting a full
menu of choices every time someone orders, you could make the
user’s last order the default option. In the best case scenario, this
reduces the coffee order to a single click.
35
Storyboard Your Interactions
36
Storyboard Your Interactions
Try it out
Let’s think about your app specifically, about your app’s main
use-case. If you’re designing a helpdesk app, the main use-case is
probably submitting helpdesk tickets. If you’re designing an app that
sends sales leads into Slack, the main use-case is probably sending
actionable notifications. No matter what it is, let’s design it (we’ll
help you through it). Use the app stencil included with this book.
How are users going to initiate with your app? Will they use a slash
command? A message action? Will your app post a notification into
a channel? Draw the entry point below.
How action should a user take after they initiate your app? Should
they interact with actions in your app’s message? Should the user fill
out more information in a dialog? Draw the user’s interaction below.
What happens after a user takes the action? How should your app
respond? Should your app send a message to channel? Should it
update an existing message? Draw your app’s response after the
user takes the action in Step 2.
37
Being a Good Citizen Inside of Slack
Considerate notifications
Notifications can be incredibly useful. Many Slack apps exist
primarily to pipe notifications into relevant channels. Here are some
Slack-specific considerations that can help ensure the notifications
your users want don’t turn into noise.
Design Tip: When your app is first installed, allow the installer to easily set
notification preferences. Consider settings like the rate of notifications, the
channel they should be posted to, and if applicable, the type(s) of notifications
your app should post.
Frequency
Consider how frequently your events are generating notifications for
a user. When it makes sense, offer the user an option to get a digest
of these notifications rather than being alerted for individual events.
This is especially important when the notifications are coming from an
automatic source like service logs. In extreme cases, sending too many
notifications can get your token revoked due to rate limits.
Thought Starter: When your app sends a lot of notifications, users will notice
(and might grow annoyed). This can lead them to remove your app from a
channel or even to uninstall the app from the entire workspace. One way to
mitigate this is by surfacing notification preferences often. Make it simple and
intuitive for people to use your app how and when they want.
38
Being a Good Citizen Inside of Slack
39
Being a Good Citizen Inside of Slack
Some notifications are best as simple text that alerts a channel that
something happened in a 3rd party system. But what if that user
wants to dig into your service after receiving your notification? Or
what if you send a system status that requires immediate action?
You can save people work by adding action elements directly into
your app’s Slack messages. Buttons, select menus, and dialogs let
people react in the moment and get work done faster. If your app is
considerate with alerts and saves people time, they’ll likely find your
app an essential part of their workday.
40
Being a Good Citizen Inside of Slack
• The user is the only one you’re providing a service to, rather
than the team.
It’s worth a note that users probably assume that information shared
back and forth with your app in DM is private. Be aware of any
sensitive information that’s being shared, and don’t surprise users by
announcing results of DM conversations in channel without letting
them know first.
41
Being a Good Citizen Inside of Slack
Responding in channel
Whatever you post in channel is going to be long-lived and add to
the group conversation that people are reading, both in the moment
and later when they may look back at what was shared.
{
response_type: “in_channel”,
text: “It’s 70 degress right now.”
}
42
Being a Good Citizen Inside of Slack
There are very few cases where your app should send broad
mentions like @channel, @here, or @everyone. One exception
might be if your app sends a notification for immediate action when
a critical system or service goes down. Even then, you should get
explicit permission from the installer before your app uses one of
these mentions.
Try it out
• Pretend you’re designing an app that sends notifications to a
#help-it channel every time a help desk ticket is submitted in
your company. How can you make this message actionable to
make it easier for the IT team? Design an actionable notification
below using the app stencil included with this book.
43
Create a Good Onboarding Experience
When people first interact with your app inside of Slack, they may
have varying context about your app and what it does:
• They may have seen others on their team using the app, but not
have used it themselves
44
Create a Good Onboarding Experience
Say hello
It’s a good idea to have an app announce its presence and teach
people how to interact with it. There is, however, a fine line between
being informative and being spammy. Here’s how to do it right:
When someone installs your app, it’s a good idea to DM that person
with a welcome message. A welcome message should be concise,
clearly state what your app does, and include instructions about how
to use it.
Thought Starter: What is the call to action for the installer? Should they add
your app to a specific channel? Should they (or their admin) link a 3rd party
account? Whatever it is, make the call to action clear and actionable from your
welcome message. If it’s not, it’s likely that the installing user won’t configure
your app properly and they won’t get the full value from it.
It may also be useful to listen to the app _ home _ opened Events API
event. This sends your app a payload when a user opens your app’s DM
space. If it’s the first time the user opens this space, it’s an indication
they want to know what your app is and how to use it so it’s a good
idea to send them a welcome message.
However, you should only send the welcome message the first time a
user opens the space, otherwise your app can quickly become noisy
and unhelpful.
45
Create a Good Onboarding Experience
If your app has a bot user, it should say hello when it’s added to a new
channel. In addition to explaining the app’s purpose, the bot user should
give a quick explanation of how to use your app and what configurations
have been set (if any). For example, if your app is going to post a daily
update at 10am, that’s helpful to know.
Design Tip: If your app has help documentation hosted on your website or if
people can DM your app for help, now’s a great time to let them know.
46
Create a Good Onboarding Experience
Thought Starter: What is the call to action for the installer? Should they add
your app to a specific channel? Should they (or their admin) link a 3rd party
account? Whatever it is, make the call to a
Offer help
Onboarding is really about proactively helping people use your app.
Though even after a well-designed onboarding experience, users may
still have questions about your app or may come back later and forget
the onboarding you led them through.
47
Create a Good Onboarding Experience
48
Create a Good Onboarding Experience
Design Tip: If you’re designing an app with more than one workflow, it can be
helpful to offer a select menu in your help message that gives users the option to
kick off any of your app’s workflows to see what they are and how they work.
When your app is @mentioned, a user probably wants to use your app
or doesn’t know how to use your app but wants to learn. This is another
good moment to surface help to the user and allow them to start using
your app as quickly as possible.
Development Tip: Listening to app_mention event in the Events API will send
you a payload every time someone directly @mentions your bot user.
People don’t just want to reach you when they’re critically stuck.
Sometimes, they’ll want to give feedback on simple things like the ease
of going through a particular workflow, or whether a bot successfully
understood their intent. If you have a place to route feedback requests,
provide a way for people to get there inside Slack. Only offer a feedback
channel if you plan to collect and review feedback.
49
Create a Good Onboarding Experience
App suggestions
If they post a link from your website into channel, there’s a good
chance they might want to install your app. As part of the app
directory, your app can suggest users install your Slack app when
links associated with your domain are posted in a channel. This helps
users less familiar with the App Directory or Slack apps in general
find your app in the first place.
Development Tip: You can find HTML code to embed on your website on your
app management page. Or learn more about app suggestions at
https://api.slack.com/docs/slack-apps-suggestions.
50
Create a Good Onboarding Experience
Direct install creates less friction for people thinking about installing your
app. Instead of redirecting them from the App Directory to your site to
install the app, you can provide a Direct Install URL, which simply redirects
the current user to Slack’s OAuth authorize step directly.
Development Tip: The steps to develop a direct install authorization flow can be
found on the API site at https://api.slack.com/slack-apps#direct_install.
Try it out
• Review the Offer help section. Now, using your own app as
an example, design the message sent to your app’s users
when they ask for help. Draw it below using the app stencil
included with this book.
51
Appendix
Appendix
App templates
Templates are designed around common workflows that apps
implement on the Slack platform. Whether you’re designing simple
notifications or something more complex, app templates give you a
designer-approved template to base your app on.
Design Tip: All of the app templates are on the Block Kit Builder, where you
customize them to your app’s needs. Design away at https://api.slack.com/
tools/block-kit-builder.
52
Appendix
Approval templates
Example messages for receiving and responding to requests.
53
Appendix
Notification template
Polling template
54
Appendix
55
Appendix
Onboarding Experiences
This section details onboarding experiences of Slack apps out in
the wild. We’ve included screenshots and descriptions to highlight
parts of the experiences you may be able to use for your own app’s
onboarding design.
Halp
Halp lets you assign, prioritize, and answer internal ticketing
requests from Slack with ease.
Welcome Message
56
Appendix
57
Appendix
Welcome Message
58
Appendix
• This clearly states the different ways you can use the app
in Slack. It also gives users more than one option — while
some users may prefer using slash commands, others may
not (and this app works for both types of users).
59
Appendix
Woobot
Woobot connects your teams in Slack with their important
Salesforce data so they can get things done.
60
Appendix
App Configuration
61
Appendix
62
Appendix
App stencil
A stencil is included with this book that includes all of the major
interface elements you can use with your app — everything from
buttons to dropdowns to emoji reactions. You can use the stencil
to sketch out and storyboard the basic flow of an app before
committing any design or development resources to get an idea of
how your app will feel and discover pieces that might be missing.
At first glance, it might look like a template for just one kind of
app, but the idea is you can mix and match the pieces to suit your
interface. If your app just needs a button to add some action to a
notification, feel free to keep it simple. If you’re building a more
robust back-and-forth workflow with inputs, inline images, and
a dialog, use them all. The stencil also includes width guides for
various elements, like the dialog modal or a divider, so it’s easier to
sketch out those flows of your app too.
And if you don’t have access to the stencil or you want to see the
code that composes your prototyped message, you can use the
Block Kit Builder online at api.slack.com/tools/block-kit-builder.
63
Notes
A blank canvas to storyboard your app, jot down notes, or just doodle
64
Notes
65
Notes
66