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

  1. 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.

Download All Automations Here

Let me know what automation you're using in your system ;)

Osama aka Ols

You may also want to read

You may also want to read

OLSNOTION

When you join my email list, it’s not just about free products or premium offers. Every time my email pops up, you know it’s packed with value, something to elevate your day beyond anything else

© 2025 OLSNOTION. All rights reserved.

OLSNOTION

When you join my email list, it’s not just about free products or premium offers. Every time my email pops up, you know it’s packed with value, something to elevate your day beyond anything else

© 2025 OLSNOTION. All rights reserved.

OLSNOTION

When you join my email list, it’s not just about free products or premium offers. Every time my email pops up, you know it’s packed with value, something to elevate your day beyond anything else

© 2025 OLSNOTION. All rights reserved.

OLSNOTION

When you join my email list, it’s not just about free products or premium offers. Every time my email pops up, you know it’s packed with value, something to elevate your day beyond anything else

© 2025 OLSNOTION. All rights reserved.