actodo


The missing to-do list manager for Slack

Install now

It's free (at the moment)

What is Acktodo for?

  • Manage team-based to-do lists directly in Slack
  • Keep your tasks with you wherever you go
  • Simple and scalable


How do I use it?

Simply add tasks by starting a sentence with todo like this...

todo Read about all the cool things Acktodo does 

Alternatively if you're using /slash commands then /todo will work.

/todo Choose my default settings 

todo list

List tasks with todo or /todo on its own.

todo list

Mark a task as done with todone [number] or /todone [number], rather like this...

todo list

Using todone or /todone on it's own will show you completed tasks.

todo list

But of course there's much more you can do to file, sort, make and manage to-do lists in Slack with Acktodo. Read below or use -help.

todo list

Pricing

During this beta period Acktodo is free to use. This beta period will probably last until the end of 2015.

Because we don't want ads, and there are monthly running costs the pricing model currently looks something like...

$2.99/month for a single user.
$5.99/month 2-10 users.
$9.99/month 11-50 users.
A lot more $$ > 50 users.

If you have any advice on pricing, please do totally drop me a line.


Working with #channels and @users

When creating a task Acktodo remembers who created the task and which channel is was created in, you can see this extra information using the -x flag.

todo -x - show extra user and channel information

todo list

By default Acktodo shows you all the tasks you've created from all channels, you may want to change that default depending on how you want to use the to-do lists. No matter what your default you can always use the following flags to change the scope of your lists when viewing them.

todo -m - list my tasks
todo -e - list everyone's tasks
todo -c - list tasks for the current channel
todo -g - list tasks for all (global) channels

You can also see tasks created in a channel by specifying the channel name.

Note: you can't use @user and #channel options with the /slash command.

todo [#channel] - list tasks in the named channel
todo -m #backend - list my tasks in the #backend channel
todo -ex #design - lists everyone's tasks in the #design channel, with extra info

todo list

Of course you can do the same with users...

todo [@username] - list tasks for the named user.
todo -c @bob - list @bob's tasks in the current channel
todo -gx @sue - list @sue's tasks globally, with extra information
todo @anne - list @anne's tasks, with channel scoped to your default settings

todo list

Channels and users can be combined, want to see all of @bob's in the #design channel?

todo @bob #design 
todo #backend @anne 

Need your -x extra information to be a little quieter so the output doesn't @ message all the users? Use quiet mode instead.

todo -egq - List everyone's tasks from channels globally, with quiet extra information.

todo list

You may have guessed to can also assign tasks to @users or #channels when creating a new task, see more in assigning tasks to other users and channels.

Remember you can use todo -help to see these flags from within Slack.


Viewing and purging completed tasks

There are two ways of viewing completed tasks, the first is the todone command, that you use in the same way as todo.

todone - list done tasks, the scope is based on your default settings
todone -c - list done tasks for current channel
todone [#channel] - list done tasks for specific channel
todone [@user] - list done tasks for a user
todone [#channel] [@user] - list done tasks for a channel and user
todone @bob #design - @bob's completed tasks in #design

todo list

The second way is to use the -d flag with the todo command, which includes completed tasks. This is handy for viewing all the current and completed tasks in a channel, for a user or everywhere. It's a good idea to combine this with the -j flag which adds a thumbs up emoji 👍 to the done tasks.

todo -d - view all current and completed tasks based on your default settings
todo -d #backend - view current and completed tasks in #backend
todo -dgxj @revdancatt - view all current and completed tasks for #revdancatt (that's me!) across all channels, showing extra information and thumbs up for completed tasks

todo list

If the list of completed tasks is getting too long (go you!) or you just want a fresh start, use the -purge command.

todo -purge - purges done tasks (respecting the scope of your settings)

todo list

Note: Again, you can't use @user and #channel options with the /slash command, but the /slash command does allow you to use Acktodo in private #channels. See the install instructions for more information.


Setting your default to work how you work

You may use Slack as a personal tool, you may use Slack at part of a team, there's a good chance you do both. For this reason there's a couple of different ways you can set Slack up to work most sensibly for you & everyone else.

Acktodo will always record who a task is for and which channel it belongs in. The default behaviour is to show you just your tasks from across all channels, but it's useful to know you can change that.

Note: the settings apply to your whole teams' Acktodo instance, they are not user settings (although I may add that in the future).

todo -settings - show settings
todo -set [option] - set a setting

todo list

Here are the 4 different set-ups you can have, and why you may want each one.

1) Your tasks, all channels (default)

This works as if each user has just one master to-do list. If you type todo you'll get all your tasks. If Sue types todo she'll get all her tasks.

If you save some tasks while in the #backend channel and others in #frontend, you can still always filter by just those channels with todo [#channel]. But for all intents and purposes it's acting like one list per user.

2) Everyone's tasks, current channel

This acts as if there's a master to-do list for each channel that everyone is working from and adds too.

When @bob, @sue or you use the todo command in the #backend channel, you'll see all the tasks for that channel, irrespective of who created them. Move over to #design and you'll see the tasks created in that channel instead.

This is handy for splitting up tasks based on activity when anyone which is involved in that activity is likely to work on those tasks. Got a #wedding channel full of family members, then maybe this is the setting for you.

3) Your tasks, current channel

A far more focused way of running to-do lists. This is like each user has their own to-do lists in each channel. If @bob types todo in the #design channel, he'll get just his #design tasks, while @sue typing the same command would get her #design tasks.

If #bob then pops over to #backend and types todo he'll get his #backend tasks instead.

4) Everyone's tasks, all the channels

Want one big to-do list that covers all the channels that everyone can add to and work from? Well this is the setting for you.

No matter who you are, or which #channel you're in this will give you all the tasks all the time.

This will probably work for small teams, but would be crazy for larger ones, although you may make it work for you. You can always add @user and #channel filters to the todo command.

todo @user #channel

Notes

Even though Acktodo may be listing just your tasks, it does so for everyone else in the #channel, just like anything else typed into a #channel. If you're working in large teams this could get kind of "chatty", see the Tips & tricks section for a couple of work-arounds.

If you tighten the focus of tasks down to #channels you may find yourself now and then adding a task while in the wrong #channel. The next section covers how to move them around.


Assigning tasks to other @users & #channels and deleting mistakes

As with listing tasks for specific @users & #channels you can also create tasks for and in them, ("for" @users, "in" #channels obviously). And it's just how you'd expect...

todo @bob make me a sandwich 
todo #frontend have a go at eding the CSS, how hard can it be. 

Sometimes you need to move a task from one @user or #channel to another. Often because you were in the wrong #channel when you wrote the task. The following move -mv command has you covered...

todo -mv [num] [#channel] - moves task [num] to [#channel]
todo -mv [num] [@user] - moves task [num] to [@user]
todo -mv [num] [#channel] [@user] - you can guess this one

todo list

Sometimes you've just gone done messed up, and you don't want to have to mark a task as done and then -purge just to get rid of it. It's as easy as...

todo -rm [num] - remove task [num]

todo list

Bonus extra useful flags

There's a few bonus flags throw in that can make things a little bit easier, these are...

-j - add a :thumbsup: 👍 emoji to done tasks when they are displayed
-k - add a :pager: 📟 emoji to your tasks
-l - add a :fax: 📠 emoji to tasks for the current channel

These are most often combined with the -d (show done task) and -x or -q (extra information) commands.

todo list

You can quickly scan the tasks, any that have a :pager: 📟 emoji are assigned to you, it's like someone's trying to get hold of you from the 90s.

The :fax: 📠 is linked to the channel. See a task with both a :pager: 📟 and 📠 :fax:? Well that means you're supposed to be doing it in connection to the channel you're currently in.

Why :pager: 📟 and 📠 :fax:? Well, come on, what other Slack apps are going to be using those?


Exporting your data (is easy)

Don't want to get locked into Acktodo? Worried you'll have 100s of tasks and decide you no longer like Slack (or Acktodo) and have to start all over again?

Worry not, we have you covered! Just use -url and get a time sensitive URL for your tasks.

-url [num] - a temporary url valid for [num] minutes to view & export your todo list

todo list

That will show you a page with all your tasks, and a link to download them all as a CSV file (JSON coming soon) to do with as you wish.

What's that you say, someone on your team did -url 525600 and now your to-do list is going to sit at the URL for the next year? Just use -url again to replace the old url. There can be only one!

This is in the next section, but may as well go here too. Should Slack add their own to-do list manager then they'll undoubtably have an API for it, and I'll undoubtably build an export script that'll move your Acktodo tasks over to Slack.


Tips & tricks

Being noisy

If there's a lot of users all listing their to-do lists all the time it can start to get a little noisy in the #channels. Sometimes this is fine, but other times you may want to create a #todo channel, which you can step into and list tasks using #channel filters or the -g (global channels) flag.

Also handy when running the -help and -heeeelp commands or the -x extra information flag.

Alternatively install the extra Acktodo /slash command which allows you to list to-do tasks privately and in private channels.

Using free single channel users

In my own Slack instance I have various #channels for different projects and keep my tasks to those channels. But I've also found it useful to create some single-channel "fake" users, to whom I can also assign tasks. Users assigned to a single channel do not count against Slack's user limit and are free.

For example I've created an @accounts user (who sits in the #general channel). I can keep adding tasks to various channels, but also assign them to @accounts and then use the following command to find all tasks for @accounts from all channels.

todo -g @accounts - list tasks for @accounts globally.


F.A.Q. T.I.H.M.U.I.M.M

Time scales on the beta?

"Closed" beta until the end of June, "Open" beta until the end of 2015. Payments starting in 2016.

@Users and @channels in the tasks lists are showing up as codes and not names

Because the beta of Acktodo is working as a webhook, it can only deal with the information Slack sends it. Which includes the user and channel the task have come from, but when you direct a task at a different @user or #channel Slack only sends over the code for that user, not their full name.

Acktodo, keeps track of these codes and if it ever sees a matching @user or #channel it'll fill in the blanks.

For example if you're constantly assigning tasks to @bob but @bob never interacts with Acktodo with the todo or todone command, then Acktodo has never properly "seen" them. Give @bob a nudge or list tasks from a missing #channel and Acktodo will pick them up.

What's the difference between todo and /todo?

Normal todo allows you to assign to-do items to @users and #rooms, and only works in public channels. This is handy if you do a lot of assigning tasks to other users and want them to be alerted when you do so.

The /todo command doesn't parse @user and #channel information, but it does work in private channels and reports tasks to you privately via slackbot. There is nothing stopping you from installing both the normal and /slash version of Acktodo to get the best of both worlds.

What happens if you shut things down?

See the section on exporting your data. I'll give everyone a chance to export their data and a good few months to wind down while not accepting new users.

What happens if Slack add their own to-do manager

Knowing how the Slack team work I know they'll build the API first then add the feature on-top. Which means if they do add to-do lists there'll be an API. And if there's an API I'll add the ability to export your tasks to Slack using the API.

However, I don't think Slack adding to-dos is likely in the near future. Because Slack is all about the core need of helping users (and systems) to communicate with each other. To-do lists sort of sit next to that as an additional not-core feature.

Which is why Slack has an API, so other people can build all the non-core functionality which turns the main product into a thriving ecosystem. In short, I don't think Slack will do a Twitter and I feel pretty confident about building on their API.

$5 a month, I could write my own rather than spend that!

Why, yes you could. Let's say you're super awesome (because you are), and your time is worth $800/day. And, you can write all the code to manage your to-do lists, including all the user/channel stuff and stick it up on a server somewhere in half a day. No wait, you're using a framework, so quarter of a day, 2 hours.

That means it'd cost $200 of your time, although tbh, you'll probably write it during work time as a learning exercise. Either way, at $5/month you'd save money using your own system rather than Acktodo after 40 months.

Why "todo" and not "/todo"

Good question, glad you asked.

I think it's more natural to write todo something that needs to be done than /todo something that needs to be done, and natural is good. Besides it's one character to try and find on your mobile device's keyboard.

Also, with /slash commands, Slack doesn't send full #channel and @user information, which Acktodo needs to sort tasks and lists. I will however take a steer from the Slack team on this for best practice.

Short answer: it may change.

Ahem, SSL, HTTPS?

As I move Acktodo through the beta process, and measure interest, if there's enough then I'll jump through the hoops needed to get an SSL cert. In the meantime, yes it's right near the top of the todo list.

How do I get hold of you?

Tweet me at @revdancatt, or drop me an email at acktodo@revdancatt.com, I do have the @acktodo twitter handle, but I won't be using it for a while.

What does T.I.H.M.U.I.M.M stand for?

That I Have Made Up In My Mind.


L.F.A.Q.

Hey, isn't Slack created by a whole bunch of people who used to work at Flickr, and didn't you work at Flickr with them?

Yes.

And when they made Glitch you wrote a bunch of stuff based on that API too?

I sure did!

And when Flickr first had it's API you were one of the first people to use it to build a photo mapping service, and then they gave you a job?

Yup!

Aren't you just angling for a job at Slack?

Hahah, hell no!

So why do you keep building stuff against the APIs built by that team?

Because they make the best damn APIs out there, which are designed to make it super easy to build things for them.

Won't this be the first second commercial service built specifically to work with Slack?

I think so. Turns out, I'm wrong, the awesome Slackline got there first.

I believe all the current integrations with Slack that you can pay for are offered as part of another service, where it's the other service that's the key product and the Slack integration is a bonus part. For example a site monitoring service that posts to Slack when your site goes down.

And while there are bots that have been written to work with Slack, I think this is the first (soon to be) paid for service that exists purely as a Slack add-on. I don't expect it to be the last by a long shot.

What does the "L" stand for in L.F.A.Q?

Less.