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 myriad channels and DMs.

As we push more of our work into Slack, your team has probably started to try to get things approved there by messaging colleagues for 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. Or, you message a channel for group feedback and all of a sudden you have a sprawling discussion — mixed with half a dozen other discussions. 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 text, 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 Approve and Deny buttons for explicit decision-making.

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. [show screenshot of Wrangle approval]
  • 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. It would be great to have a system of record somewhere documenting the approvals we give.
  • Multi-level approvals. It's often the case that we need to get multiple people from different teams involved in an approval. If Slack had a way to group up those individual approvals into on big decision, we could get more complex decisions done without having a thousand group DMs for all of our decisions. Plus, we might need to route the approval one way or another based on the request. For example, getting a legal sign-off if there is a custom contract to be reviewed.
  • 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:

  • 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, where you can design your ideal approval workflow using drag-and-drop steps. We let requesters fill out a form that you design to give your approvers the context they need to make a decision. Then we Slack those approvers with one-click buttons to approve or deny.

Wrangle approvals in Slack
An approval message triggered in Slack by Wrangle

And it does a lot more: there's a built-in iteration cycle, so the approvers can ask for changes before approving. There's a full audit trail, so you can see who got involved in the decision at every step, what context they had, and when they approved. You can build out a workflow that has multiple different approvers and even assign tasks to people as part of the approval flow. It  connects to 2000 other apps, so you can trigger your Slack-based approval when things happen in other apps or update those apps once you make a decision.

Designing a Slack approval workflow in Wrangle
Using Wrangle to design a Slack workflow for approvals and 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 request access today.

Learn more and request access to Wrangle