How to Build Notion Formula for OKR Progress With Weighted Scores
🔍 WiseChecker

How to Build Notion Formula for OKR Progress With Weighted Scores

If you manage Objectives and Key Results in Notion, you need a way to calculate overall progress when each Key Result has a different importance. A simple average treats every KR equally, which can misrepresent true progress toward an Objective. This article explains how to build a Notion formula that calculates weighted progress using a numeric weight column and a percent-complete column. You will learn the exact formula syntax, how to set up your database properties, and how to avoid common calculation errors.

Key Takeaways: Weighted OKR Progress Formula in Notion

  • Weight property (Number): Assigns importance to each Key Result — higher values give more influence on overall progress.
  • Percent property (Number with percent format): Stores the completion percentage of each Key Result in decimal form, such as 0.75 for 75 percent.
  • Formula property with sum and multiplication: Calculates weighted progress by multiplying each KR’s percent by its weight, summing the results, and dividing by total weight.

ADVERTISEMENT

What Weighted OKR Progress Is and Why It Matters

Weighted progress means each Key Result contributes to the Objective’s total progress in proportion to its importance. In a standard OKR setup, you might have three Key Results: one is critical, one is moderate, and one is minor. If you average their completion percentages, the minor KR affects the total as much as the critical one. Weighted scoring solves this by letting you assign a numeric weight to each KR.

The formula works on a simple principle: multiply each KR’s completion percentage by its weight, add all those products together, then divide by the sum of all weights. The result is a single percentage that accurately reflects progress toward the Objective. Notion’s formula editor supports the prop function, arithmetic operators, and the sum function when used inside a rollup from a linked database.

Before building the formula, you need a database structure with at least these three properties:

  • Percent: A Number property formatted as Percent. Values are decimals, such as 0.5 for 50 percent.
  • Weight: A Number property with no format. Values are whole numbers or decimals, such as 3 or 1.5.
  • Formula: A Formula property that will contain the weighted progress calculation.

If your Key Results live in a separate database and you want the Objective to show rolled-up weighted progress, you will also need a Relation property linking the two databases and a Rollup property that aggregates the weighted values.

Building the Weighted Progress Formula for a Single Database

When all Key Results are in the same database as the Objective, you can add a Formula property that calculates weighted progress for each row. This is useful when you have a flat list of Objectives and each row represents one Objective with its own KRs stored as properties.

Follow these steps to create the formula:

  1. Create the Percent property
    Add a new property to your database. Set the type to Number, then change the format to Percent. Name it “KR Percent” or something similar. Enter the completion percentage as a decimal for each Key Result row.
  2. Create the Weight property
    Add another Number property. Leave the format as Number. Name it “Weight”. Enter the weight value for each Key Result. For example, a critical KR might get 5, a moderate one gets 3, and a minor one gets 1.
  3. Add the Formula property
    Add a new property, set the type to Formula. Name it “Weighted Progress”. Click into the formula editor and enter the following expression:
    prop("KR Percent") prop("Weight") / prop("Weight")
    This calculates the weighted contribution of a single row. However, this formula only works per row. To get the Objective’s total weighted progress, you need a rollup.
  4. Create a Rollup for total weighted progress
    Add a new property in the Objective database. Set the type to Rollup. Configure the rollup to target the Relation linking to the Key Results database. Set the rollup property to the formula property you just created. Set the aggregation to Sum.
  5. Create a Rollup for total weight
    Add another Rollup property. Target the same Relation. Set the rollup property to the Weight property. Set the aggregation to Sum.
  6. Build the final weighted progress formula
    Add a Formula property in the Objective database. Enter this expression:
    rollup("Rollup of Weighted Progress") / rollup("Rollup of Total Weight")
    The result is a decimal. Change the Formula property’s format to Percent to display it as a percentage.

Now each Objective shows its overall weighted progress. When you update any Key Result’s percent or weight, the Objective’s progress recalculates automatically.

ADVERTISEMENT

Building the Weighted Progress Formula with a Linked Database

A more common OKR setup uses two databases: one for Objectives and one for Key Results. Each Key Result has a Relation back to its parent Objective. In this structure, you calculate the weighted progress inside the Key Results database and then roll it up to the Objective.

  1. Set up the Relation
    In the Key Results database, add a Relation property that connects to the Objectives database. Name it “Objective”. For each Key Result, select the parent Objective.
  2. Add Percent and Weight properties
    In the Key Results database, create a Number property formatted as Percent and a Number property for Weight. Populate them for each Key Result.
  3. Create a formula for weighted contribution per KR
    Add a Formula property named “Weighted Contribution”. Enter:
    prop("KR Percent") prop("Weight")
    This gives the numerator for each Key Result.
  4. Roll up the weighted contributions to the Objective
    In the Objectives database, add a Rollup property. Target the Relation to Key Results. Set the rollup property to Weighted Contribution. Set the aggregation to Sum. Name it “Sum Weighted Contributions”.
  5. Roll up the total weight to the Objective
    Add another Rollup property. Target the same Relation. Set the rollup property to Weight. Set the aggregation to Sum. Name it “Sum Weights”.
  6. Compute the final weighted progress
    Add a Formula property in the Objectives database. Enter:
    rollup("Sum Weighted Contributions") / rollup("Sum Weights")
    Set the format to Percent.

The Objective now displays the weighted progress based on all linked Key Results. If a Key Result is removed from the relation, its contribution disappears from the calculation.

Common Mistakes and How to Avoid Them

Percent values entered as whole numbers instead of decimals

Notion’s Percent format expects a decimal. Entering 75 instead of 0.75 will cause the formula to produce an inflated result. To fix this, either enter decimals or change the property to Number format and manually divide by 100 in the formula.

Weights sum to zero

If all Key Results have a weight of zero, the division by total weight returns an error. Notion shows “NaN” or “Infinity”. Ensure at least one Key Result has a weight greater than zero. You can also add an IF statement in the formula: if(rollup("Sum Weights") > 0, rollup("Sum Weighted Contributions") / rollup("Sum Weights"), 0).

Rollup returns unparsed values instead of numbers

If the rollup property is set to a Formula property that returns a text string or an unsupported type, the rollup may not sum correctly. Verify that the target formula property returns a number. In Notion, a formula that multiplies two numbers returns a number, which is safe for rollups.

Weighted progress exceeds 100 percent

If a Key Result’s percent is above 1.0 (for example, 1.2 for 120 percent), the weighted progress can exceed 100 percent. This is mathematically correct but may confuse stakeholders. Add a cap using the min function: min(rollup("Sum Weighted Contributions") / rollup("Sum Weights"), 1).

Weighted OKR Formula: Single Database vs Linked Database

Item Single Database Linked Database
Database structure All KRs as properties in the Objective row Separate KR database related to Objective
Number of properties needed Percent and Weight per KR, plus a Formula per Objective Percent, Weight, and a Formula in KR database; two Rollups and one Formula in Objective database
Scalability Poor — adding a KR requires adding new properties Good — add new KR rows without changing the Objective
Formula complexity Simple per-row multiplication; rollup sums the contributions Requires two rollups and a division formula
Best for Small, fixed sets of KRs (fewer than 5 per Objective) Any number of KRs, especially when KRs change frequently

The linked database approach is the recommended method for most teams. It keeps your data normalized and makes it easy to add or remove Key Results without redesigning your database schema.

With the formula in place, you can now track Objective progress that accurately reflects the importance of each Key Result. Try adding a confidence score property or a status property to further enrich your OKR dashboard. An advanced tip: use the round function to limit the final percentage to two decimal places — for example, round(rollup("Sum Weighted Contributions") / rollup("Sum Weights") 100) / 100.

ADVERTISEMENT