Make it possible to use a hierarchy to organize tags

In order for me to keep track of my tags (a.k.a. “contexts” I guess), I have typically tried to keep them in a hierarchical fashion (in Things, Omnifocus etc.). For instance, I would have one main tag named “Location” and then beneath that “Office”, “Home” etc. It makes it a lot easier to keep track of things for me (being a hiearachical kind of guy).

Oh and another thing, if you were gracious enough to create such hieararchical possibilities, having this list expand when cklicking on the “Tags” name in the menu on the left would be awesome :).

EDIT: Since I have been using NirvanaHQ for a long time (but am now looking for alternatives) I actually liked most of the choices and solutions made there but I always missed hiearchical structures for projects (which I’m VERY happy to see here :)) and for tags/contexts.

I am a bit fickle-minded about this, but I am still with you :slight_smile:

The reason why I am a bit cautious is the fact that I have seen so many suggestions on other forums where people suggest such context hierarchies and attach screenshots with the most monstrous hierarchies imaginable. And more often than not, I have the impression that the people who have those monstrous context hierarchies (often in Omnifocus) seem to confuse:

  • action hierarchies (purpose; what and why)
  • context hierarchies (situational requirements for being able to perform the task; where, when, with whom; with what tools etc)

I think context hierarchies could be very useful, though, just as you point out. It can help us keep related tags close to each other. As a minimum, their position in the list (and thereby in the tag bar) must be manually adjustable, but being able to group them would certainly be even handier.

A further aspect - more complex but also more powerful - of nested contexts is filtering. Say you have a top-level context called @Person (indicating that this task requires you to have someone available in real-time). Then maybe you have a dozen subtags for your most frequent contacts. Now, what you would like, then, is that if you tag a task with just @Mary you would also see that task when you filter for @Person - because @Mary is a @Person, implicitly, even though you did not apply the @Person tag (not manually applied, anyway).

Eluven - tell me a little more about how you would use this. Would it be helpful for you in reviewing your tasks, or when creating them? Or to help you review and clean up your tags? It’s an interesting idea, I’m just looking for a bit more info on how you would use it.

Yes, that would be an interesting use case… But I’d love to see a view of someone’s tasks where they actually have more than 3 or 4 contacts in a single view. In those cases, I think selecting the people tags you are looking for may be just a easy.

When I think about requirements such as these, I like go back to Mr. Einstien, who said, “Everything should be made as simple as possible, but not simpler.” :smile:

Absolutely. The use case for the filtering point of view is probably more in the benefit of being able to use “incomplete tagging” and still be able to filter correctly. You can tag a task with just @Mary and still find it when you filter for @Person. I am a big fan of reducing tagging work.

Yeah, Einstein was smart :slight_smile:

Personally I’d settle for just being able to manually rearrange my tags in he right order (not to have to define them in the order I want them to appear).

Hierarchical grouping and/or implicit default tagging can be a nice add-on at some stage. I think @Elurven is right concerning the uses he mentioned, but I am also aware of horrible use cases that some Omnifocus users have made.

Personally, I wouldn’t use this as an excuse for going all crazy with tagging hierarchies. It would be enough for me to be able to group tags together and in the order which I prefer.

As an example (and not as basis for discussion really since tagging habits is one of those giant rabbit holes ;)):

  • @Waiting
  • Thinking
  • Contacts
    • Management
      • Office manager
      • Team manager
    • John
    • Carrie
  • Mail
  • Places
    • Office
    • Home
  • Conversation
  • Tech
    • Computer
    • iOS
      • iPhone
      • iPad
  • Errands
    • Grocery store
    • Pharmacy


If this list was a drop down in the left-hand menu (that could be expanded/collapsed), then I could perhaps also be able to drag actions/projects onto tags to mark them with the tag onto which I dragged them. And clicking on the tags to the left would allow me to see my actions that use that tag.

If one could use a switch to view/hide tags that are actually used in this hypothetical list in the left-hand menu, then that would be awesome. I would then be able to quickly see what contexts are available to me at a glance.

@Elurven, this is a very interesting discussion, and I am sure there is gold to be found here here at the end of the rainbow. As I already said, I too think it is important that tags (contexts) can be kept in a neat order (wherever they appear). And I also agree that it is convenient if you can drag tasks to a tag (or vice versa also).

But let me ask you an important question: In your mind (and/or in Omnifocus; I do not have a Mac): Does this hierarchy affect the filtering capabilities? For example, to use your example above, if you tag a task with the context of “Pharmacy” (only this tag) will it show up if you filter for Errands? Or is the hierarchy just for “display purposes”? Would you have to apply both tags if you want the task to show up in both filterings?

In Things (by Cultured Code) it works like this (using your example):

If I filter on “Pharmacy” (the sub-tag), I will only see actions that are specifically tagged with “Pharmacy”. If I filter on “Errands” I will see everything that has the tag “Errands” OR any of its sub-tags, i.e. both “Pharmacy” AND “Groceries” AND “Errands”. To me, this makes a lot of sense (but since I’m not a native English speaker, my explanation might have made a lot less sense to you ;)).

1 Like

Another thing related to tags, though not strictly related to this topic (I can create a new one if you want), is the fact that you need to reload the page when you add a tag in order to see the newest tag at the top of the page next to the other tags. Personally, I would rather see the tags displayed in a hierarchy in the left-hand menu, like I mentioned, but thought I should mention the current behaviour in the app anyway.

Additionaly, clicking on a tag when you are in the tag view, does not take you to a view of actions/projects with that tag. Not sure whether that is the intended behaviour.

Makes perfect sense! I agree. (I had not noticed your answer before, something with the threads/forum, maybe)

In this way tagging work is reduced, and more intelligent filtering is possible. (Plus you can make it look neater in your lists)

(BTW, I guess few of us are natives :-). I have a feeling you and I live just “across the mountains” from each other.)

Wow. I have never added this complexity to my tagging. I typically don’t use tags as context anymore because it does not make sense for me and instead I use them to identify different roles I have. Easy to filter and get on with my day.

One more use case for hierarchical tagging is color coding. Look:

Some of my tasks require me to interact in real time with another person (e.g. call or grab that person). For most people I do not have a unique tag, so I just mark these tasks with the tag Person. For very frequent contacts I may have individual tags. I may also have some generic tags for “types” of contacts, e.g. client, supplier etc.

Now let’s say I want all tasks that require personal real-time interaction to have a certain graphical element on the task line in blue color. Then if the tags are hierarchically defined I would only need to define this formatting in one place (the “top context” of Person). Easy to define and to adjust (if I find that I cannot tell the blue color apart from some other color).

I currently have the following five Contexts (in Doit):

  • Person (requires me to interact in real time with another person, e.g, call, grab etc)
  • Out (errands; requires me to be off-base)
  • Reflection (requires a calm, fresh mind)
  • Base (requires me to be at home, office etc)
  • Device (anywhere; requires nothing special, just a phone, standard computer, wallet, underwear and so on)

Most of these (definitely Person, Out and Base) could have sub-contexts.

The five contexts are listed in order of how difficult I generally think it is to satisfy the requirement. If a task requires several of these contexts, e.g. it requires a certain person AND being off-base AND having a computer with me, I want it to appear in the list as a Person task. So when color coding a particular graphical element I would like to be able to have defined a relative “priority” of these contexts - since the graphical element can only have one color. For example, I might be able to drag the tags into a given order on the Tags page, or number them etc, or probably the simplest would be to just implicitly consider the listing order in the hierarchy to represent such a “priority” (if I want the color of Person to override the color of Out, then I make sure I list Person higher).

Hello @James,

can you please let us know what are your plans regarding Hierarchical Tags?


This is a really good idea. Hope it may be realised soon.