Build an interactive Slack app with message menus

Using message menus to bring more nuanced work into Slack

If communication is the heart of everything we do at work, messages in Slack are the canvas for your app to meet users right where they’re working. From unfurls to message buttons and slash commands, you can use messages to offer up exactly the information or feature someone needs, when they need it.

Some interactions call for more nuanced decision-making than a button or slash command allows, and that’s why we’re introducing message menus: a straightforward bit of UI that provides options a user can take to complete a workflow.

What are message menus?

Message menus are the newest interactive feature for Slack apps: clickable dropdown menus that you can add to message attachments. They can have static options, or they can load dynamically.

You can build with five types of message menu today, each achieving a different flavor of use case: static menus, user menus, channel menus, conversation menus, and live menus. Below, we’ll show you how apps are using them today.

When should you use a menu?

While buttons allow people to make a specific command, sometimes you need a user to decide between many potential actions to move work forward — like assigning an owner, selecting a category, or updating a status . That’s where message menus come in.

Message menus are unique in a couple of important ways. Because they help people navigate large data sets, such as leads from a company database, country codes, or IT tickets from an internal help desk, menus can simplify tasks in Slack that otherwise would have taken several steps.

Because your app can also populate menu options dynamically, you can give people options unique to their preferences or permissions level. Depending on whether the user is a hiring manager or a recruiter, for example, an applicant tracking app could list different actions to take on an incoming job application.

Sixteen apps in the Slack App Directory are already using message menus. Let’s look at a few examples.

Move leads down the funnel with Troops

Static menus give users a set of fixed options. When someone on a sales team wants to move a lead along in their funnel, Troops provides a static menu for users to move a deal from “qualified” to “engaged.” From there, Troops automatically updates the lead in Salesforce so your team can take the next steps needed to move the deal along.

Triage your support inbox with Front

Live Menus load dynamically based on your server’s response. Front’s app uses a live menu to pull in someone’s shared inboxes, so customer service teams can triage incoming support requests to the appropriate place. That way, team members can stay on the ball by collaborating on a response with comments, providing more information related to that request, and assigning an owner.

Manage incidents with OpsGenie

User menus list the members of your team, ordered by the people you interact with most. With OpsGenie’s Slack app, DevOps teams can assign an incident to the team member on call that day. OpsGenie will send that person an alert so they can begin to investigate the problem, add notes for others to see, resolve the alert, or escalate it to another teammate for help.

Conduct quick polls with Polly

You have two ways to let your users share data to another discussion in Slack. Channel menus list someone’s public Slack channels, while conversation menus offer up a combination of direct messages, public channels, and private channels.

When someone uses the team polling app Polly to spin up a poll, conversation menus let them share it with a team member for feedback or an entire channel when it’s ready to be distributed.

How to start building

Message menus build on user interaction patterns previously introduced by message buttons, and this guide shows you how to build interactive messages with both buttons and menus.

If you’re not sure what to create, check out our updated ideaboard for a list of apps we believe would be useful based on discussions we have with Slack customers.

When you’re ready to start building, check out CoffeeBot — an example app we built to help teams coordinate office coffee orders. We’ve updated it with a new module for Node.js that incorporates best practices and patterns for building interactive Slack apps.


Read more on the Slack HQ blog, or get started by reading our documentation. Are you using interactive messages in an internal integration for your team? Tell us your story — we’d love to see what you’ve built.