Skip to content
notionsolutions

A practical library for building,
organizing and working in Notion.

Template guides

Notion Goal Tracking Template: Rated Picks and a Build That Updates Itself

Notion's own Goals template, rated 4.80 from 617 reviews, is the free one to try first. Keep it only if progress moves when you check off a milestone; otherwise build Goals and Milestones with a Percent checked rollup, one Progress % formula and a pace check against the target date.

Published
Three white bars of different lengths in steel channels, each with a small blue glass marker along it, next to the headline Notion Goal Tracker
Each goal's bar fills as its milestones get done, and the marker shows where the calendar says it should be.

The free Notion goal tracking template to duplicate first is Notion's own Goals template, rated 4.80 from 617 reviews on the Notion Marketplace. Keep it, or any goal template, only if its progress moves when you check off a milestone, because a progress number you type yourself stays where you left it. If a template fails that test, I'd build two databases, Goals and Milestones: a rollup draws each goal's bar, and one formula tells you whether the goal is on pace for its target date.

For a short list of goals with milestones on each goal's page, choose Notion's Goals template. For progress bars that move when you finish a step, pick a template whose milestones live in their own database, or build the setup below. For a numeric goal such as books read or dollars saved, add a Current and a Target number and let the same formula do the math. Daily habits, KPIs and team OKRs need different setups; the comparison near the end says which.

Notion goal templates, rated

Notion has no goals feature of its own. Its guide to connecting projects and tasks suggests you "track milestones in Notion by adding them as tasks" and, for goals, "copy the OKR and goal setting templates from the template gallery". So every goal tracker below is an arrangement of databases: goals, the steps toward them, and a progress figure that's either typed or computed. The table covers Notion's own Goals template, the 2026 Goal Tracker that ranks in the search results, a SMART goals tracker from Notion's marketplace, and every Gumroad goal tracker that the three ranking roundups link to. Price, rating and review count come from each template's own page.

Notion goal tracker templates by marketplace user rating and review count
Template (creator)What its page or a roundup says it's built aroundListed priceRatingReviewsListed by
Goals (Notion)Goals by status, due date and tags, with milestones inside each goal's page (notion4teachers)Free4.80617notion4teachers
Goal Tracker (Easlo)Assessing your life, setting goals and measuring progress (notion4teachers)$95.0577notion4teachers, super.so
OKR Goal Tracker (Chris)OKR format, with space for a vision board (pathpages)$05.0402notion4teachers, pathpages
2026 Goal Tracker (Jithin Rajiv)"Automatic progress tracking based on completed sub-items" (its search listing)Free4.79252Search results
Notion Smart Goals Tracker (Atul's Notion)SMART format plus a habit tracker (super.so)$04.9192super.so
Goals & Milestones (Matt Bio)Goals, milestones and daily habits in one place (its page)$04.9113notion4teachers, super.so
Notion Goal Tracker for Free (Solt Wagner)Goal tracking, a to-do list and progress bars (notion4teachers)$05.0102notion4teachers, super.so
Notion Goal Planner (Pascio)An action plan of the steps toward each goal (notion4teachers)$04.998notion4teachers, super.so
Notion Planner: Goals Tracker System (OlsNotion)Goals tracker, projects manager and a goals progress chart (its page)$05.098notion4teachers, super.so
Notion Goal Trackers (Chris)Daily, weekly and monthly goal tracking templates (notion4teachers)$05.068notion4teachers, super.so
FLEXI Goals Tracker (iNotion)Goals broken down into tasks, with progress tracking (notion4teachers)$05.060notion4teachers, super.so
Notion AchievoSphere: Goal Tracker (Mohamad Aizat Bin Ismail)Objectives broken into actionable steps, with progress shown visually (notion4teachers)$05.047notion4teachers, super.so
Notion Goal Tracker (Notionland)Goals broken down into smaller milestones (notion4teachers)$05.013notion4teachers, pathpages
SMART goals trackerSMART format, per its nameFree4.01notion4teachers
Goal Timebox (EdriansNotes)Timeboxing (pathpages)$59No ratingNonenotion4teachers, pathpages

Thirteen of these templates carry 10 or more reviews. Their median rating is 5.0, they range from 4.79 to 5.0, and together they hold 2,639 reviews; 8 of the 13 sit at exactly 5.0. Only one of the 13 lists a price above zero: Easlo's Goal Tracker at $9, rated 5.0 from 577 reviews. The two Notion Marketplace entries in that group score 4.80 from 617 reviews for its own Goals template and 4.79 from 252 for the 2026 Goal Tracker. The SMART goals tracker rests on a single review and Goal Timebox shows no rating, so neither counts in those figures. A $0 Gumroad price is the listed price, and some $0 listings are pay-what-you-want.

I'd still start with Notion's Goals template. It's free, it comes from Notion, and its 4.80 rests on more reviews than any other template in the set.

What the ratings show, and what they don't

These are marketplace user ratings. They record how people felt about a template, and none of them checks whether its progress bar moves when a step is done. With 8 of 13 at 5.0 and the lowest at 4.79, the stars barely separate the field. The review count tells you more about how widely a template is used than the score does.

Don't rank a Notion Marketplace score against a Gumroad score, either. The 11 Gumroad templates with 10 or more reviews range from 4.9 to 5.0 across 1,770 reviews, while Notion's two entries sit at 4.79 and 4.80 across 869. I'd read that gap as a difference between two stores' review pools, so it doesn't make a Gumroad template the better pick.

The roundups in the search results won't settle it for you. notion4teachers' list of 20 goal trackers opens with The Professional Wellness Journal's Goal Tracker, pathpages' goals template list opens with Notion Second Brain and Notion Life Planner, and super.so's goals template list opens with a $9 Goal Tracker. None of the three shows ratings or review counts. All three also list a Goal Tracker by Notion Bros; its sale page was unavailable when the ratings above were collected, so it isn't in the table.

The five-minute check for any template

Duplicate the template, open one goal and answer five questions:

  1. Does progress move when you tick a milestone? Check one off and watch the bar. If the figure is a number you type, it will sit where you left it.
  2. Are milestones pages in a related database, or a checklist inside the goal's page? A milestone page can carry a due date, show on a calendar and be filtered. To-do blocks in the page body aren't properties, so no rollup can count them; to-do blocks compared with a checklist database covers that split.
  3. Does each goal have a Status and a Target date? Without a date, nothing can tell you whether you're on pace.
  4. Is there a view of active goals only? A tracker that opens on every goal you've ever set gets skimmed and then ignored.
  5. Does it force a format you don't want, such as SMART fields, OKR key results or life areas? Check the chart count too: Notion's chart help says that on a Free Plan, if you "download a template that contains charts, you'll only be able to see one of the charts in the template".

The 2026 Goal Tracker's listing points to another way to pass the first question, "Automatic progress tracking based on completed sub-items"; Notion's sub-items, switched on under a database's settings, "break tasks into smaller, distinct pieces of work". If a template fails the first two questions, I'd build instead, because rewiring someone else's progress formula means learning their whole structure first, and the build below is two databases.

Build a goal tracker where progress moves by itself

The build is two databases joined by one relation: Goals, one page per goal, and Milestones, one page per step toward a goal. If relations are new to you, the relations and rollups walkthrough covers the mechanics; here's only the goal-specific setup.

Properties for a two-database Notion goal tracker
Database and propertyTypeWhy it's there
Goals: NameTitleThe goal in a few words, such as "Run a half marathon"
Goals: AreaSelectHealth, Work, Money, Learning; one per goal
Goals: StatusStatusWhere the goal stands, in To-do, In Progress and Complete groups
Goals: StartDateThe day you began; the pace formula counts from it
Goals: Target dateDateThe deadline; the reminder and timeline use it
Goals: MilestonesRelation to MilestonesEvery step toward this goal
Goals: Milestones doneRollup, shown as BarThe share of related milestones checked Done
Goals: CurrentNumberNumeric goals only: books read so far, dollars saved
Goals: TargetNumberNumeric goals only: the total you're aiming for
Goals: Progress %Formula, Percent formatThe one progress figure every other formula and chart reads
Goals: ExpectedFormula, Percent formatThe share of the time between Start and Target date that has passed
Goals: PaceFormulaOn pace, Behind or No dates
Milestones: NameTitleThe step, such as "Run 10 miles"
Milestones: GoalRelation, the other side of MilestonesThe goal this step belongs to
Milestones: DoneCheckboxTicked when the step is finished
Milestones: DueDatePuts the step on a calendar

A goal's page body holds the why and the plan; the properties hold only what a view, a filter or a formula needs. Notion's database property reference describes Status as tags "categorized by To-do, In Progress, or Complete", which is why I'd use it over a Select for goal state: every finished goal lands in the Complete group, and the board view below hides that group in one step. Status vs Select for tracking work covers the trade-off in full.

  1. Create Milestones with Name, Done and Due.
  2. Create Goals with Name, Area, Status, Start and Target date.
  3. In Goals, add a new property, choose Relation and pick Milestones. Click the toggle that says Show on Milestones, then rename the matching property that appears in Milestones to Goal, so each milestone shows its goal and each goal lists its milestones.
  4. Add each formula from the slider icon at the top of the database: Edit properties → New property → Formula → Edit formula. Notion's formula help notes that opening the editor from a database row gives "a live preview of the result of the formula for that row", which is the quickest way to check the math below.

The rollup that draws the bar

In Goals, add a Rollup property named Milestones done. Notion's rollup help says the menu asks for "The relation property you want to roll up. The property of those related pages you want to roll up. The calculation you want to apply to them." Set those to Milestones, Done, and Percent per group → Percent checked.

That last path comes from Easlo's progress bar walkthrough; Easlo also sells the $9 tracker in the table. It says the property "should be either a Checkbox property or a Status property", names the menu path "Calculate > Percent per group > Percent checked", and says you then get "the option to display a Bar or Ring". If your milestones use a Status instead of a checkbox, Notion's own guide picks "Percent per group and Complete" and shows completion "as a progress bar or ring". Either way the bar recalculates from the related milestones, so ticking Done is the only update a goal needs.

The rollup draws a good bar, but I wouldn't build the pace check on it. Notion's formula syntax reference lists a rollup's output as "Number, date, or list of any type. Depends on rollup configuration", and the chart help says chart axes "won't be able to show rollups". The figure that every later formula and the chart read is a formula property.

One Progress % formula for every goal

Add a Formula property named Progress % and set its number format to Percent. It handles both kinds of goal: when a goal has a Target, it divides Current by Target; otherwise it counts checked milestones.

if(prop("Target") > 0, min(prop("Current") / prop("Target"), 1), if(prop("Milestones").length() > 0, prop("Milestones").filter(current.prop("Done")).length() / prop("Milestones").length(), 0))

Read it from the outside in. The syntax reference shows a relation filtered with .filter(current.prop(...)) returning a "Page (list)", and length() "Returns the length of the text or list value." Here filter() keeps the milestones whose Done box is checked, length() counts them, and the result is divided by the number of milestones. The two > 0 checks stop a division by zero, so a goal with no milestones yet and no Target shows 0%. min(…, 1) caps a numeric goal at 100%, so 14 books of a 12-book goal still reads 100%.

The counting part is the done-over-total pattern from counting done items against a total, with a zero guard, and filter() and map() on relation lists explains the filter step if you want to count by something other than a checkbox. Easlo's walkthrough shows the same display route for a formula: set the "Number format to Percent", then select the Bar option.

Why a typed Progress number stalls

In pathpages' from-scratch build, Progress is a "Number" column you fill in yourself, and a text bar comes from this formula:

concat(repeat("⬛", floor(prop("Progress") / 10)), repeat("⬜", 10 - floor(prop("Progress") / 10)), " ", prop("Progress"), "%")

That bar moves only when you retype the number. It also assumes Progress is typed on a 0 to 100 scale, where 45 gives four filled squares. Point it at a figure on a 0 to 1 scale, such as Progress % above, where 45% is 0.45, and floor(0.45 / 10) is 0, because floor "Returns the largest integer less than or equal to the number". The bar shows ten empty squares and the label reads 0.45%. Every value up to 100% does the same, since even 1 / 10 floors to 0. On a 0 to 100 number the arithmetic comes out as intended; the trouble starts only when the scale changes. If you want a text bar anyway, the repeat() progress bar formula stays ten symbols long at every percentage and is compared there with the native Bar; I'd stay with the native Bar.

Milestones and Goals databases joined by a two-way relation: Done feeds the Milestones done rollup and Progress %, which feeds Pace with On pace, Behind or No dates
For a milestone goal, ticking Done is the only update: the rollup, Progress % and Pace recalculate from it.

Pace: ahead of the calendar or behind it

A bar tells you how far along a goal is. Pace tells you whether that's far enough for the date. Expected is the share of the time between Start and Target date that has already passed:

if(empty(prop("Start")) or empty(prop("Target date")), 0, if(dateBetween(prop("Target date"), prop("Start"), "days") <= 0, 0, min(max(dateBetween(today(), prop("Start"), "days") / dateBetween(prop("Target date"), prop("Start"), "days"), 0), 1)))

dateBetween() "Returns the difference between two dates", and the reference's examples put the later date first to get a positive count, as in dateBetween(now(), parseDate("2022-09-07"), "days") = 357. today() "Returns the current date without the time", so Expected creeps up every day while Progress % moves only when you check something off. The outer if() returns 0 when either date is empty, so dateBetween() only runs on two real dates. The inner one returns 0 when the Target date isn't after Start, so the formula never divides by a zero-day span. max(…, 0) keeps a goal that hasn't started yet at 0%, and min(…, 1) stops at 100% once the Target date passes. For more on day counts, see the days-between-dates formula.

Pace compares the two and adds a label:

if(empty(prop("Start")) or empty(prop("Target date")), "No dates", if(prop("Progress %") >= prop("Expected"), "On pace", "Behind"))

The date check matters here too. Expected is 0 for a goal without dates, so without it any such goal would read On pace forever. Don't add an empty() check on Progress %: the syntax reference lists empty(0) = true, so a goal at 0% would count as empty.

A Goal template with the plan built in

Notion's database template help says to "click the dropdown arrow next to New at the top right of your database. Then, select + New template." Name it Goal and give its body three headings: Why, Plan and Review notes. Leave the Milestones relation empty in the template. The same help warns, "If you add a relation property to a template, do not fill it in unless you want every page you create with that template to relate to the same existing page(s)."

A sample year, worked through

Here's the build with three example goals so you can check each formula by hand. Assume today() returns July 1 of a year that isn't a leap year. Percentages are rounded to one decimal.

Sample goals on July 1 (example data)
GoalSteps or numbersStartTarget dateProgress %ExpectedPace
Run a half marathon2 of 5 milestones DoneMay 1Nov 140%33.2% (61 of 184 days)On pace
Read 12 booksCurrent 5, Target 12Jan 1Dec 3141.7%49.7% (181 of 364 days)Behind
Launch a portfolio siteNo milestones yetMar 1Sep 300%57.3% (122 of 213 days)Behind

The half marathon is at 40% and on pace, while the reading goal is further along at 41.7% and still behind. The difference is the clock: by July 1 almost half of the reading year has gone, against a third of the race plan. Five books of twelve is 41.7%; a sixth book makes it 50%, which clears the 49.7% Expected. One more milestone on the race takes it to 3 of 5, or 60%.

Zero is the right reading for the portfolio goal: the formula's milestone branch returns 0 when there's nothing to count, and Behind is the useful label for a goal with no steps four months after it started. The fix is to add its milestones. A goal with no Start or Target date would show No dates in the Pace column.

Three goal bars at 40%, 41.7% and 0% with Expected markers at 33.2%, 49.7% and 57.3%, labelled On pace, Behind and Behind
The reading goal is further along than the race but behind, because more of its year has passed.

Views that keep goals in front of you

Each view should answer one question. Add a view with + Add a view, or click the + next to your existing view tabs.

For one chart, type /chart on a page; the chart help lists "Vertical bar chart, Horizontal bar chart, Line chart, Donut chart or Number chart". I'd pick a horizontal bar chart of Goals with Name on one axis and Progress % on the other, since the axes can't show the Milestones done rollup. The plan limit, in the help's words: "Everyone on a paid plan can create unlimited charts. Members on the Free Plan can try one chart for free."

Put the Active goals board on the page you open every morning. A personal dashboard page shows how to lay that out next to your tasks.

Keep it alive after the first month

A goal tracker dies when nobody opens it. The fix is a short review on a schedule, and Notion can create the review page for you. Make a small Reviews database with a template called Goal review, then follow the template help: "Next to the database template you want to repeat, select •••. Open the dropdown next to Repeat." It can repeat "daily, weekly, monthly, or yearly", and you set the gap between repeats, the start date and the time. Repeating database templates walks through the settings, and recurring tasks covers the schedule choices behind them.

I'd make it weekly and keep it to three prompts: Which goals say Behind? Which goal has no milestone due this month? What gets dropped or re-dated? The formulas flag what's behind; you still decide whether to add a step, move the Target date or drop the goal. If you already run a weekly project review, add the Active goals board to it instead of starting a second ritual.

Goals, habits, KPIs and OKRs need different setups

Which setup fits each kind of target
KindWhat it isThe setup I'd use
GoalAn end state with a dateGoals and Milestones with Progress % and Pace, as above
HabitA daily or weekly repeat with no endIts own database with one entry per day or week and a checkbox, kept out of Goals
KPIA number you keep watchingA metrics database with the latest value and its trend
OKRTeam objectives with measurable key resultsA setup built for that format, such as the OKR templates Notion's gallery offers

A habit never reaches 100%, so in Goals its bar would mean nothing. A goal has an end state, while a KPI is a number you watch; a KPI tracker handles the latest value and its trend. Work goals can still link to the work itself: Notion's guide suggests you "create goals and link them to your projects and tasks", so a goal like "Sign three retainer clients" can relate to the outreach project in your project management setup.

Problems and fixes

Goal tracker symptoms, causes and fixes
SymptomLikely causeFix
Progress stuck at 0%The milestones aren't related to the goal, or none is checked DoneAdd the steps in the goal's Milestones relation and tick the finished ones
Text bar empty at 45%A bar formula that divides a 0 to 1 value by 10Use the native Bar on Progress %, or a text bar built for a 0 to 1 scale
Progress over 100%Current is above Target and nothing caps the divisionWrap it in min(…, 1), as Progress % does
Rollup shows a count instead of a percentThe rollup's calculation is a countChange it to Percent per group → Percent checked, or Complete for a Status
Every new goal links the same milestonesThe Goal template has its relation filled inClear the relation in the template
Milestones are a checklist in the page bodyTo-do blocks aren't properties, so no rollup sees themMove each step into the Milestones database
Expected stays at 0%Start or Target date is empty, or the Target date isn't after StartFill in both dates, with the Target date after Start
A new goal says Behind within daysExpected rises every day, while Progress % stays at 0 until a milestone is doneAdd a first milestone small enough to finish this week

If a rollup shows nothing at all, the rollup troubleshooting guide walks through empty and missing values. If every new goal is already linked to the same milestones, why every new page links to the same record covers the cleanup.

Which setup to choose

Start small: duplicate Notion's Goals template and run the five-minute check on one goal. If its progress doesn't move when you tick a milestone, build the two databases and add the Percent checked rollup first, then Progress % and Pace once the bar works.

FAQ

Can I track goals and habits in the same template?

Yes, a few templates do it. Matt Bio's page describes Goals & Milestones as goals, milestones and daily habits in one place, and super.so describes Atul's Notion Smart Goals Tracker as including a habit tracker. In a workspace of your own, I'd still keep habits in a separate database and relate one to a goal only when the habit serves it.

Should work goals and personal goals share one database?

I'd keep them in one Goals database with the Area select and filter each view by Area, so one Pace column covers both. Split them only when the two need different properties.

Track the progress