Frank Allan Harrison

Creating a data-driven Eisenhower Matrix in Obsidian Md

Deal with task-overwhelm and complex projects, more effectively
5 min read15 Apr 2025by Frank

If you, like me, ever get occasionally overwhelmingly busy, with your task-list feeling unmanageable, you can use an Eisenhower Matrix to simplify and bring calm clarity to what to focus on, on what to do next.

"I have two kinds of problems, the urgent and the important. The urgent are not important, and the important are never urgent." _Dwight D. Eisenhower _ [^1]

The matrix looks like:

โ€ผ๏ธ urgent ๐Ÿ•Š๏ธ not urgent
โš ๏ธ important Do
๐Ÿงจ
Schedule
๐Ÿ“†
๐Ÿณ not important Delegate
๐Ÿซฑ๐Ÿผโ€๐Ÿซฒ๐Ÿฝ
Delete
๐Ÿšฎ

Eisenhower was himself an impressively organised person, and used the method to help him run massively complex, high-stakes, life-or-death projects like the WWII invasion of Normandy, or being president of the USA[^2]. So, it works.

How it works

In simple terms, you have two ways to describe a task: important and/or urgent.

These are really easy to comprehend:

  • If a thing is important then it needs to get done, for whatever criteria.
  • If a thing is urgent then it needs to get done soon. Simple.

The problems start when you have lots of things that are important and/or urgent, so which do you work on, they both denote some level of stress or pressure. Well Eisenhower realised that in a world where everything is important or urgent:

  • The "next" task should be the one which is both important and urgent. This is probably a crisis-level item.
  • Tasks which are neither important nor urgent are not (yet?) worth considering, so we can ignore them.
  • important things should be done personally, and given a date, possibly, eventually, promoting them to important+urgent.
  • urgent things can and should be, if possible delegated as they are often things like meeting, activities, interruptions

In practical terms, when facing overwhelm, we only care about crisis-tasks important+urgent, and once they are done we can then choose to tackle any of the other tasks that might soon become crisis tasks; for example, an urgent task that left undone is likely to become important, like paying a bill or putting the bins out or ; or an important task that was left too late might become urgent. whilst we take which just gives a greater sense of clarity on those occasions that thing feel overwhelming.

Obsidian

How to create a Eisenhower Matrix in Obsidian MD, using standard Markdown and the Dataview plugin.

You can do this in one of two ways, via Tasks, or via tagging Notes/Pages. For my dashboard I prefer and overview matrix where I see Notes that I've tagged, so I can keep track of the high-level concepts I need to pay attention to. Then for projects I use tagged-tasks.

Tagging tasks and notes

In Obsidian, with it's excellent tagging system and pretty good little task-management system, all you do, simply, is apply one of two tags (or both) to your tasks or Notes.

Tags

For all tasks that are either important or urgent or both, find them, and add the relevant tags.

# Tags look like:
Important => #important
Urgent => #urgent
Important+Urgent => #important #urgent

Applying the tags to Tasks

To tag tasks, you just put the tag anywhere in the task entry.

For example:

# Eisenhower-ready Tagged tasks look like:
- [ ] buy mom's Birthday present #important 
- [ ] pay the electricity bill #urgent
- [ ] close the deal on the campervan #important #urgent

It's out of scope to go into more details on Obsidian's task system, as I assume if you're here you're already using it, but it's well documented.

Applying the tags to Notes

You can do this in one of two ways, either in the front-matter, or anywhere in the Note.

For example:

---
tags: thisIsATag, important, urgent
---
#thisIsAnotherTag #important #urgent

some content

#anotherTag

Dataview plugin queries

First off, you need the obsidian dataview plugin installed, and the inline-query option enable.

The 4 queries are simple, with the optional 4th just pulling in

Queries for Notes (high-level)

These get the Notes with the relevant tags and sorts them by last-modified.

$=dv.list(dv.pages('#important and #urgent'      ).sort(f=>f.file.mtime.ts,"desc").file.link)
$=dv.list(dv.pages('#important and (!#urgent)''  ).sort(f=>f.file.mtime.ts,"desc").file.link)
$=dv.list(dv.pages('(!#important) and #urgent'   ).sort(f=>f.file.mtime.ts,"desc").file.link)
$=dv.list(dv.pages('(!#urgent) and (!#important)').sort(f=>f.file.mtime.ts,"desc").file.link)

Queries for Tags (fine-grained)

These get the Tasks with the relevant tags, only if they're not done yet. You can add sorting if you like.

$=dv.taskList(dv.pages('#important and #urgent'      ).file.tasks.where(t => !t.completed), false)
$=dv.taskList(dv.pages('#important and (!#urgent)''  ).file.tasks.where(t => !t.completed), false)
$=dv.taskList(dv.pages('(!#important) and #urgent'   ).file.tasks.where(t => !t.completed), false)
$=dv.taskList(dv.pages('(!#urgent) and (!#important)').file.tasks.where(t => !t.completed), false)

Putting it all together

Here are the full implementations:

By Note

Here are the Eisenhower Matrices for Notes in Obsidian with dataview queries.

Notes Matrix with empty Delete cell

For notes, in a working and complex Obsidian setup, having a Delete cell often just doesn't make sense, so it is left empty in this version:

|                  |  โ€ผ๏ธ urgent                                                                                                | ๐Ÿ•Š๏ธ not urgent                                                                                               |
| ---------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| โš ๏ธ important     | Do next:<br>`$=dv.list(dv.pages('#important and #urgent').sort(f=>f.file.mtime.ts,"desc").file.link)`     | Schedule:<br>`$=dv.list(dv.pages('#important and (!#urgent)').sort(f=>f.file.mtime.ts,"desc").file.link)`   |
| ๐Ÿณ not important | Delegate:<br>`$=dv.list(dv.pages('#urgent and (!#important)').sort(f=>f.file.mtime.ts,"desc").file.link)` | n/a                                                                                                         |

Notes Matrix with Delete query and cell

It is likely that you do not want to delete Notes, but in case it makes sense to you, here is a version of it:

|                  |  โ€ผ๏ธ urgent                                                                                                | ๐Ÿ•Š๏ธ not urgent                                                                                               |
| ---------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| โš ๏ธ important     | Do next:<br>`$=dv.list(dv.pages('#important and #urgent').sort(f=>f.file.mtime.ts,"desc").file.link)`     | Schedule:<br>`$=dv.list(dv.pages('#important and (!#urgent)').sort(f=>f.file.mtime.ts,"desc").file.link)`   |
| ๐Ÿณ not important | Delegate:<br>`$=dv.list(dv.pages('#urgent and (!#important)').sort(f=>f.file.mtime.ts,"desc").file.link)` | Delete:<br>`$=dv.list(dv.pages('(!#important) and (!#urgent)').sort(f=>f.file.mtime.ts,"desc").file.link)`  |

By Task

Here are the Eisenhower Matrices for tasks in Obsidian with dataview queries.

Tags Matrix with Delete query and cell

In some circumstances you do want to see the deletable tasks, if only for context of the other work.

|                  |  โ€ผ๏ธ urgent                                                                                                      | ๐Ÿ•Š๏ธ not urgent                                                                                                      |
| ---------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| โš ๏ธ important     | Do next:  <br>`$=dv.taskList(dv.pages('#important and #urgent'   ).file.tasks.where(t => !t.completed), false)` | Schedule: <br>`$=dv.taskList(dv.pages('#important and (!#urgent)''  ).file.tasks.where(t => !t.completed), false)` |
| ๐Ÿณ not important | Delegate: <br>`$=dv.taskList(dv.pages('(!#important) and #urgent').file.tasks.where(t => !t.completed), false)` | Delete:   <br>`$=dv.taskList(dv.pages('(!#urgent) and (!#important)').file.tasks.where(t => !t.completed), false)` |

Tasks Matrix with empty Delete cell

For tasks occasionally you don't want to purge them, so here's a version without the delete query:

|                  |  โ€ผ๏ธ urgent                                                                                                      | ๐Ÿ•Š๏ธ not urgent                                                                                                      |
| ---------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| โš ๏ธ important     | Do next:  <br>`$=dv.taskList(dv.pages('#important and #urgent'   ).file.tasks.where(t => !t.completed), false)` | Schedule: <br>`$=dv.taskList(dv.pages('#important and (!#urgent)''  ).file.tasks.where(t => !t.completed), false)` |
| ๐Ÿณ not important | Delegate: <br>`$=dv.taskList(dv.pages('(!#important) and #urgent').file.tasks.where(t => !t.completed), false)` | n/a                                                                                                                |

[^1]: Address at the Second Assembly of the World Council of Churches

[^2]: Dwight D. Eisenhower - Wikipedia