AI Automation & Agents  

Create a Daily Habit Tracker in Notion Using Make.com

What you’ll build

  • A Habit Library in Notion that lists your habits.

  • A Habit Log in Notion that holds one row per habit per day.

  • One Make.com scenario that runs daily:

    1. Reads active habits from the Habit Library.

    2. Creates today’s checklist rows in Habit Log.

  • Prebuilt Notion views for Today, Week, and Month.

  • Lightweight formulas for streaks and completion rate.

Prerequisites

  • Notion account.

  • Make.com account.

  • Notion integration added in Make (OAuth). Share both Notion databases with that integration.

Step 1 — Notion structure

1A. Database: Habit Library

Create a database named Habit Library with these properties:

  • Name (Title) → e.g., “Meditate”, “Read 20 pages”

  • Active (Checkbox) → only habits with ✅ will be generated daily

  • Target (Number, optional) → e.g., minutes or reps

  • Category (Select, optional) → e.g., Health, Learning

  • Notes (Rich text, optional)

Add a few rows and mark Active = true for the ones you want.

1B. Database: Habit Log

Create a database named Habit Log with these properties:

  • Title (Title) → leave blank; Make will fill if you want, or keep derived

  • Habit (Relation → Habit Library) → relation to the library item

  • Date (Date) → the calendar day for the entry

  • Done? (Checkbox) → you tick this in the Notion UI

  • Notes (Rich text, optional)

  • Score (Formula) → if(prop("Done?"), 1, 0)

  • DayKey (Formula) → formatDate(prop("Date"), "YYYY-MM-DD")

  • Week (Formula) → formatDate(prop("Date"), "YYYY-'W'ww")

  • Is Today (Formula) → formatDate(prop("Date"), "YYYY-MM-DD") == formatDate(now(), "YYYY-MM-DD")

1C. Useful views in Habit Log

  • Today (Table)

    • Filter: Is Today = true

    • Group by: Done?

  • This Week (Board or Table)

    • Filter: Date is within the past week

    • Group by: Habit

  • Monthly Calendar (Calendar)

    • Show by: Date

Step 2 — Connect Notion to Make

  1. In Make, go to Connections → add Notion connection.

  2. In Notion, open Share on both databases and invite the Make integration so it can read/write.

Step 3 — Build the one-scenario automation in Make

Scenario design

  • Trigger: Scheduler → every day at 05:00 (set your time zone in scenario settings).

  • Module 2: Notion → Search/Query database → Habit Library

    • Filter: Active equals true

  • Module 3: Tools → Iterator over the array of habits returned by Module 2

  • Module 4: Notion → Create a database item → Habit Log

    • For each habit item from the iterator, create a row:

      • Habit (Relation): the page ID from the iterator item

      • Date: now() or today’s date

      • Done?: false

      • Title (optional): {{formatDate(now; "YYYY-MM-DD")}} — {{2.current.Name}}

      • Target (optional): map from the library’s Target

Minimal flow diagram

Field mapping details

  • Module 2 (Query Habit Library):

    • Database: select Habit Library

    • Filter: Property Active → Checkbox equals true

  • Module 3 (Iterator):

    • Array: the list of results from Module 2

  • Module 4 (Create Item in Habit Log):

    • Database: Habit Log

    • Properties:

      • Habit (Relation): set to {{3.current.id}} or the page ID from the iterator item’s id

      • Date: {{formatDate(now; "YYYY-MM-DD")}} (date start)

      • Done?: false

      • Title (optional): {{formatDate(now; "YYYY-MM-DD")}} — {{3.current.properties.Name.title[0].plain_text}}

      • Target (optional): {{3.current.properties.Target.number}}

Note: Exact JSON paths depend on Make’s Notion module output. Use the mapper UI to pick fields.

Step 4 — Test

  1. In Habit Library, ensure a few habits are Active.

  2. In Make, Run once on the scenario.

  3. Open Habit Log → you should see today’s rows created for each active habit.

  4. Tick Done? as you complete habits. The Score formula should show 1 or 0.

Step 5 — Dashboards and streaks

Daily completion rate

Create a Notion view grouped by DayKey and add a Sum of Score at the group footer.
This shows how many habits you finished per day. If you want a percentage:

  • Add TotalHabits (Rollup) to count linked “Habit” items per day group, or simply divide by the number of active habits you keep in the library.

  • For a quick per-row indicator, use:

    • Score already equals 1 if done, 0 if not.

    • In a grouped Today view, use the group footer to show Average of Score to get completion %.

Weekly streak per habit

  • In Habit Log, create a view filtered by current week. Group by Habit.

  • Use Sum of Score in each group footer to see completions out of 7.

Optional extensions (still one scenario if you prefer simplicity)

  • Add a Time to Date and schedule at 00:05 for accurate day grouping.

  • Add a Category rollup or filter to focus on Health, Learning, etc.

  • Add a second branch in the same scenario to send a daily summary to yourself in Notion or Email after creation. If you want strictly one scenario, keep it inside this flow.

Maintenance playbook

  • To add or remove habits, just toggle Active in the Habit Library.

  • If you travel, change the scenario time zone or time to match your mornings.

  • If duplicate rows appear, check the Scheduler. Run only once per day.

Troubleshooting

  • Nothing gets created: The Make Notion connection might not have access. Share both databases with the integration.

  • Iterator shows empty array: Your Habit Library filter likely returns none. Set at least one Active habit.

  • Wrong date: Use formatDate(now; "YYYY-MM-DD") and confirm scenario time zone.

  • Properties missing in mapper: Open Notion, create one example row manually, then refresh fields in Make.

Security and limits

  • You control the Notion data. Share integrations only with the needed databases.

  • Make’s free plan limits can change. This workflow is lightweight and typically fits free usage. Check current limits in your Make account if you scale up.

Copy-paste field helpers

Notion formulas

Score        = if(prop("Done?"), 1, 0)
DayKey       = formatDate(prop("Date"), "YYYY-MM-DD")
Week         = formatDate(prop("Date"), "YYYY-'W'ww")
Is Today     = formatDate(prop("Date"), "YYYY-MM-DD") == formatDate(now(), "YYYY-MM-DD")

Make date for “today”

{{formatDate(now; "YYYY-MM-DD")}}

Suggested Title for Habit Log items

{{formatDate(now; "YYYY-MM-DD")}} — {{3.current.properties.Name.title[0].plain_text}}

FAQ

1. Can I avoid the Relation field?
Ans: Yes. Store the habit name as plain Title text. You’ll lose easy rollups from the library.

2. Can I reset checkboxes automatically at midnight?
Ans: You don’t need to. You create new rows daily. Yesterday’s checkboxes stay as history.

3. How do I get a daily reminder?
Ans: Add another step in the same scenario to send yourself an email or a Notion mention with the Today view link.

4. How do I track partial targets (e.g., 30 minutes of reading)?
Ans: Add Progress (Number) in Habit Log. Compare to Target via a formula like min(prop("Progress") / prop("Target"), 1) and compute partial credit.

Wrap-up

You now have a zero-cost daily habit tracker with auto-generated checklists, clear dashboards, and streak math—powered by one Make.com scenario and clean Notion views