How Slack Dialogs Improved our UX

Mark McEahern
Manifestly: The Official Blog
2 min readOct 10, 2017

Slack API unveiled dialogs a week ago. Dialogs are new interactive modals that can capture data from a Slack user, without relying on the message box. Here’s their announcement:

We made an internal commitment to release our own first use of dialogs within a week of their availability. Today, we’re happy to announce our first dialog in Slack: Adding data to checklist steps.

You can collect data with checklist steps on Manifestly. In the previous version of Slack, the only way to gather free form data from a user was for them to send a message to the bot and that looked like this:

This was confusing enough when the user was DMing with the bot. If it was done in a channel, we had additional text to send it “As a mention to the bot?” Wut? Exactly. Don’t make me think. We had no choice but to explain the mechanics since they weren’t obvious and they were not easily discovered.

Slack Dialogs to the Rescue

Dialogs are much better. With dialogs, we can display a form with up to five elements. There’s basic validation of input. And niceties link placeholders and hints. So now the interaction looks like this:

This user experience is MUCH better.

What’s Next

We’ll be using Slack dialogs for commenting on steps, setting checklist titles, and helping users give feedback on their checklist templates.

Our Slack Dialog Wish list

There are a few things we’d love to see…

  1. Dynamic menus in dialogs. Slack notes this limitation is not intended to be permanent. We’re happy about that. As it would mean we could eliminate what is currently a bifurcation in the experience (“More than 100 options in a menu? Can’t use dialog.”)
  2. Date picker type. In analyzing our customers use of our data collection feature, we saw that a curious number of checklist steps had data settings with exactly 365 values. Guess what they were doing? Eliciting a date! Yeah, we can make that much better. Slack doesn’t currently have a date input element, but we can collect a date as text and if it doesn’t parse as a date, we can provide feedback.

--

--