
Sep 5, 2025
Sep 5, 2025
Notion
Notion
7 Notion Automations You need
7 Notion Automations You need
7 Notion Automations You need
7 Notion Automations You need





1. Recurring Tasks

Setup
Create a Tasks database with properties:
Due Date (Date)
Status (Select)
Repeat Frequency (Select: Days, Weeks, Months)
Repeat Every (Number)

Automation
Trigger: When Task is set to Done and Repeat Frequency is not empty.

Action: Add page to Tasks.
Name = Trigger page.Name
Repeat Frequency = Trigger page.Repeat Frequency
Repeat Every = Trigger page.Repeat Every

Due Date formula:

context("Trigger page").prop("Due").dateAdd(context("Trigger page").prop("Repeat Every "),"days")
2. Auto-Create Subtasks When Project Starts

Setup
Create two databases: Projects and Tasks.
Relate them.

Automation
Trigger: When Project
Status= In Progress.
Action: Add multiple pages to Tasks.
Task Due = Trigger page.Start Date
Project relation = Trigger page.Project

Example subtasks for a Website Project:
Create visual style guide
Design wireframe layouts
Choose color palette
3. Sync Task Status With Project

Setup
Databases: Projects and Tasks.
Relation between them.
Automation
Trigger: When Task
Status= In Progress.Variable: Trigger page.Project.
Action: Edit variable → Project Status = In Progress.

4. Track Task Duration

Setup Add these properties in Tasks:
Due Date
Status
Completion Date
Task Duration (Formula)

Formula (Task Duration):
if( dateBetween(prop("Completion Date"), prop("Due"), "days") > 0, style( if( empty(prop("Completion Date")) or empty(prop("Due")), "", format(dateBetween(prop("Completion Date"), prop("Due"), "days")) + if(dateBetween(prop("Completion Date"), prop("Due"), "days") == 1, " Day ", " Days ") ), "white","gray_background" ), "" ) + style( (((((if(floor(dateBetween(prop("Completion Date"), prop("Due"), "seconds") / 3600) < 10, "0", "") + format(floor(dateBetween(prop("Completion Date"), prop("Due"), "seconds") / 3600))) + "h: ") + if(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) / 60) < 10, "0", "")) + format(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) / 60))) + "m: ") + if(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) % 60) < 10, "0", "") + format(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) % 60)), "white","gray_background" )
Automation
Trigger: When Task
Status= Done.
Action: Set
Completion Date= Triggered time.
5. Invoice → Income

Setup Databases: Accounts, Invoices, Income.
Automation
Trigger: When Invoice
Status= Paid.Action: Add page to Income.
Amount = Trigger page.Cost
Relate new Income to Invoice

6. Auto-Complete Subtasks When Parent is Done

Setup
Create a Tasks database with properties:
Name (Title)
Status (Select: Not Started, In Progress, Done)
Parent Item (Relation to same database)
Sub Items (Rollup from Parent Item relation)
Automation
Trigger: When Status = Done
Variable: Define subtasks using formula:
context("Trigger page").prop("Sub Items")
Action: Edit the variable (Sub Items)
Set Status = Done
This automation automatically marks all subtasks as complete when their parent task is marked as done, eliminating the need to manually update each subtask.
7. Auto-Complete Parent When All Subtasks Are Done

What it does: Automatically marks a parent task as "Done" only when ALL of its subtasks are completed, ensuring you never accidentally mark a project complete while subtasks remain unfinished.
Automatically marks a parent task as "Done" only when ALL of its subtasks are completed.
This ensures you never accidentally mark a project as finished while important subtasks still remain unfinished.
Setup
Same database structure as above
Add formula property "All Subtasks Complete" (Checkbox):

Formula (All Subtasks Complete):
ifs(!empty(prop("Sub-item")),map(prop("Sub-item"),current.prop("status")).length() == map(prop("Sub-item").filter(current.prop("status")== "Done"),current.prop("status")).length())

Automation 1 - Update the completion checker:
Trigger: When Status = Done (for subtasks)
Variable: Define parent using formula:
context("Trigger page").prop("Parent Item").first()
Variable 1: Define Completed Sub Tasks
map(context("Trigger page").prop("Parent item"),current.prop("Completed Sub Tasks")).first()
Action: This triggers the formula recalculation
Automation 2 - Complete the parent:
Trigger: When "All Subtasks Complete" = Checked
Variable: Reference current page
Action: Edit variable
Set Status = Done (with conditional formula):
ifs(var("Variable 1")== true, "Done")
This sophisticated automation uses nested formulas to verify that all subtasks are complete before automatically marking the parent task as done.
It prevents premature completion and ensures task hierarchy integrity.
🎁 Get All Automations for Free
I've created pre-built databases with all these automations already set up and ready to use.
You can duplicate them directly into your workspace – perfect if you're on Notion's free plan since these automations don't count against any limits.
Let me know what automation you're using in your system ;)
Osama aka Ols

1. Recurring Tasks

Setup
Create a Tasks database with properties:
Due Date (Date)
Status (Select)
Repeat Frequency (Select: Days, Weeks, Months)
Repeat Every (Number)

Automation
Trigger: When Task is set to Done and Repeat Frequency is not empty.

Action: Add page to Tasks.
Name = Trigger page.Name
Repeat Frequency = Trigger page.Repeat Frequency
Repeat Every = Trigger page.Repeat Every

Due Date formula:

context("Trigger page").prop("Due").dateAdd(context("Trigger page").prop("Repeat Every "),"days")
2. Auto-Create Subtasks When Project Starts

Setup
Create two databases: Projects and Tasks.
Relate them.

Automation
Trigger: When Project
Status= In Progress.
Action: Add multiple pages to Tasks.
Task Due = Trigger page.Start Date
Project relation = Trigger page.Project

Example subtasks for a Website Project:
Create visual style guide
Design wireframe layouts
Choose color palette
3. Sync Task Status With Project

Setup
Databases: Projects and Tasks.
Relation between them.
Automation
Trigger: When Task
Status= In Progress.Variable: Trigger page.Project.
Action: Edit variable → Project Status = In Progress.

4. Track Task Duration

Setup Add these properties in Tasks:
Due Date
Status
Completion Date
Task Duration (Formula)

Formula (Task Duration):
if( dateBetween(prop("Completion Date"), prop("Due"), "days") > 0, style( if( empty(prop("Completion Date")) or empty(prop("Due")), "", format(dateBetween(prop("Completion Date"), prop("Due"), "days")) + if(dateBetween(prop("Completion Date"), prop("Due"), "days") == 1, " Day ", " Days ") ), "white","gray_background" ), "" ) + style( (((((if(floor(dateBetween(prop("Completion Date"), prop("Due"), "seconds") / 3600) < 10, "0", "") + format(floor(dateBetween(prop("Completion Date"), prop("Due"), "seconds") / 3600))) + "h: ") + if(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) / 60) < 10, "0", "")) + format(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) / 60))) + "m: ") + if(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) % 60) < 10, "0", "") + format(floor((dateBetween(prop("Completion Date"), prop("Due"), "seconds") % 3600) % 60)), "white","gray_background" )
Automation
Trigger: When Task
Status= Done.
Action: Set
Completion Date= Triggered time.
5. Invoice → Income

Setup Databases: Accounts, Invoices, Income.
Automation
Trigger: When Invoice
Status= Paid.Action: Add page to Income.
Amount = Trigger page.Cost
Relate new Income to Invoice

6. Auto-Complete Subtasks When Parent is Done

Setup
Create a Tasks database with properties:
Name (Title)
Status (Select: Not Started, In Progress, Done)
Parent Item (Relation to same database)
Sub Items (Rollup from Parent Item relation)
Automation
Trigger: When Status = Done
Variable: Define subtasks using formula:
context("Trigger page").prop("Sub Items")
Action: Edit the variable (Sub Items)
Set Status = Done
This automation automatically marks all subtasks as complete when their parent task is marked as done, eliminating the need to manually update each subtask.
7. Auto-Complete Parent When All Subtasks Are Done

What it does: Automatically marks a parent task as "Done" only when ALL of its subtasks are completed, ensuring you never accidentally mark a project complete while subtasks remain unfinished.
Automatically marks a parent task as "Done" only when ALL of its subtasks are completed.
This ensures you never accidentally mark a project as finished while important subtasks still remain unfinished.
Setup
Same database structure as above
Add formula property "All Subtasks Complete" (Checkbox):

Formula (All Subtasks Complete):
ifs(!empty(prop("Sub-item")),map(prop("Sub-item"),current.prop("status")).length() == map(prop("Sub-item").filter(current.prop("status")== "Done"),current.prop("status")).length())

Automation 1 - Update the completion checker:
Trigger: When Status = Done (for subtasks)
Variable: Define parent using formula:
context("Trigger page").prop("Parent Item").first()
Variable 1: Define Completed Sub Tasks
map(context("Trigger page").prop("Parent item"),current.prop("Completed Sub Tasks")).first()
Action: This triggers the formula recalculation
Automation 2 - Complete the parent:
Trigger: When "All Subtasks Complete" = Checked
Variable: Reference current page
Action: Edit variable
Set Status = Done (with conditional formula):
ifs(var("Variable 1")== true, "Done")
This sophisticated automation uses nested formulas to verify that all subtasks are complete before automatically marking the parent task as done.
It prevents premature completion and ensures task hierarchy integrity.
🎁 Get All Automations for Free
I've created pre-built databases with all these automations already set up and ready to use.
You can duplicate them directly into your workspace – perfect if you're on Notion's free plan since these automations don't count against any limits.
Let me know what automation you're using in your system ;)
Osama aka Ols






