Automation recipes
Ready-made automation rules you can copy — task close-out, board drags, streak counters, auto-tagging and more. Change the property names to yours and paste them in.
Working rules you can lift. Each one is a complete rules entry — paste it into the rules list in ⋯ → Edit automations (JSON), or just describe it to your AI and let it write it.
One thing to change every time: the key values below (done_1, stage_3, …) are examples. Swap in your own property names from the Collection's Properties tab.
Close out a finished task
The classic. Tick the box, and the task files itself away.
{
"id": "close-out",
"name": "Close out a finished task",
"when": { "changed": "done_1", "to": true },
"then": [{ "op": "set", "key": "stage_3", "value": "done" }]
}
If you also keep a date property for when things were finished, stamp it in the same rule:
{
"id": "close-out",
"name": "Close out a finished task",
"when": { "changed": "done_1", "to": true },
"if": { "all": [{ "key": "stage_3", "op": "neq", "value": "done" }] },
"then": [
{ "op": "set", "key": "stage_3", "value": "done" },
{ "op": "set_now", "key": "completed_4" }
]
}
The if line means "don't bother if it's already done" — worth adding when a rule stamps a date you don't want overwritten.
The other direction: drag to Done
Dragging a card into your board's done column is a change to the property the board groups by. So the reverse rule needs nothing special:
{
"id": "drag-to-done",
"name": "Dropping a card in done ticks it off",
"when": { "changed": "stage_3", "to": "done" },
"then": [{ "op": "toggle", "key": "done_1" }]
}
Careful: don't use this together with Close out a finished task — each would set the other off, and Kaizendex will refuse to save the pair. Pick the direction you actually work in.
Re-opening a task
Untick, and it comes back to your week.
{
"id": "reopen",
"name": "Unticking reopens the task",
"when": { "changed": "done_1", "to": false },
"then": [
{ "op": "set", "key": "stage_3", "value": "do this week" },
{ "op": "clear", "key": "completed_4" }
]
}
Every new entry starts somewhere
{
"id": "start-in-today",
"name": "New tasks start in do today",
"when": { "created": true },
"then": [{ "op": "set", "key": "stage_3", "value": "do today" }]
}
Count the attempts
Every time you push a habit's date forward, count it. Useful for spotting the thing you keep avoiding.
{
"id": "count-postponements",
"name": "Count how often this gets pushed",
"when": { "changed": "due_2" },
"then": [{ "op": "increment", "key": "postponed_8", "by": 1 }]
}
Auto-tag the heavy ones
{
"id": "flag-big-sessions",
"name": "Tag long workouts",
"when": { "changed": "minutes_4" },
"if": { "all": [{ "key": "minutes_4", "op": "gte", "value": 90 }] },
"then": [{ "op": "add_tag", "key": "tags_6", "value": "long session" }]
}
And take the tag off when it no longer applies:
{
"id": "unflag-short-sessions",
"name": "Untag workouts that got shorter",
"when": { "changed": "minutes_4" },
"if": { "all": [{ "key": "minutes_4", "op": "lt", "value": 90 }] },
"then": [{ "op": "remove_tag", "key": "tags_6", "value": "long session" }]
}
Those two are safe together: they trigger on the same property but write a different one, so there's no loop.
Clear the blocker when work resumes
{
"id": "unblock",
"name": "Moving out of blocked clears the reason",
"when": { "changed": "stage_3", "from": "blocked" },
"then": [{ "op": "clear", "key": "blocked_reason_7" }]
}
Stamp when something first starts
{
"id": "stamp-start",
"name": "Note when a project got going",
"when": { "changed": "stage_3", "to": "in progress" },
"if": { "all": [{ "key": "started_5", "op": "empty" }] },
"then": [{ "op": "set_now", "key": "started_5" }]
}
The empty check makes it a first start — bounce in and out of "in progress" and the original date survives.
Chaining two rules
A rule's write can set off another rule. This pair moves a task all the way home from one tick:
[
{
"id": "tick-sets-stage",
"name": "Ticking Done sets the stage",
"when": { "changed": "done_1", "to": true },
"then": [{ "op": "set", "key": "stage_3", "value": "done" }]
},
{
"id": "stage-stamps-date",
"name": "Reaching done stamps the date",
"when": { "changed": "stage_3", "to": "done" },
"then": [{ "op": "set_now", "key": "completed_4" }]
}
]
That's one direction the whole way, so it's allowed. Chains stop after three steps.
When a recipe won't save
Read the error table — every rejection points at the exact spot. The two that catch people out:
- A cycle. Two rules that set each other off. Pick one direction.
- A key that isn't yours. The property names above are examples; yours are on the Properties tab.