Org mode flow

Written by Michael Anckaert - Last updated on and originally published on - Posted in Emacs

This post documents my Org-mode flow and how I use it to keep track of things.

Org file structure

I have a dedicated org directory in my home folder which contains all my Org files. Currently I have it setup so that there is a dedicated Inbox file, Everything I capture or simply log will be put in this Inbox for refiling and processing later on.

Next I have a Personal Org file, that contains generic personal todos and notes.

For all major clients and projects, I have a dedicated Org file into which I organize things.

Each org file, be it my personal file or project specific files have the same structure:

Capturing new tasks

I capture new tasks straight from Emacs using org-capture which is bound to C-c c. This places a task straight in my main Inbox file $HOME/org/

From here I usually refile the item straight away or I come back at a later set time and process my inbox.


Refiling is pretty important in my Org flow since I use it to move tasks from my general Inbox to project or client specific inboxes, or to the archive.

To refile, I use the org-refile command, which is bound to C-c C-w

Progressing tasks

I have custom Todo keywords setup for my Org todos:

When changing the progress of my task, I usually use the general C-c C-t to move the task progress forward. Ocassionally I will use C-u C-c C-t to add a note with the current date/time for extra context.

Add notes to tasks

To add timestamped notes to my Org tasks, I use the org-add-note command which is bound to C-c C-z.

Emacs configuration

This is the relevant org-mode section in my Emacs

(use-package org
  :ensure t
  :bind (("C-c c" . #'org-capture)
         ("C-c a" . #'org-agenda)
         ("C-c l" . #'org-store-link))
  (setq org-directory (concat (getenv "HOME") "/org"))
  (setq org-default-notes-file (concat org-directory "/"))
  (setq org-refile-targets
        '((org-agenda-files :maxlevel . 1)))
  (setq org-todo-keywords
        '((sequence "TODO" "INPROGRESS" "|" "DONE" "DELEGATED")))
  (setq org-agenda-files '("~/org"))
  (setq org-capture-templates
      '(("t" "Todo" entry (file+headline "~/org/" "Inbox")
         "* TODO %?\n  %i\n  %a")
        ("n" "Note" entry (file+datetree "~/org/" "Notes")
         "* %?\nEntered on %U\n  %i\n  %a"))))