Automated time tracking with Butler & Plus

UPDATE: see this note

Butler for Trello is an amazing automation tool. It can now also automate your Plus time tracking based on the card's time spent in lists, age and recurring events. It works even if the user has not installed Plus or is using Trello from mobile.

Make Plus reports and charts grouped, stacked or filtered by time in lists. There are many ways to take advantage of this integration. Here are some ideas:

Track time when the card moves to “Done”

Let's assume a workflow with three lists “To Do, Doing, Done”. We want to track time spent on the list before it moves to “Done”.
Butler command:
when a card is moved into list "Done", post comment "plus! @{username} {cardhoursinpreviouslist}/{cardhoursinpreviouslist} list time in {triggercardpreviouslistname}"

It automatically runs every time anyone moves a card to “Done”. It adds a “Plus” card comment that will increase both S and E by the hours spent in the previous list with a note like "list time in Doing". It assumes that:
  • Your units are “hours” (Butler supports Days/Hours/Minutes just like Plus)
  • Your Plus keyword is “plus!”
  • The user moving the card to “Done” is the one that spent the time.
  • The card was not previously estimated.

To track time based on the card's age, replace the list time variables for one of {cardagedays}, {cardagehours}, {cardageminutes}. However, beware of cards that later move out of "Done" and come back to "Done", they will be double-counted! A safer way is to track all list movement, not just when it moves to "Done", then sum those times in Plus reports.

If your cards are always estimated or  [R]ecurring, change the command to:
when a card is moved into list "Done", post comment "plus! @{username} {cardhoursinpreviouslist} list time in {triggercardpreviouslistname}"
which does not increase E except for Recurring cards.
See the Plus card comment format for more details on this difference.

{username} in Butler is the user that moved the card. You may also use {creatorusername} for the user who created the card. Butler has many more “variables” you can use as part of the command.
If the card must come from “Doing” start the command with:
when a card in list "Doing" is moved into list "Done",

Track time when a card label is added or removed
You might want a more explicit “time tracking” action from users, for example adding a special label to the card can add the list time. For this, name a board label “timer” and create this Butler command:
when a "timer" label is added to a card, post comment "plus! @{username} {cardhoursinlist}/{cardhoursinlist} list time in {triggercardlistname}", and move the card to list "Done", and remove the "timer" label from the card

Whenever anyone adds the special label, Butler will add the time spent in the current list, move the card to “Done”, and remove the label. We use {cardhoursinlist} and not {cardhoursinpreviouslist} because the card has not yet moved out of the list when the command is triggered.
We assume that the card was moved to the current list when work started. The list name is also captured in the "note" to use later in Plus filters.
It is important that the command also moves the card out of the current list (and move the card to list "Done") and removes the label (and remove the "timer" label from the card) so if the card is moved back to "Doing" the label method will work again.

The previous commands can stop a timer implicitly or explicitly. If you instead want to explicitly start and stop a timer you could create two Butler commands: The first would act when adding a label "timer" to just move the card to “Doing”, and a second command so when the “timer” label is removed, post the Plus time comment and move the card to “Done”. Time starts when adding the label and stops when removing it. Just make sure the card is not already in “Doing” when adding the label.

Track recurring meetings

Butler lets you set time-based triggers, for example:
every monday at 9:00 am, find a card with title "Weekly Meetings", and post comment "plus! @bill @tom @laura 1/1 weekly meeting"
will add one unit to the S/E for bill, tom and laura. See the Plus card comment format for more details on adding time to multiple users in the same command.

Reports and Charts

In the first two examples we wrote the list name in the card comment, as part of the Plus “note” at the end. “time in Doing” etc. Since Plus supports group-by “note”, you can chart time spent in lists with a chart like this:
For a chart by time spent per board, stacked by list. Further filter, for example by Note "time in" so it only shows S/E for time in lists (due to the way we configured the Butler commands above).

Plus charts support many more groups and stacks. For example, stack by card to quickly find cards with large times (grouped by Board & list):

If you dont need multiple boards in reports, start the report by first going to the board, then clicking the report button top-right, or use the Chrome Plus menu to open the board report. This opens the report pre-filtered by that board which makes charts simpler to make.

Units and Butler variables

Butler supports the same time units and two decimals just like Plus. Here is a list of time tracking variables in Butler:
{carddaysinlist} , {carddaysinpreviouslist} , {cardagedays}

{cardhoursinlist} , {cardhoursinpreviouslist} , {cardagehours}

{cardminutesinlist} , {cardminutesinpreviouslist} , {cardageminutes}

List name
{triggercardlistname} , {triggercardpreviouslistname}

More ideas

• Use a different Plus keyword to separate manual and automated time.
• Include more information in the Plus S/E note to later use as filters from Plus reports, charts and burn-downs.

Many thanks to Plus & Butler user Justin Callaway from for the integration idea.

Rate us at the Chrome store.