Multi-state Workflow (Org Mode Compact Guide)

Next: Progress Logging, Previous: TODO Basics, Up: TODO Items [Contents]

### 5.2 Multi-state Workflow

You can use TODO keywords to indicate @emph{sequential} working progress states:

    (setq org-todo-keywords
          '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))

The vertical bar separates the ‘`TODO`’ keywords (states that need action) from the ‘`DONE`’ states (which need no further action). If you do not provide the separator bar, the last state is used as the ‘`DONE`’ state. With this setup, the command `C-c C-t` cycles an entry from ‘`TODO`’ to ‘`FEEDBACK`’, then to ‘`VERIFY`’, and finally to ‘`DONE`’ and ‘`DELEGATED`’.

Sometimes you may want to use different sets of TODO keywords in parallel. For example, you may want to have the basic ‘`TODO=/=DONE`’, but also a workflow for bug fixing. Your setup would then look like this:

    (setq org-todo-keywords
          '((sequence "TODO(t)" "|" "DONE(d)")
            (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")))

The keywords should all be different, this helps Org mode to keep track of which subsequence should be used for a given entry. The example also shows how to define keys for fast access of a particular state, by adding a letter in parenthesis after each keyword—you will be prompted for the key after `C-c C-t`.

To define TODO keywords that are valid only in a single file, use the following text anywhere in the file.

    #+TODO: TODO(t) | DONE(d)
    #+TODO: REPORT(r) BUG(b) KNOWNCAUSE(k) | FIXED(f)
    #+TODO: | CANCELED(c)

After changing one of these lines, use `C-c C-c` with the cursor still in the line to make the changes known to Org mode.