This week comes the really fun stuff with Todoist that has made it unique among its competitors: Labels and Filters.
Labels are just what you think — metadata about the task labeling what it is. What stood labels apart from other task managers initially is the ability to add multiple labels to a task.
Instead of having your usually minimal list of contexts and forced to choose just one, now you can have a context, and any other identifying information you desire using multiple labels.
For example, you might have a task to “call Jim about his paper sales quota.” While your context is the phone, your labels may be more extensive, such as:
- Phone - items requiring a call
- Jim - agenda items pertaining to Jim
- Personnel - items pertaining to the personnel management part of your job
- Low Energy - items that do not take a lot of energy to complete
Multiple labels create the potential to slice and dice your tasks in a much more meaningful way.
Additionally, labels can be color coded in Todoist, so your context type labels could be green, your energy labels in red, and your work mode labels in blue.
Labels show up in a line on each task and can be clicked on to see all other tasks with that label for easy batch task processing.
Some downsides to labels are you cannot label a project in Todoist. You could label a parent task instead, but the actual project is really just a folder.
Additionally, labels cannot be nested like OmniFocus tags can. As a result, if you use a lot of labels, the list can get unruly.
Lastly, if someone shares projects with you, the labels on the tasks in that project show up in your list, adding to an already potentially cluttered labels list.
The good thing, though, is labels are so powerful to use and frictionless to create that the downsides often aren’t as big of a deal.
It’s important to understand the impact of labels, as they are a huge piece of what builds the foundation for probably the most powerful component in Todoist: search.
Search and Filters
In some regards, Todoist is a search engine for your tasks. There are specific search terms and operators which allow you to find nearly any combination of tasks you may want. The more metadata (read: labels, scheduled dates, projects), the easier search gets.
While Todoist’s search feature is fast and flexible for performing searches, its terms and operators may get cumbersome to use manually typing in every day. That’s where filters come into play.
Filters are essentially saved searches in Todoist. Create a string of operators and search terms, add them to a filter, and boom — a saved search view.
But enough with the high level stuff already — how does it work?
According to Todoist’s support page, you can create filter queries based on:
Project & sub-projects
Date a task was created
Shared project & task assignees/assigners
What’s amazing is the breakdown under each of those categories. For example, filtering by due date allows you to search by today’s date using
today, all tasks due after May 1st using
due after: May 1, overdue tasks using
overdue, and all tasks due in the next 3 days using
3 days, among others. Dates have flexible formats, too.
When searching in projects, you can delineate filters to show tasks in a single project using a single pound sign (
#Home), or all tasks in all sub-projects using a double pound sign(
Every piece of metadata can be searched via filter, as well as the actual content of the task itself via keywords.
These options alone are great, but adding operators on top of them makes search terms even more powerful.
Operators allow you to join multiple search term queries together into one filter. Here’s a quick overview of the operators:
- & - AND
- | - OR
- ! - NOT
- () - joins set of search terms together
- , - allows multiple filters to show on the same filter
Here are some examples of search terms and operators joined together for some complex filters.
(overdue | today), (p1 | p2)
Shows all overdue tasks and tasks scheduled for today in the top section, and all priority 1 or 2 tasks in the bottom section.
Modes - Admin —
@admin & ##Work & ((today & !@deferred) | (@deferred & today) | (no due date))
Shows all tasks labeled @admin in the Work project or sub-projects AND are scheduled for today or do not have a @deferred label, OR all with a @deferred label and scheduled for today, OR don’t have a due date. (It’s a lot more complex to try to write that convincingly in English! I created this one to show all tasks in a particular mode to help with batching, and also as a way to hack a deferred date into Todoist.)
90 Days —
created before: -90 days
Shows all task that were created more than 90 days ago. It’s a quick filter to help show potentially stale tasks that need to be deleted, scheduled, or acted upon during a review.
Downsides of Filtering
Todoist offers a lot of options for filtering lists, but they do come at a bit of a price: complexity of structuring the queries.
You can see above with the Modes - Admin query that it’s not exactly easy to tell what the query does by looking at it. Honestly, you almost need to have some background in programming or math to get it fully without studying it.
OmniFocus ultimately does filtering better because a GUI makes it easier to play around with. In Todoist, the text box for creating filters is extremely short, so more complex queries requires writing them within a text editor, pasting the filter in, testing, and making modifications in the text editor if there are any issues.
However, if you end up choosing to use Todoist and can wade through the semi-complicated filtering language, you’ll find it has a powerful yet flexible ability to see your lists in many different ways.