Simple Slack Workflow For Expense Tracking


Blue Blaze
4 min readApr 24, 2020

We use a simple Slack workflow to ensure receipts get uploaded before approving reimbursable expenses. This works well for us because it provides the right prompts for people without creating too many hoops to jump through.

Part 1 — Create a new workflow

The workflow builder is under the main company menu. Just click that little down arrow next to your company name and then click on Workflow builder.

Click Create to start building a new workflow.

Give it a name and click Next.

Select the Actions menu type. This will create a workflow that members can initiate from the actions menu in a specific channel.

Select the channel the workflow should operate in. Here we are using a demo channel, but you will probably want to use something like #fin-expenses. Give it a name and click Save.

Part 2 — Setup the steps

The next screen shows how the steps flow. Click on Add Step and then Create a form.

Give your form a Title, add the necessary questions, and click Save.

We try to keep things as simple as possible, so we just ask for the project and a short description. The project question requires that the submitter select a channel because we make a channel for every project. The submitted response will post in our expenses channel (#demo-workflow in this case).

When you return to the workflow overview, click Add Step. Add a Send a message step.

This next step sends our controller a direct message requesting that they approve the expense and Includes a button to do so.

Next, add a step that outlines what should happen when the approve button is clicked.

Our next step sends a direct message to the person who originally submitted the expense letting them know that it is approved by using the Insert variable option.

Part 3 — Policy or automation?

For us, a few things must happen before an expense gets approved. Most importantly, the submitter must start a thread from the post this workflow creates where they are expected to upload a picture of the receipt.

We use a couple of tactics to make sure these expenses don’t get lost in the wind. If a receipt doesn’t get uploaded right away, our controller uses the same direct message to remind the submitter to upload one. We also rely heavily on creating reminders with Slackbot so we don’t forget to followup. We keep a spreadsheet of reimbursements manually so that we are sure to reimburse our employees and can always audit things if need be.

Much of this extra work could be automated using webhooks and services like Zapier. We encourage you to do so! For us the simplicity of this workflow is what makes it useful, but there’s so many more possibilities.

Here’s the entire workflow for review: