This guide details the development of this OKR template, which you can use for reference or duplicate within your own workspace.
Notion’s unique combination of features form a powerful platform for managing your goals. Not only can you organize your active goals; you can also maintain accountability and reference lessons learned from past goals.
This guide explores goal management in Notion through Objectives and Key Results (OKRs), a widely employed framework popularized by Google.
Here’s what you’ll learn:
- A snapshot of OKRs.
- Create your master databases.
- Add preliminary OKRs.
- Relate your databases.
- Configure your Rollups.
- Calculate progress by Objective.
- Calculate progress by Quarter.
- Create visual progress bars.
- “Roll up” your “Active” indicator.
- Optionally “roll up” dates for sorting.
- Populate inner pages. Make them templates.
- Create “gateways” to your OKRs.
- Compose quarterly reflections.
A snapshot of OKRs.
- The OKR goal-setting framework was born out of Intel and mainstreamed by Google.
- An OKR comprises a single Objective and multiple Key Results.
- Objectives are qualitative goals. They’re ambitious and inspirational, typically with an achievement rate around 70%. Therefore, OKR scores do not reflect company or team performance.
- Key Results are measurable actions that indicate progress toward their Objective. Each OKR typically includes two to five Key Results.
- OKRs are typically set quarterly. You can set them for your full organization or independent teams, but generally, no individual should be juggling more than three OKRs at a time.
- Example Objective #1: Successfully launch an intermediate-level course.
- Key Result #1: Enroll 100 students.
- Key Result #2: Obtain 20 favorable reviews.
- Key Result #3: Discuss the course on three podcasts.
- Example Objective #2: Bolster brand reputation.
- Key Result #1: Cultivate brand authority by speaking at three industry events.
- Key Result #2: Identify and personally reach out to 50 customers.
- Key Result #3: Shorten response time to customer inquiries by 75% — from four days to one day.
- Discover other useful OKR examples.
Create your master databases.
As implemented by The Bulletproof Workspace, William‘s foremost recommendation for organizing a Notion workspace is centralizing information in master databases, then creating “gateways” for accessing that information. Your OKR configuration honors that principle with master databases that relate to each other in useful ways.
Create your Quarters database.

For summarizing projects, tasks and other initiatives by time periods, it’s helpful to maintain master databases of years, quarters, months and even days. Your OKRs will use the Quarters database.
- Within an administrative page for storing (not accessing) information, create a new database.
- Name it “Quarters” and rename the
Title
property “Quarter.” - Replace a placeholder property with a
Date
property named “Time Span.” - Replace another placeholder property with a
Text
property named “Reflections.” - Delete any remaining placeholder properties.
- Add a couple of Quarters using this format: “Q3 2020.”
- For each added Quarter, add the start date and end date within the Time Span property.
- For filtering, add a
Formula
property named “Active” to indicate the current Quarter. - Enter this formula:
if(and(start(prop("Time Span")) <= now(), end(prop("Time Span")) >= now()), true, false)
Learn more about the Formula property. - You can then hide that Active property.
Create your Objectives database.

- Below your Quarters database, add another database.
- Name it “Objectives” and rename the
Title
property “Objective.” - If you’d like to assign your Objectives to teams and/or individuals, add
Relation
,Select
andPerson
properties accordingly. (With the Bulletproof approach, you’ll likely want to link each Objective to an Area.) - Add a
Text
property named “Reflections.” - Delete any remaining placeholder properties.
Create your Key Results database.

As Key Results are measurable actions that indicate progress, they have a “Target Value” and “Current Value.” With those values, a “Progress” property calculates a percentage.
- Below your Objectives database, add another database.
- Name it “Key Results” and rename the
Title
property “Key Result.” - Create a new property or replace a placeholder: Choose the
Number
type and name it “Current Value.” - Create another property or replace another placeholder: Choose the
Number
type and name it “Target Value.” - Create another property named “Progress.” Choose the
Formula
type. - Enter this formula:
prop("Current Value") / prop("Target Value")
(To eliminate decimals, multiple by 100, wrap in theround()
function, then divide by 100. Learn more about formulas in Meet Notion’s Formula Property.) - Format the “Progress” property as a percent: Hover over any cell, click
123
, and choosePercent
.
Add preliminary OKRs.

To see the remaining features come to life and identify any missteps, add some initial OKRs — two or more. Needless to say, add your Objectives and Key Results to their respective databases; you’ll link them momentarily.
You can create your own OKRs or reference other useful examples. Reflections will come later, but for each Key Result, be sure to add a Target Value and Current Value — and confirm Progress calculates properly.
Relate your databases.
With your three master databases in place, you’re ready to link them for sophisticated perspectives and insights. (Learn more about Relations
and Rollups
in The Power of Relations and Rollups.)
Relate Quarters to Objectives.

- In your Quarters database, add a
Relation
property. Name it “Objectives” and choose your Objectives database. (You may want to hide this property, as you’ll likely have no need for it in this view.) - In your Objectives database, rename the reciprocal
Relation
property “Quarter.” - Within that Quarter property, select the Quarter you want to correspond to each Objective.
Relate Objectives to Key Results.

- In your Objectives database, add another
Relation
property. Name it “Key Results” and choose your Key Results database. (Again, you may want to hide this property, as you’ll likely have no need for it in this view.) - In your Key Results database, rename the reciprocal
Relation
property “Objective.” - For each Key Result, select the corresponding Objective.
Configure your Rollups.
Rollups
allow you to retrieve information from related items. Learn more about Rollups
.
Calculate progress by Objective.

For each Objective, a Rollup
property will calculate the average progress among its Key Results.
- In your Objectives database, add a
Rollup
property named “Progress.” - Click into any cell within Progress to configure the
Rollup
property. - For the
Relation
, choose the Key Results property. - For the
Property
, choose the Progress property. - For
Calculation
, choose “Average.”
Calculate progress by Quarter.

Similarly, a Rollup
property will calculate the average progress among the Objectives for each Quarter.
- Because, a
Rollup
is unable to reference anotherRollup
, you’ll need to reflect the progress of each Objective in aFormula
property. Within your Objectives database, add aFormula
property named “Progress (Formula).” For the formula, simply reference the Progress property:prop("Progress")
. You can then hide this property if you’d like. - In your Quarters database, add a
Rollup
property named “Progress.” - Click into any cell within Progress to configure the
Rollup
property. - For the
Relation
, choose the Objectives property. - For the
Property
, choose the “Progress (Formula)” property. - For
Calculation
, choose “Average.”
Create visual progress bars.

Rather than a standalone percentage, you can visually represent your progress within your Objectives and Quarters databases. Within each:
- Create a new
Formula
property named “Progress Bar.” - Add the below formula. (Learn more about visual progress bars.)
if(round(prop("Progress") * 100) < 5, "○○○○○○○○○○", if(round(prop("Progress") * 100) >= 95, "●●●●●●●●●●", slice("●●●●●●●●●●", 1, round(prop("Progress") * 10) + 1) + slice("○○○○○○○○○○", 1, 11 - round(prop("Progress") * 10)))) + " " + format(round(prop("Progress") * 100)) + "%"
- You can then hide the original
Progress
property.
“Roll up” your “Active” indicator.

For filtering purposes, you’ll want to indicate whether each Objective falls within the current Quarter. To do so, you can “roll up” the Active value from the associated Quarter:
- In the Objectives database, add a
Rollup
property named “Active.” Choose the Quarter property as theRelation
, then the Active property as theProperty
. Leave “Show Original” as theCalculation
. You can then hide this property.
Optionally “roll up” dates for sorting.

If you’d like to sort your Objectives and Key Results chronologically, you can also “roll up” the Time Span property from the Quarters database:
- In the Objectives database, add a
Rollup
property named “Time Span.” Choose the Quarter property as theRelation
, then the Time Span property as theProperty
. Leave “Show Original” as theCalculation
. You can then hide this property and sort by it. - To add Time Span to your Key Results database, you’ll need to create a “Time Span (Formula)” property within Objectives, just like your “Progress (Formula)” property. With that in place, you can create a
Rollup
property within Key Results that references “Time Span (Formula).”
Populate inner pages.
Make them templates.
Filter Objectives within Quarters.

When opening your Quarters as pages, you’d like to see the associated Objectives. To do so, you can display the Objectives as a Linked Database, filtered to show only those within the respective quarter.
Rather than creating a Linked Database within each new Quarter, you can create a template:
- At the top of your Quarters database, click the arrow within the
New
button. Choose+ New template
. - For the title, name the template “New Quarter.”
- Within the page body, add a Linked Database. Choose the Objectives database.
- Objectives are best viewed as Galleries (without Card Previews) and edited as Tables, so you’ll want to create a view for each.
- For each view, create a filter to show only the Objectives where the Quarter is the “New Quarter” template (the one you’re creating).
- Hide and order properties to suit your preferences. The Progress Bar looks great in the Gallery.
Thereafter, each Quarter created with the New Quarter template will only display the Key Results related to it.
Filter Key Results within Objectives.

Similarly, you want each Objective to display its associated Key Results.
- At the top of your Objectives database, click the arrow within the
New
button. Choose+ New template
. - For the title, name the template “New Objective.”
- Within the page body, add a Linked Database. Choose the Key Results database.
- Key Results are best displayed as Lists, so create a List view for viewing and a Table for editing.
- For each view, create a filter to show only the Key Results for which the Objective is the New Objective template.
- Hide and order properties according to your preferences.
Thereafter, each Objective created with the New Quarter template will only display the Objectives related to it.
Create “gateways” to your OKRs.
You’ll infrequently access your OKRs from this page of master databases. Instead, you’ll place Linked Databases in helpful locations. As with the internal contents of your Quarters, Objectives display nicely as Galleries (with their Progress Bars), and they’re easy to edit as Tables.
Placements will depend on the structure of your workspace, but here are a few ideas:
- On your primary “home base” or high-level “dashboard,” display all Objectives for the current Quarter. (Filter for the “Active” quarter.)
- Within your Areas (or Departments, Teams, Clients, etc.), display the related Objectives. Consider a Gallery view called “Active” for the current Quarter’s Objectives, then a “Reflection” view that displays all Objectives as a Table.
- If you assigned Objectives to individual team members, they can include filtered Objectives on their personal dashboards.
Compose quarterly reflections.
To get the most from your OKRs, you’ll want to evaluate your performance at the end of each quarter. What led to high achievement rates? What caused low ones? Make succinct notes in the Reflections property of each Objective.
In the Reflections property for the Quarter, note your most useful takeaways. Thereafter, you can regularly review your lessons learned to bolster future performance.
Consider creating a “Reflections” page containing a Linked Database that displays all Areas and Objectives within tables.