Managing approval workflows in Slack

For most of us, Slack is the default way we communicate, replacing the email inbox.  We spend a huge portion of our day there, between a myriad of channels and DMs.

As you push more of our work into Slack, your teams have probably started to try to get things approved there by messaging a manager or colleagues for feedback and sign-off. Some of these decisions are really important to get right, but we've all been frustrated about how things can slip through the cracks in Slack DMs.

How teams mess up their approvals in Slack

Slack gives us a lot of flexibility in creating conversations, but that free-wheeling approach causes chaos when you need to make structured decisions. Since Slack doesn't have a built-in approval workflow, here are a couple problems we've run into while using chat for our approvals:

  • Nagging people to get a review. You message someone for approval, they're in a meeting, and they forget to mark it unread. Days later, you're left pinging them to remind them that you need a decision. It's even more difficult when the approvers are on other teams or are your manager — nagging can get awkward, fast.
  • Getting lost in a busy channel. If you message a channel for group feedback, sometimes you get a sprawling discussion — mixed with half a dozen other discussions in the channel. Employees in other time zones might miss the request entirely when they start their day with hundreds of unread Slacks. Plus, in busy channels it becomes impossible to quickly see who actually approves. Does their emoji response mean they are ok with the decision? Do they have any reservations or are they agreeing with the crowd?
  • Having to go back and ask for more information. When people ask for approvals in freeform messages, they often forget to include vital information. So, you have to reply and outline all the things you need to know — for example, needing to get clarification in a purchase request on how many users will be using some new software. If you could structure these into a form, life would be much easier.
  • Not documenting the decision. Lots of decisions need to be auditable later. If someone is asking to purchase some software for their team, what do you do when the VP of Finance comes knocking asking who approved it? If it's 3 months back in a DM with that person, it becomes really hard to drive accountability later on.
  • Not closing the loop. Besides the decision getting lost, there are also problems taking action on the decision. After you get approval to hire someone, the offer needs to get sent out, HR notified, their contract signed, etc. Someone has to manually kick off all those things, but we forget steps along the way, so the loop never gets closed.

What the ideal Slack approval process would be

If we're going to make Slack approvals work, we've got to overcome some of the limitations of freeform chat. Ideally, we introduce a little structure and documentation to these decisions, while still making it dead simple for approvals to take place.

A Slack message with approval buttons, created by Wrangle

Here are some things that would be helpful:

  • Buttons to approve or deny. If you're a developer, Slack gives you lots of ways to add buttons to messages. What if we could have a bot that messages the approver with one-click buttons to approve or deny? Now we wouldn't have to try to interpret their emoji or a vague response — we get an explicit decision.
  • Ways to request changes. Most of the time, when we aren't ready to approve, we want the person to make some changes. So, if we're going to have these explicit ways to approve or deny, we probably need a way to iterate with the requester before we give the final go-ahead.
  • Documentation of approvals. Slack has a long history of all of our conversations, but it's sometimes hard to find the needle in the haystack. This is especially critical if you rely on an emoji response to give approval — there's no way to search for that. Worse, if you gave the approval in a group DM, it's hard to remember the members of that specific DM to find it again. It would be great to have a system of record somewhere documenting the approvals we give that could be searched more easily than messages.
  • Multi-level approvals. It's often the case that we need to get multiple people from different teams involved in an approval. Oftentimes, you need your immediate manager to approve, and only then you need to go get legal, IT, or finance approval as well. If Slack had a way to group up those individual approvals into one big decision, we could get more complex decisions done without having a bunch of DMs for all of our decisions. And, we'd be able to see the full paper trail of complex decisions.
  • Closing the loop. Most of the time, an approval drives a follow up action. It would be nice if our Slack workflow could also handle assigning someone a task. In an employee onboarding scenario, we might approve hiring someone but then need to assign someone to send the offer details to the candidate.

What kinds of approvals make sense in Slack?

Since Slack is replacing our inboxes as the place we get notified, it makes sense to be the hub of all of our approvals. Here are some things we've wanted to use Slack for:

  • Triaging requests from other teams. We often have a public channel where other teams come to post. requests for help (like a CX team coming to engineering to report a bug, or sales asking marketing to create a document for them). To make sure they don't inundate the team, a manager could approve which requests are ready for action.
  • Sales quotes and contracts. There are many people that get involved in complex deals, like finance, legal, delivery teams, engineering, and sales management. Making this a simpler process would be ideal.
  • Purchase requests. Definitely one of the most common requests for approval. Seems ideal for Slack, but we need to document who approved and for how much spend.
  • New hires: Another process where many people get involved, and the decision is a consequential one.
  • HR requests like PTO or time sheets. We need to handle lots of different processes that involve our teams. They're already in Slack, so it seems like the perfect place to handle things like requests for time off.
  • Customer onboarding. When we sign up new customers, we have a mix of tasks that need to get assigned and work items to get approved when we're doing services for a client. A lot has to happen across multiple teams to make sure we deliver successful implementations.

Ways to do more complex approvals in Slack

1) Use tools that have Slack notifications

Figma notification
A notification of a review comment from Figma, the design tool.

Many tools, especially design tools like Figma or engineering tools like Github, have Slack notifications. A lot of the time, these notifications are about work that is being commented on or reviewed. So, for limited use cases, these can handle some of our ideal approval workflow features.

Pros: Built-in Slack notifications

Cons: Not flexible, only work for a specific use case, often limited to just one team's work

2) Have a developer build a Slack bot

Slack bot code
Writing code for an approval Slack bot.

We mentioned before that developers can write code to add buttons to messages from bots they create. So, we could have a developer build an approval workflow into Slack for us. Then, when we want to do a certain approval like a purchase request, we could have them program our bot to message the right person with buttons to approve or deny. They could then store that decision in a database or spreadsheet so that we could review them later.

Pros: Would give us approval buttons and auditability

Cons: Requires writing code, probably requires focusing on just one kind of approval. Would require more custom code to notify the next person in the workflow to close the loop and take action on the approval.

3) Build a Slack bot in a no-code tool

Building a Slack workflow in Zapier
A Zapier automation using Slack

Like #2 above, we could also use "no-code" tools (visual drag-and-drop programming and automation tools) to build our own approval Slack bot. For example, we could use an automation platform like Zapier or tray.io. We could create an automation flow that sends a message with approve and deny buttons, and then build two more flows: one to handle an approval and one to handle a denial. These latter two flows could close the loop and assign some tasks to someone in a task tracking tool once the decision is approved. Here's an article on how to build one of these bots in tray.io.

Pros: Would give us approval buttons and trigger task assignment after we get an approval

Cons: Can be pretty complicated, since we need to visually program several flows to make an approval work. Similar to writing custom code, we would need more work to support many different kinds of approvals. We'd also need to automate logging the decisions to a database or spreadsheet.

4) Use a dedicated Slack approval tool like Wrangle

Solving this problem with approvals and workflows in Slack is why we built Wrangle. Wrangle is an app for Slack that lets you start an approval in any channel.

Options for starting an approval in Wrangle.

You start an approval from the shortcut menu (the ⚡️ icon next to the message reply box) or by clicking the "..." menu on a message. The person starting the request can pick as many reviewers as they want and can specify whether they want all of them, or any one of them, to approve.

Wrangle posts the approval as a threaded message in a channel, tagging reviewers so they get a notification.

The approval message gets posted as a thread in the channel, so anyone can follow along. The thread has Approve and Deny buttons for the reviewers, and shows who has reviewed and who hasn't yet. Since it's already a thread, discussion can happen there without clogging up the main channel.

When the approval is done, Wrangle notifies the person who requested the approval. Even better, the approvals are integrated with Slack Workflow Builder so you can then trigger second-level approvals or follow-on tasks.

Wrangle is built to be flexible, so you can use it for any approval or workflow you want to accomplish in Slack, from sales quoting to employee or customer onboarding. It's free to get started, so learn more and try it in your Slack workspace today.