Obsidian plugin · 4.12.3
Template Variables Reference
TaskNotes supports template variables for dynamic content generation in body templates, folder paths, and filenames. Variables use the {{variableName}} syntax and are replaced w...
TaskNotes supports template variables for dynamic content generation in body templates, folder paths, and filenames. Variables use the {{variableName}} syntax and are replaced with actual values when content is created.
Overview#
Template variables are available in three contexts:
- Body templates - Content templates for task and note files
- Folder templates - Dynamic folder paths for file organization
- Filename templates - Dynamic filename generation
Not all variables are available in every context. The tables below indicate where each variable can be used.
Task Properties#
Variables for task-specific data.
| Variable | Description | Body | Folder | Example |
|---|---|---|---|---|
{{title}} |
Task title | Yes | Yes | My Task |
{{titleLower}} |
Title in lowercase | Yes | Yes | my task |
{{titleUpper}} |
Title in uppercase | Yes | Yes | MY TASK |
{{titleSnake}} |
Title in snake_case | Yes | Yes | my_task |
{{titleKebab}} |
Title in kebab-case | Yes | Yes | my-task |
{{titleCamel}} |
Title in camelCase | Yes | Yes | myTask |
{{titlePascal}} |
Title in PascalCase | Yes | Yes | MyTask |
{{priority}} |
Task priority value | Yes | Yes | high |
{{priorityShort}} |
First character of priority (uppercase) | Yes | Yes | H |
{{status}} |
Task status value | Yes | Yes | active |
{{statusShort}} |
First character of status (uppercase) | Yes | Yes | A |
{{context}} |
First context from contexts array | No | Yes | work |
{{contexts}} |
All contexts (comma-separated in body, / in folder) |
Yes | Yes | work, home or work/home |
{{project}} |
First project from projects array | No | Yes | ProjectA |
{{projects}} |
All projects joined by / |
No | Yes | ProjectA/ProjectB |
{{projectFilePath}} |
Full path of the first project, without .md |
No | Yes | Work/Projects/ProjectA |
{{projectFilePaths}} |
Full paths of all projects, joined by / |
No | Yes | Work/Alpha/Personal/Beta |
{{projectFolder}} |
Folder containing the first project note (its file path without the note's own name) | No | Yes | Work/Projects |
{{projectFolders}} |
Folders of all projects, joined by / |
No | Yes | Work/Personal |
{{dueDate}} |
Task due date | Yes | Yes | 2025-01-15 |
{{scheduledDate}} |
Task scheduled date | Yes | Yes | 2025-01-10 |
Body Template Only#
Variables available only in body templates (not folder templates).
| Variable | Description | Example |
|---|---|---|
{{details}} |
User-provided details/description | Task description text |
{{parentNote}} |
Parent note name/path where task was created | Projects/MyNote |
{{tags}} |
Task tags (comma-separated) | urgent, review |
{{hashtags}} |
Task tags as space-separated hashtags | #urgent #review |
{{timeEstimate}} |
Time estimate in minutes | 30 |
Date and Time#
Variables for current date and time values.
| Variable | Description | Format | Example |
|---|---|---|---|
{{date}} |
Full current date | YYYY-MM-DD |
2025-01-07 |
{{year}} |
Current year | YYYY |
2025 |
{{shortYear}} |
Short year | YY |
25 |
{{month}} |
Current month | MM |
01 |
{{day}} |
Current day | DD |
07 |
{{monthName}} |
Full month name | - | January |
{{monthNameShort}} |
Abbreviated month name | - | Jan |
{{dayName}} |
Full day name | - | Tuesday |
{{dayNameShort}} |
Abbreviated day name | - | Tue |
{{week}} |
Week number of year | WW |
02 |
{{quarter}} |
Quarter of year | Q |
1 |
{{shortDate}} |
Compact date | YYMMDD |
250107 |
Time Variables#
| Variable | Description | Format | Example |
|---|---|---|---|
{{time}} |
Current time (compact) | HHmmss |
143052 |
{{time24}} |
24-hour time | HH:mm |
14:30 |
{{time12}} |
12-hour time with AM/PM | hh:mm a |
02:30 PM |
{{hour}} |
Current hour (24-hour) | HH |
14 |
{{hourPadded}} |
Hour with leading zero | HH |
14 |
{{hour12}} |
Hour in 12-hour format | hh |
02 |
{{minute}} |
Current minute | mm |
30 |
{{second}} |
Current second | ss |
52 |
{{ampm}} |
AM/PM indicator | a |
PM |
Timestamps#
| Variable | Description | Format | Example |
|---|---|---|---|
{{timestamp}} |
Date and time combined | YYYY-MM-DD-HHmmss |
2025-01-07-143052 |
{{dateTime}} |
Date and time (no seconds) | YYYY-MM-DD-HHmm |
2025-01-07-1430 |
{{unix}} |
Unix timestamp (seconds) | - | 1736264852 |
{{unixMs}} |
Unix timestamp (milliseconds) | - | 1736264852000 |
{{milliseconds}} |
Current milliseconds | SSS |
123 |
{{ms}} |
Milliseconds (alias) | SSS |
123 |
Timezone#
| Variable | Description | Example |
|---|---|---|
{{timezone}} |
Timezone offset | +01:00 |
{{timezoneShort}} |
Short timezone offset | +0100 |
{{utcOffset}} |
UTC offset | +01:00 |
{{utcOffsetShort}} |
Short UTC offset | +0100 |
{{utcZ}} |
UTC Z indicator | Z |
Unique Identifiers#
| Variable | Description | Example |
|---|---|---|
{{zettel}} |
Zettelkasten-style ID (date + seconds since midnight in base36) | 250107abc |
{{nano}} |
Unique nano ID (timestamp + random string) | 1736264852000x7k2m |
ICS Calendar Event Variables#
Variables for content created from ICS calendar events. Available when creating notes or tasks from calendar events.
Event Information#
| Variable | Description | Body | Folder |
|---|---|---|---|
{{icsEventTitle}} |
Event title | Yes | Yes |
{{icsEventTitleLower}} |
Event title lowercase | No | Yes |
{{icsEventTitleUpper}} |
Event title uppercase | No | Yes |
{{icsEventTitleSnake}} |
Event title in snake_case | No | Yes |
{{icsEventTitleKebab}} |
Event title in kebab-case | No | Yes |
{{icsEventTitleCamel}} |
Event title in camelCase | No | Yes |
{{icsEventTitlePascal}} |
Event title in PascalCase | No | Yes |
{{icsEventStart}} |
Event start time (ISO format) | Yes | No |
{{icsEventEnd}} |
Event end time (ISO format) | Yes | No |
{{icsEventLocation}} |
Event location | Yes | Yes |
{{icsEventDescription}} |
Event description | Yes | Yes |
{{icsEventUrl}} |
Event URL | Yes | No |
{{icsEventSubscription}} |
Calendar subscription name | Yes | No |
{{icsEventId}} |
Unique event identifier (UUID) | Yes | No |
Current Note Folder Variables#
Variables available for inline-created tasks and the default tasks folder.
| Variable | Description | Example |
|---|---|---|
{{currentNotePath}} |
Path to the current note's folder | Projects/Notes |
{{currentNoteTitle}} |
Title/name of the current note | Meeting Notes |
Examples#
Body Template#
---
created: {{date}}
priority: {{priority}}
status: {{status}}
---
# {{title}}
{{details}}
Created from: {{parentNote}}
Tags: {{hashtags}}
Folder Template#
Organize tasks by project and status:
Tasks/{{project}}/{{status}}
Result: Tasks/MyProject/active
Organize by date hierarchy:
Daily/{{year}}/{{month}}/{{day}}
Result: Daily/2025/01/07
Organize ICS events by year and title:
Events/{{year}}/{{icsEventTitleKebab}}
Result: Events/2025/team-meeting
Filename Template#
Using Zettelkasten ID:
{{zettel}}-{{titleKebab}}
Result: 250107abc-my-task.md
Using timestamp:
{{shortDate}}-{{title}}
Result: 250107-My Task.md
Notes#
YAML Safety#
When used in YAML frontmatter, values containing special characters (colons, brackets, quotes) are automatically quoted to prevent parsing errors.
Folder Path Sanitization#
In folder templates, title values have filesystem-unsafe characters (<>:"/\|?*) replaced with underscores to ensure valid paths. Project file path variables preserve folder separators and sanitize unsafe characters within each path segment.
Empty Values#
If a variable references data that isn't available (e.g., {{project}} when no project is set), it resolves to an empty string.
Case Transformations#
The case transformation variables work as follows:
| Transform | Input | Output |
|---|---|---|
titleLower |
My Task Name |
my task name |
titleUpper |
My Task Name |
MY TASK NAME |
titleSnake |
My Task Name |
my_task_name |
titleKebab |
My Task Name |
my-task-name |
titleCamel |
My Task Name |
myTaskName |
titlePascal |
My Task Name |
MyTaskName |