Skip to content

Templates#

macOS only.

Templates let you generate notes from a predefined structure with placeholders that get filled in at creation time. They're the fastest way to keep recurring notes — meetings, daily logs, sprint retros, post-mortems — consistent and date-stamped.

A template has two halves:

  • Title Template — resolves to the note's filename
  • Body Template — resolves to the note's content

Both halves can contain placeholders that get substituted with date, time, cursor position, and user-supplied parameter values.

Where Templates Live#

Templates are stored as JSON files in the .templates/ hidden directory inside your collection. They sync via iCloud alongside notes, queries, and properties. Each template is a single .json file keyed by UUID.

Because templates live inside the collection, each collection has its own templates — switching collections shows that collection's set.


Creating a Template#

Open File ▸ Manage Templates… to see your existing templates. Click the + toolbar button to create a new one. The Template Editor sheet opens:

Template Editor

Editor Fields#

Field Purpose
Name Internal name shown in the picker. Not used in the note's filename.
Description Optional. Shown as a subtitle in the picker and as the header in the parameter form.
Icon Pick an SF Symbol from the curated palette. Shown in the picker.
Category Optional. Helps group related templates in the manager.
Title Template The string that becomes the new note's filename (after placeholder substitution and sanitisation).
Body Template The note's body content. Can include Markdown, tasks, tags, code blocks — anything FoldNotes supports.
Parameters A table of named values the user fills in when using the template. Each parameter has a Variable Name, Display Label, Type, Default, and Required flag.

Saving#

Click Save to write the template to .templates/<uuid>.json and dismiss the editor. The template immediately appears in the picker.

Edit existing templates

Double-click a row in the Template Manager to re-open the editor on an existing template. Changes apply to future uses; notes already created from the template are unaffected.


Variables (Placeholders)#

Variables use {{name}} syntax. They're resolved in the title and body templates before the note is created.

Built-in Variables#

Placeholder Resolves to Example output
{{date}} Today's date (default format yyyy-MM-dd) 2026-05-15
{{date:FORMAT}} Today's date in a custom format {{date:MMMM d, yyyy}}May 15, 2026
{{time}} Current time (default format HH:mm) 14:30
{{time:FORMAT}} Current time in a custom format {{time:h:mm a}}2:30 PM
{{cursor}} Removed from the output; the cursor lands here when the note opens n/a
{{title}} The fully-resolved title template (filename) — body template only 2026-05-15 — Standup

{{date}} and {{time}} matching is case-insensitive{{Date:yyyy-MM-dd}}, {{DATE:…}}, {{date:…}} are all recognised. Useful when iOS autocorrect capitalises the first letter as you type the placeholder.

Format Strings#

The format strings use Unicode TR35 date patterns. Common ones:

Pattern Meaning Example
yyyy 4-digit year 2026
MM 2-digit month 05
MMMM Full month name May
dd 2-digit day 15
EEEE Full weekday Friday
HH 24-hour 14
mm Minutes 30
a AM/PM PM

Parameter Variables#

Any parameter you define in the table uses its Variable Name as the placeholder. If you add a parameter named project, write {{project}} in the title or body template to substitute the user's input.


Parameter Types#

Type Use for UI in the form
Text Free-form short strings Text field
Number Numeric values Text field with number formatting
Date A specific date Date picker
Date + Time A specific date and time Date + time picker
Checkbox Boolean yes/no Checkbox (must be checked to satisfy required)
Single Select Pick one from a list Dropdown menu populated from the Options popover
Multi Select Pick zero or more from a list Button-and-checkbox dropdown
URL A web address Text field, URL keyboard hints
Project A FoldNotes project name Autocomplete combo box populated from known projects

For Single Select and Multi Select types, the Options column in the parameter table shows an Edit (N)… button. Click it to open a popover where you add option strings and tick which one(s) should be the default. Removing an option that was marked default automatically clears that default.

The Project Parameter#

A parameter of type Project autocompletes from existing projects in your collection — both projects registered via the project store and ones derived from your task project:name metadata. The user sees a dropdown with all known project names; they can pick an existing one or type a new one.

See Projects for the full project system — the dual note/task model, picker integrations, Task Board, and the Project Browser for renaming and orphan management.

Auto-tag: turning the project into a note tag#

When a parameter's Type is set to Project, the Options column in the parameter table shows an Auto-tag checkbox (visible on the diagram above). This controls a small piece of automation at note creation:

  • Unchecked (default) — picking a project only substitutes wherever {{paramName}} appears in the title or body templates. Nothing else happens.
  • Checked — at note creation, FoldNotes appends #projects/<projectName> to the end of the body. The new note is automatically tagged under that project, making it instantly discoverable via tag queries (tag:projects/Marketing-Q4), the tag browser, the collection graph, and any database view that groups by tags.

Why this is useful: project tags using the hierarchical projects/<name> convention give you a single, queryable way to scope notes to a project — without polluting the front matter with metadata that becomes stale when projects come and go. The tag lives in the body where you can remove it manually if the note's relationship to the project changes.

If a template has multiple .project parameters with Auto-tag on, all of their chosen project names are appended (space-separated) on the final tag line. Example: a "Quarterly Review" template with primaryProject and secondaryProject params, both Auto-tag on → resulting body ends with #projects/Marketing-Q4 #projects/Brand-Refresh.

You can also use the parameter inline on task lines to attach the project as task metadata:

- [ ] Send agenda project:{{project}}
- [ ] Read background docs
- [ ] Follow up project:{{project}} due:{{date:yyyy-MM-dd}}

When the user picks "Marketing-Q4", the resulting tasks read:

- [ ] Send agenda project:Marketing-Q4
- [ ] Read background docs
- [ ] Follow up project:Marketing-Q4 due:2026-05-15

Only the tasks you marked carry the project. Other tasks stay clean — useful when only some tasks in a template actually belong to the project.


Using a Template#

Press ⇧⌘N (or use File ▸ New from Template…) to open the picker.

  1. Choose a template — the picker shows your templates with their icons, names, and descriptions. Double-click a row, or select and click Use Template.
  2. Fill the parameter form — a sheet opens with each parameter as a labeled field. Required fields are marked with *. The Create button validates: if any required field is empty (or a required checkbox is off), the form shows an error and focuses the first missing field.
  3. Note is created — the title template is resolved and sanitised to become the filename; the body template is resolved (with the just-computed filename available as {{title}}) and written to the file. If a note with that filename already exists, FoldNotes appends a counter (My Note, My Note 2, My Note 3).

Filename Sanitisation#

The resolved title is sanitised before becoming a filename:

  • : / \ are replaced with - — so 1:1 Meeting becomes 1-1 Meeting rather than losing characters
  • ? * " < > | # are dropped — these are problematic in filenames and don't have a sensible replacement
  • Leading and trailing whitespace is trimmed

The original Title Template text (with the colon) is preserved; only the resolved filename is sanitised.

Filename Locking#

Notes created from a template are saved with nameLocked: true in their front matter. This prevents FoldNotes' standard heading-based auto-rename from overwriting the date-stamped filename with whatever's in the body's first H1. You can still rename manually any time via the toolbar, naming banner, or the Files app — manual renames keep nameLocked set.


Examples#

Daily Standup#

Field Value
Name Daily Standup
Icon bubble.left.and.bubble.right
Title Template Standup — {{date:yyyy-MM-dd}}
Body Template (see below)
# Standup {{date:EEEE, MMMM d}}

## Yesterday
{{cursor}}

## Today
- [ ]

## Blockers
- 

#standup #daily

Result on 15 May 2026: - Filename: Standup — 2026-05-15.md - H1: # Standup Friday, May 15 - Cursor lands under ## Yesterday

One-on-One#

Field Value
Name 1:1 Meeting
Icon person.2.fill
Title Template 1:1 {{manager}} ↔ {{report}} — {{date:yyyy-MM-dd}}
Parameters manager (Text, required), report (Text, required), project (Project, auto-tag on)
# 1:1 with {{manager}}

**Date:** {{date:EEEE, d MMMM yyyy}}  
**Direct report:** {{report}}

## Topics
- [ ] Career goals project:{{project}}
- [ ] Recent wins
- [ ] Blockers project:{{project}}
- [ ] Feedback (both directions)

## Notes
{{cursor}}

Picking manager=Alex, report=Sam, project=Marketing-Q4 produces:

  • Filename: 1-1 Alex ↔ Sam — 2026-05-15.md (colon replaced with dash)
  • Two task lines carry project:Marketing-Q4 as task metadata
  • Body ends with #projects/Marketing-Q4 (auto-tag)

Sprint Retrospective#

Field Value
Name Sprint Retro
Title Template Retro — Sprint {{sprint}} — {{date:yyyy-MM-dd}}
Parameters sprint (Number, required), team (Single Select: Backend, Frontend, Infra, required)
# Sprint {{sprint}} Retro — {{team}}

## What went well
{{cursor}}

## What could be improved


## Action items
- [ ] 

#retro #team/{{team}}

Project Spec (no date in name)#

Some templates don't want a timestamp — a project spec is its own thing, not a daily log.

Field Value
Name Project Spec
Title Template {{title}}
Parameters title (Text, required, label "Spec Title")
# {{title}}

**Owner:** {{cursor}}  
**Status:** Draft  
**Created:** {{date:yyyy-MM-dd}}

## Problem


## Proposal


## Open questions
- [ ] 

#spec

If two notes are created with the same title, FoldNotes appends a counter — My Feature.md, My Feature 2.md, etc.


Querying Notes Created from Templates#

Templates pay off most when the structure they enforce hooks into the rest of FoldNotes. Every tag, task, and property a template adds is queryable, filterable, and groupable — without any extra setup.

Saved Queries#

Any tag a template adds to the body becomes a query filter. Common patterns:

Template behaviour Matching saved query
#standup in the body tag:standup — instant "all standups" list
#retro plus tag:team/{{team}} tag:retro tag:team/Backend — retros for one team
Auto-tag on a Project parameter tag:projects/Marketing-Q4 — every note touching the project
tags: array in the template's front matter Any tag from that array becomes filterable

A weekly retro template that adds #retro produces a saved-query view that grows automatically as each week's retro is created — no manual curation.

Task Board & Task Queries#

Task metadata generated by the template feeds every task-aware surface:

Template line Surfaces it lights up
- [ ] Follow up due:{{date:yyyy-MM-dd}} Calendar anchors the task to that day; task queries like "due this week" pick it up
- [ ] Status check project:{{project}} Task Board can group/filter by project; saved task queries scope to that project
- [ ] Critical bug priority:high Task Board's priority column; task queries sortable by priority

Combine these on one task line and a single template propagates structure to the Calendar, Task Board, and any number of task queries at once.

Database Views#

Database views work on user-defined properties (text, number, date, single-select…) and tags. Templates can pre-fill properties via the propertyDefaults field:

Pre-filled property Database view payoff
status: "Draft" Notes from this template appear in the "Draft" column of a Kanban-style view grouped by status
team: "Backend" Single-select filter; views grouped by team auto-include the new note
quarter: "Q4 2026" Filter and group dimension shared across all notes of this kind

A Sprint Retro template that pre-fills status: Active and asks the user for team via a single-select parameter feeds two columns of a status-board view (with the new note appearing in the right cell immediately) and lets you slice further by team.

If the body template contains [[Project Hub]] or another wikilink, every note created from the template backlinks to that hub. Open the hub's References tab in the Inspector and you have a live, chronologically-sorted index of all instances — useful for "Project Hub → all meetings, retros, decisions, and status notes" overviews.


Tips#

Keep filenames distinct for recurring templates

For templates you'll use frequently (daily logs, standups, meetings), include {{date:yyyy-MM-dd}} in the Title Template so you don't end up with Meeting 365. The dedup counter is a fallback, not a strategy.

Match filename and H1

Use # {{title}} in your body template to keep the H1 in sync with the filename. The resolver auto-injects the resolved title into {{title}} during body resolution — handy for templates where you want the filename and the visible heading to be identical. Otherwise, the H1 can be a clean static title and the filename can be the date-stamped identifier — both patterns are valid.

Selective task tagging

Add project:{{paramName}} only to the tasks that actually belong to a project — peripheral tasks (background reading, admin) stay clean. This is more useful than tagging every task indiscriminately.

Variables hint in the editor

Look just under the Title Template field in the Template Editor — there's a small hint line listing the available variables. The same syntax works in both the Title Template and the Body Template.