The Problem

The Tasks plugin doesn’t support arbitrary custom properties on individual tasks. Adding tags per task pollutes tag searches and the tag pane. The workaround is embedding a custom identifier in the task description and using group by function with a regex to extract it.


The Solution — || Delimiter

Append || Client Name to the end of any task you want grouped. Tasks without it fall into an “unsorted” block.

Task format:

- [ ] Rick to build a simple 'Clients' SharePoint Team Site || LeClient
- [ ] Follow up on printer issue || LeCock
- [ ] General unassigned task

Query Setup

Two separate query blocks on the tasks page:

Block 1 — Unsorted (no client):

```tasks
not done
filter by function !task.description.includes("||")
```

Block 2 — Grouped by client:

```tasks
not done
filter by function task.description.includes("||")
group by function task.description.match(/\|\|(.+)/)?.[1]?.trim()
```

How the Regex Works

/\|\|(.+)/

  • \| — escaped pipe character (| has special meaning in regex so needs escaping)
  • \|\| — matches literal ||
  • (.+) — capture group: everything after ||
  • ?.[1] — pulls the first capture group from the match result
  • ?.trim() — strips any leading/trailing whitespace

Why || Over |

Single | is used in Markdown tables and could cause parsing issues in some contexts. Double || is effectively never used naturally in a task name, making it a safe unambiguous delimiter.