Aim — goal and KPI tracker

Pro workbook: Goals, Check-ins, Areas, Setup, Formulas. Sample data, real formulas.

Goals and KPIs
One row per goal. Progress, expected progress from the dates, days left and status are calculated; the current value comes from the latest check-in.
As of14 SepGoals12
Done2
On track4
Behind5
AreaGoalMetricUnitStartTargetCurrentStart dateDueOwnerProgressExpectedDays leftStatusOverdue1
SalesGrow monthly recurring revenueMRR$4200060000545001 Jan31 DecAna69%70%108On trackAverage progress62%
SalesShorten the sales cycleDays to closedays4130361 Jan31 DecAna45%70%108BehindDue in 30 days1
MarketingOrganic trafficSessions / month1800040000275001 Jan31 DecBen43%70%108Behind
MarketingNewsletter listSubscribers3100800069001 Jan31 DecBen78%70%108On track
MarketingLaunch the partner programmePartners signed20201 Feb31 AugChloe100%100%-14Done
ProductShip the mobile appMilestones doneof 8851 Mar31 OctDev62%81%47Behind
ProductCut crash rateCrash-free sessions%97.299.598.11 Jan30 JunDev39%100%-76Overdue
OperationsSupport first replyHours, medianh9.545.21 Jan31 DecElif78%70%108On track
OperationsVendor spendContracts renegotiatedof 121241 Apr31 DecElif33%61%108Behind
FinanceGross marginMargin%616866.51 Jan31 DecChloe79%70%108On track
FinanceDays sales outstandingDSOdays5235491 Jan30 SepChloe18%94%16Behind
PeopleFill the open rolesHiresof 66615 Jan31 JulElif100%100%-45Done
Monthly check-ins
Type each goal's value at the end of the month. The last filled-in month is the goal's current value.
First monthJan 2026
GoalJan 2026Feb 2026Mar 2026Apr 2026May 2026Jun 2026Jul 2026Aug 2026Sep 2026Oct 2026Nov 2026Dec 2026LatestChangeTargetTo go
Grow monthly recurring revenue43200449004610048000498005100052600545005450012500600005500
Shorten the sales cycle403939383737363636-530-6
Organic traffic18900201002180023000244002510026200275002750095004000012500
Newsletter list340039004500500056006100650069006900380080001100
Launch the partner programme25912151820202020
Ship the mobile app1233455583
Cut crash rate97.497.697.99898.198.198.1199.51.4
Support first reply9.18.47.66.96.25.85.55.25.2-44-1.2
Vendor spend1223444128
Gross margin61.562.26363.864.565.265.966.566.56681.5
Days sales outstanding515050494948494949-335-14
Fill the open roles1123456666
By area and by owner
How each part of the plan is doing.
AreaGoalsDoneOn trackBehindOverdueAvg progress
Sales21157%
Marketing311174%
Product21151%
Operations21156%
Finance21148%
People11100%
OwnerGoalsDoneOn trackBehindOverdueAvg progress
Ana21157%
Ben21160%
Chloe311165%
Dev21151%
Elif311171%
Avg progress is the mean of the goals' progress in that group — a finished goal counts 100%, one not started 0%.
Setup
The as-of date, the first month of check-ins, and the lists.
As of2026-09-14Type =TODAY() to keep it live
Check-ins startJan 2026
AreasOwners
SalesAna
MarketingBen
ProductChloe
OperationsDev
FinanceElif
People
How the formulas work
Every formula in this workbook, in plain words. Nothing is hidden and nothing needs a macro. Formulas are shown without the leading = sign.
WhereFormulaWhat it does
Goals · ProgressMAX(0,MIN(1,(G8-E8)/(F8-E8)))Share of the distance from start to target that's covered. For a goal that goes down both differences are negative, so the ratio is still positive. MIN/MAX hold it between 0 and 100%.
Goals · ExpectedMAX(0,MIN(1,($B$3-H8)/(I8-H8)))Share of the time from start date to due that has passed — what progress 'should' be if it ran evenly.
Goals · StatusIF(K8>=1,"Done",IF(M8<0,"Overdue",IF(K8>=L8-0.1,"On track","Behind")))Done first, then Overdue, then a ten-point tolerance against expected.
Goals · Current (Pro)IF(COUNT('Check-ins'!B6:M6)=0,E8,'Check-ins'!N6)The latest check-in, or the start value while there is none.
Check-ins · LatestINDEX(B6:M6,MATCH(SUMPRODUCT(MAX((B6:M6<>"")*$B$5:$M$5)),$B$5:$M$5,0))The latest filled-in month: the biggest month date among filled cells, found again with MATCH, then that cell. Gaps are fine. SUMPRODUCT makes MAX see the whole row without array entry.
Goals · Average progressSUM(K8:K47)/COUNTA(B8:B47)Mean over the goals that exist; empty rows contribute 0 to the sum and nothing to the count.
Goals · Due in 30 daysCOUNTIFS(M8:M47,">=0",M8:M47,"<=30",N8:N47,"On track")+COUNTIFS(M8:M47,">=0",M8:M47,"<=30",N8:N47,"Behind")Open goals due within a month — naming the two open states keeps empty rows out.
Check-ins · ChangeN6-Goals!E8Latest minus start value; the custom format shows a + on gains.
Areas · Avg progressSUMIF(Goals!$A$8:$A$47,A5,Goals!$K$8:$K$47)/B5Progress summed over the area's goals, divided by their count.