Time Tracking with Slack

Author: Stuart Maynes

Update: we have changed the way we track time at Substrakt so are no longer pursuing the approach outlined in this post. We’ve left the post up in case it provides any useful ideas for other people who may want to consider this way of working.

Tracking time is boring.

But knowing how much time we spend on a particular project is invaluable to us as a business. We recently moved to Slack as our internal communication tool and we wanted to tighten up our time tracking.

The problem

We track our time to client projects using Tick, and while it’s a great bit of kit that tracks time as we need, often we’re too busy to open up the Tick app and track our time and other times we just forget! We needed to devise a way to reduce that friction and make tracking our time seamless and easy.

The solution

Since we all have Slack open during the day (and some of us have it installed on our phones!) to discuss humanity’s inevitable fall to our robot overlords, trade dog pictures, and discuss project work, why not implement a hook to respond to a new ‘/track’ command?

When we track our time, we need four pieces of information:

  • The user tracking
  • The project to track to
  • The task to track to
  • The amount of time to track to

Mark suggested a simple syntax for tracking our time:

/track 3 hours to build

That gives us the time to track and the task to track to. Slack provides us with the project as each project has its own channel, it also provides us with the user to track to.


We created a very small Ruby application that would accept the data from the Slack API, parse it and post that data off to the Tick API. We’re working on open sourcing that code so that anybody can use it.

Once we’ve created that, we can set up Slack to listen for any messages that begin with ‘/track’ and post the message to our Ruby app.



With all that done, we can use our new command:

Screenshot 2015-02-12 11.48.53