OKRs in Notion: Templates, Relations, and Formulas for a Self-Updating System

Objectives and Key Results (OKRs) align people around measurable outcomes. Notion is perfect for OKRs because it’s both a writing surface (for context) and a relational database (for metrics). In this guide you’ll build a complete, scalable OKR system in Notion—company → team → individual—using relations, rollups, and formulas so progress updates itself as you update Key Results. You’ll also get templates, dashboards, check-in rituals, and guardrails to keep the system lean and trustworthy.

What “good” looks like

  • One Objectives database for the “why” and “what outcome.”
  • One Key Results database that tracks numeric progress over time.
  • One Initiatives (projects/tasks) database linked to KRs so execution is traceable.
  • Relations that cascade Company → Team → Individual objectives without duplication.
  • Formulas and rollups that compute progress, confidence, health, and traffic lights automatically.
  • Weekly check-ins that take minutes, not an hour.

The data model (four core databases)

Create four databases as full pages (not inline) so you can reuse them in dashboards.

1) Objectives

Purpose: store outcomes and context.

Recommended properties

  • Name (title): start with a verb, e.g., “Win our first 50 SMB customers.”
  • Level (select): Company, Team, Individual.
  • Owner (people): accountable person or team lead.
  • Team (relation → Teams db) or a Select if you keep it simple.
  • Quarter (select): 2025 Q4, etc.
  • Status (select): On Track, At Risk, Off Track, Closed.
  • KR Progress % (rollup from Key Results → Progress %, average).
  • Confidence (rollup from KRs → Confidence 1–10, average).
  • Health (formula from KR Progress + Confidence → traffic light).
  • Narrative (rich text): context and strategy.
  • Linked KRs (relation → Key Results).

2) Key Results

Purpose: measurable change that proves the Objective.

Recommended properties

  • KR Name (title): “Revenue from SMB: $125k → $300k.”
  • Objective (relation → Objectives).
  • Owner (people).
  • Metric Type (select): Number, %, Currency, Rate, Binary, Milestone.
  • Direction (select): Increase, Decrease, Maintain.
  • Baseline (number).
  • Target (number).
  • Current (number)—update weekly.
  • Progress % (formula).
  • Confidence (1–10) (number).
  • Weight (number, optional; default 1).
  • Initiatives (relation → Initiatives).
  • Updates (relation → Updates log, optional).
  • Due (date).
  • Notes (rich text).

3) Initiatives

Purpose: the work (projects) that should move a KR.

Properties

  • Title (title).
  • KR (relation → Key Results).
  • Owner (people).
  • Status (select): Planned, In Progress, Blocked, Done.
  • Start / End (dates or timeline).
  • Impact Guess (select: High/Med/Low).
  • Effort (select or number).
  • ICE Score (formula: Impact * Confidence * Ease if you like).
  • Link to tasks (relation to your tasks database if you have one).

4) Updates (optional but powerful)

Purpose: keep a weekly log of change for each KR.

Properties

  • KR (relation → Key Results).
  • Week (date).
  • Current (number).
  • Confidence (number).
  • Comment (rich text).
  • Delta (formula: difference from previous).

This lets you plot sparkline trends or at least read the history quickly.

Relations and rollups (how the math flows)

  • Objectives ↔ Key Results: one-to-many. Each Objective has 2–5 KRs.
  • Key Results ↔ Initiatives: many-to-many. A project can influence multiple KRs, and a KR can have multiple projects.
  • Key Results ↔ Updates: one-to-many, giving you weekly snapshots.

Useful rollups

  • On Objectives:
    • KR Progress % (avg) → roll up Key Results → Progress % → calculate average (or weighted average if you use Weight).
    • Confidence (avg) → average of KR confidence.
    • KR Count → count of linked KRs (sanity check).
  • On Key Results:
    • Initiatives in progress → count Initiatives where Status = In Progress.
    • Last Update → latest date from Updates → Week.

Formulas you can copy-paste

1) Progress % for “increase” metrics

if(prop("Target") == prop("Baseline"), 0,
round( 
  max(0, min(1, (prop("Current") - prop("Baseline")) / (prop("Target") - prop("Baseline")) )) 
* 100))

Clamps between 0–100% so early overshoot doesn’t distort.

2) Progress % for “decrease” metrics (e.g., churn)

if(prop("Target") >= prop("Baseline"),
  // invalid target, avoid divide by zero
  0,
  round( max(0, min(1, (prop("Baseline") - prop("Current")) / (prop("Baseline") - prop("Target")) )) * 100 )
)

3) Unified Progress % (handles Direction)

if(prop("Direction") == "Decrease",
  if(prop("Target") >= prop("Baseline"), 0,
    round(max(0, min(1, (prop("Baseline") - prop("Current")) / (prop("Baseline") - prop("Target")) ))*100)
  ),
  if(prop("Target") == prop("Baseline"), 0,
    round(max(0, min(1, (prop("Current") - prop("Baseline")) / (prop("Target") - prop("Baseline")) ))*100)
  )
)

4) Weighted Objective Progress % (on Objectives)
Create a rollup on Objectives called KR Weighted Sum that rolls up each KR’s Progress % * Weight. Create another rollup Weight Total that sums Weight. Then formula:

if(prop("Weight Total") == 0, 0, round(prop("KR Weighted Sum") / prop("Weight Total")))

5) Health traffic light (on Objectives)

if(prop("Confidence") >= 8 and prop("KR Progress %") >= 70, "🟢 On Track",
if(prop("Confidence") >= 5 and prop("KR Progress %") >= 40, "🟡 At Risk",
"🔴 Off Track"))

Adjust thresholds for your culture.

6) Update delta (on Updates)

prop("Current") - toNumber(dateBetween(prop("Week"), dateAdd(prop("Week"), -7, "days"), "days") == 7 ? 0 : 0)

If you don’t keep last week’s value handy, you can compute delta in a rollup by referencing previous Update; otherwise, just type delta manually during the check-in.

Templates that save hours

Objective template (in Objectives db)

  • Header checklist: Why this matters, scope, non-goals, risks.
  • Linked view: Key Results filtered to this Objective.
  • Linked view: Initiatives grouped by Status.
  • Notes section for narrative updates.
  • Definition of success (what 100% looks like).
  • Dependencies (teams, systems, budget).

Key Result template (in KRs db)

  • Fields prefilled: Direction, Metric Type, Baseline, Target, Due, Owner.
  • How we measure: exact SQL/report link, owner of the metric source.
  • Linked view: Initiatives filtered to this KR.
  • Updates checklist: each Friday—enter Current and Confidence; add a one-line comment.
  • Graph embed or image of the metric if you have one.

Initiative template (in Initiatives db)

  • Hypothesis statement: “We believe that [change] will move [KR] because [reason].”
  • Milestones checklist and DOR/ DOD (definition of ready/done).
  • Risk & Mitigations section.
  • Retro box: what we learned about the KR.

Views and dashboards

Create a Quarterly OKR HQ page and add the following linked views:

  • Company Objectives – Q4: board by Status, show KR Progress %, Confidence, Owner.
  • Team Objectives – Q4: group by Team.
  • My Objectives: filter Owner = me.
  • Key Results – This Week: list view of KRs with fields Current, Delta, Confidence, Initiatives in progress.
  • Initiatives: table grouped by Status with filters where Quarter = current.
  • At Risk: combined view of Objectives with Health = 🔴 or 🔶 thresholds you define.

Add a progress donut using Notion’s new progress bar or a simple formula + emoji meter:

if(prop("KR Progress %") >= 90, "🟩🟩🟩🟩🟩",
if(prop("KR Progress %") >= 70, "🟩🟩🟩🟩⬜",
if(prop("KR Progress %") >= 50, "🟩🟩🟩⬜⬜",
if(prop("KR Progress %") >= 30, "🟩🟩⬜⬜⬜","🟩⬜⬜⬜⬜"))))

Weekly check-ins (15–25 minutes)

  1. KR owners update Current and Confidence for their KRs. If you use the Updates db, add a new row per KR with Week, Current, Confidence, and a one-liner: “+23 signups from webinar.”
  2. Objective owners review Health (the formula will recalc). If Health is yellow/red, they add a brief note: “Blocked by billing bug; escalate to platform team.”
  3. Prioritize Initiatives: in the Initiatives view grouped by Status, close Done, escalate Blocked, and spin up 1–2 new high-impact projects if needed.
  4. Screenshot or export the dashboard for leadership or clients if required. Because values live in Notion, the screenshots become optional over time.

Cascading OKRs without duplication

  • Create Company Objectives first.
  • For each Team Objective, relate it to the relevant Company Objective using a relation property (call it “Parent Objective”).
  • For Individual Objectives, relate them to the Team Objective.
  • Use a rollup on the Parent Objective to show child objectives’ average progress; this avoids copying KRs across levels. Teams can create their own KRs that roll up to a shared Company metric, or directly adopt a Company KR by linking the same KR if you truly share it.

Example set you can copy

  • Company Objective: “Sustainably grow ARR to $3.6M run-rate.”
    • KR1: New ARR from SMB $125k → $300k (Increase).
    • KR2: Net revenue retention 98% → 102% (Increase).
    • KR3: On-time onboarding within 14 days 60% → 85% (Increase).
  • Team Objective (Marketing): “Fill the top of the SMB funnel with intent.”
    • KR: Qualified trials per week 180 → 260.
    • Initiatives: SEO pillar pages, webinar series, referral program.
  • Team Objective (Success): “Shorten time-to-value for new SMBs.”
    • KR: % accounts activated by day 7 from 42% → 70%.
    • Initiatives: New checklist emails, in-app tour, faster data import.

As owners update Current, company progress rolls up automatically.

Permissions, hygiene, and governance

  • Limit who can edit structures (add fields, change formulas).
  • Everyone can edit Current and Confidence for the KRs they own.
  • Create a quarterly archive: when Quarter ≠ current, move Objectives/KRs into an “Archive” view to keep dashboards fast.
  • Add a short OKR playbook page: how to write a good Objective, how to pick KRs, how to score confidence, and your update cadence.

Integrations that add leverage

  • Google Sheets / Data sources: if your numbers live in Sheets, link the source in KR template and paste snapshots weekly. For advanced users, use Zapier/Make to push a cell value into the KR’s Current property.
  • Slack/Teams: post a digest every Friday with Objectives at Risk (filter + Notion automation or a Zap).
  • Calendar: schedule a 20-minute “OKR update” recurring block for each owner.

Common mistakes (and quick fixes)

  • Counting tasks as KRs. KRs measure outcomes, not activity. Fix: move tasks to Initiatives and keep KRs numeric.
  • Too many KRs per Objective. Keep 2–5. More dilutes focus.
  • Binary KRs only. Milestones are okay but include at least one rate/quantity KR to show progress weekly.
  • Inconsistent measurement. Define the exact report or query that feeds each KR in the template.
  • Update fatigue. Use the Updates db and a single weekly ritual; forbid midweek score thrash.

A 10-step rollout in one afternoon

  1. Create the four databases.
  2. Add the properties above (copy/paste formulas).
  3. Connect Relations and basic Rollups.
  4. Build the three templates (Objective, KR, Initiative).
  5. Create the OKR HQ page with linked views.
  6. Enter Company Objectives and 2–5 KRs each.
  7. For each KR, set Baseline, Target, Direction, Due, Owner.
  8. Add 1–3 Initiatives per KR (don’t overfill).
  9. Schedule a 20-minute weekly update block for KR owners.
  10. After the first week, prune fields you didn’t touch and rename anything confusing.

The payoff

With this setup, OKRs stop being a slide deck and become a living system. Objectives hold narrative and alignment; Key Results hold the math; Initiatives connect the work; formulas and rollups keep leaders informed without manual reporting. Every Friday, owners update one number and a sentence, and your dashboards tell the truth.

Deixe um comentário