Default values & presets
Pre-fill new entries automatically — with fixed values, or with expressions like today's date that compute themselves every time you log.
Every Property on a Collection can carry a default value — what a brand-new Entry starts with before you touch it. Defaults come in two flavors: a fixed value ("10 reps", "5 km"), and a dynamic default — a small expression that runs each time an Entry is created, so the value is computed fresh ("today's date", "one week from now"). Presets layer on top: each preset is its own named set of defaults you can pick from when creating an Entry.
The three layers
- Property defaults — set in the Collection's Properties editor, next to each Property. These apply every time you create an Entry.
- Presets — named templates on the Collection's Presets tab. Each preset is nothing more than its own set of default values (plus optional sub-entries). Picking a preset from the New button wins over the Property defaults for the fields it sets.
- What you type — anything you fill in yourself always wins over both.
Fixed defaults
Open your Collection's Properties editor and type into a Property's default column: a Workout collection might default reps to 10, a Run collection distance_km to 5. New Entries start pre-filled; edit freely per Entry.
Dynamic defaults — the ƒx toggle
Hover a default-value field and click the small ƒx button to switch it from a fixed value to an expression. The expression uses the same language as Formulas, and runs once, at the moment the Entry is created — the result is saved like something you typed.
The classic example — a Diary whose every entry is titled with its date. On the Title row's default, click ƒx and enter:
formatDate(today(), "iso")
Every new diary entry is now born titled 2026-07-31. And it's smarter than a clock: the date is the Entry's own date — create an entry for yesterday from the Calendar and it titles itself with yesterday's date.
A live preview under the field shows exactly what today's entry would get, or the exact error if the expression has a typo.
More ideas:
| You want | Expression | On |
|---|---|---|
| Entries titled with their date | formatDate(today(), "iso") | Title |
| A "Review on" date one week out | dateAdd(today(), 7, "days") | Date |
| A timestamp of the exact moment | now() | Date & time |
| A composed label | concat("Week of ", formatDate(today(), "dmy")) | Text |
The date functions — today(), formatDate(), dateAdd() — work in Formulas and dashboards too. The full list is in the function reference.
Dynamic values in presets
Preset values can be expressions too. In the preset form, click ƒx on a value row — or ask your AI to set it up. A "Morning pages" preset can title its entries with the date; a "Weekly review" preset can pre-date its "Due" field a week out. The expression resolves at the moment you use the preset.
Editing presets as JSON
For full control — or for your AI to work with — the Presets tab has an Edit as JSON button that opens the whole presets array in a strict editor, the same way the card look is edited. A dynamic value is written as:
{
"name": "Morning pages",
"values": {
"title": { "expr": "formatDate(today(), \"iso\")" }
}
}
Apply checks everything — unknown fields, duplicate names, and every expression — and lists each problem with its exact location, so nothing broken can be saved.
Next
- Properties and the Title — every Property kind, side by side
- Formulas — the same expression language, computed live from your other fields
- Function reference — every function, generated from the engine