Public sector contracts

FM contract KPI reporting: what public buyers actually ask for

The KPIs UK public buyers actually write into FM and building maintenance contracts, compiled from six published documents with every target quoted and linked. Then the data model, formulas and a fictional month worked through to a service credit, so you can build the monthly contract KPI report from your own job data.

By Simon DuttonLast reviewed

What this guide covers

Most FM bid teams write their KPI response from memory of the last contract. That works until a buyer defines "complete" differently, measures attendance from a different timestamp, or ties money to a KPI you treated as a nice-to-have. This guide does three things:

  1. Compiles the KPIs that UK public buyers have actually written into published FM and building maintenance documents, with each target quoted as published and linked to its source.
  2. Sets out the data model a contractor needs to calculate those KPIs from job, asset, helpdesk and contract data, with a formula for each.
  3. Works one fictional month through to a service credit, and shows the matching monthly report.

It does not cover the detail of KPI publication under the Procurement Act 2023. The Act brought in publication of KPI performance for some contracts; which contracts, and when, is a separate topic.

The KPIs public buyers publish

The table below is compiled from six published documents: a Crown Commercial Service framework specification, four buyer specifications or KPI schedules, and one council performance report. Targets are quoted as the document states them. Where a document gives a measure but no target, the target column says so.

KPI How it is measured (as published) Target as published Money attached Source
Statutory PPM completion All statutory PPM tasks generated on the CAFM system completed satisfactorily to their scheduled anniversary dates 100% 10% deduction weighting Workplace and FM24 KPI Measures
Routine PPM completion Same measure for routine PPM 95% None listed Workplace and FM24 KPI Measures
PPM completion including documents "PPM Task Completion and Document Upload" ">95%" £37,215 of deductions over six months when this failed City of London contractor performance report
Reactive, critical and emergency Breakdowns completed in month to agreed time ÷ breakdowns due in month 100% 10% Workplace and FM24 KPI Measures
Reactive by priority band Percentage of Priority 1, 2 and 3 calls completed within specified time (P1 within 4 hours, P2 next working day, P3 28 working days) P1 100%, P2 95%, P3 95% One full day's contract payment while standards are not maintained Penlee House maintenance specification, Penzance Town Council
Reactive, make safe "PA-P1 Tasks To Be Responded To And Made Safe"; "P2-P6 Tasks To Be Responded To Repaired And Made Safe" 100%; ">95%" Not stated for this KPI City of London report
First-time fix Reactive visits completed at first visit ÷ total reactive calls; a return within 24 hours counts where parts or approvals are needed 90% 5% Workplace and FM24 KPI Measures
Helpdesk call answering Calls answered within 30 seconds "95% of all calls" Deduction by service priority category National Museums Liverpool output specification
Helpdesk call answering Telephone requests responded to within twenty seconds; portal five minutes; email fifteen minutes No percentage in the specification Set at call-off CCS RM6232 Framework Schedule 1, Specification
Helpdesk call answering All telephone calls answered within 1 minute All calls One failure deduction per failure Kent County Council sample contract KPIs
Statutory inspections No failure to identify and carry out relevant statutory inspections and maintenance No failures One failure deduction per failure; 40 if it leads to external warning or enforcement Kent sample contract KPIs
Lift entrapment Entrapments released within 30 minutes All Eight failure deductions per failure Kent sample contract KPIs
Customer satisfaction Quarterly customer feedback score; a failure is a score below 7 out of 10 7/10 One failure deduction per failure Kent sample contract KPIs
Monthly report Accurate monthly report, issued 3 working days before the monthly meeting On time, no errors 1 deduction if 2 days before, 2 if 1 day before, 3 on the day, 1 per day late after that; 1 per error Kent sample contract KPIs
Critical asset availability Critical assets' operational run time ÷ available hours, excluding agreed downtime 100% 5% Workplace and FM24 KPI Measures
Health and safety RIDDOR reportable events in month 0 5% Workplace and FM24 KPI Measures
Social value and carbon Year-on-year improvement in Modern Slavery Assessment Tool score; 5% annual reduction in carbon emissions Achievement of target outcome None listed Workplace and FM24 KPI Measures

Three patterns are worth taking from this into a bid.

Completion includes the paperwork. City of London's building repairs contractor failed its PPM KPI because of "the inconsistency of compliance documentation loaded onto the City's CAFM system", not because visits were missed. If the certificate is not uploaded, the task is not complete in the buyer's eyes.

Money is usually tied to a minority of KPIs. The FM24 table marks some KPIs as carrying a financial penalty and leaves others (routine PPM, portal take-up, social value) unpenalised. Kent uses failure deductions counted per incident, weighted by severity. National Museums Liverpool assigns each KPI a service priority from Low to Super, with the deduction values left for the buyer to insert.

The buyer expects the report from your system. The RM6232 specification requires the supplier to input operational KPI data into the CAFM system, measure each KPI monthly, calculate payment mechanism scores, and report at region, establishment and service level, including reasons for failure.

The data model behind the report

A monthly KPI report is a set of counts over four kinds of record. Get the joins right and every KPI is a numerator over a denominator.

Table Key fields Typical source
contract_kpi kpi_id, name, target, unit, weight, priority_band, exclusions Contract schedule (often a spreadsheet)
site site_id, name, contract_id, region FSM or CAFM
asset asset_id, site_id, asset_class, is_statutory, is_critical FSM asset register
ppm_task task_id, asset_id, due_date, completed_at, certificate_uploaded_at FSM scheduled visits
reactive_job job_id, ticket_id, site_id, priority, logged_at, attended_at, made_safe_at, completed_at, visit_count, exclusion_code FSM jobs and visits
helpdesk_ticket ticket_id, channel, received_at, acknowledged_at, site_id Helpdesk or CAFM
call call_id, offered_at, answered_at Telephony export
survey_response ticket_id, score, responded_at Survey tool

The joins:

From To On Why it matters
ppm_task asset asset_id Decides statutory or routine, and which site
asset site site_id Site-level breakdown
reactive_job helpdesk_ticket ticket_id The clock starts at received_at, not when the job was raised
survey_response helpdesk_ticket ticket_id Ties a score to a site and a job
every KPI row contract_kpi kpi_id Target, weighting and exclusions come from the schedule, not from code

The formulas, for a reporting month M:

KPI Numerator Denominator
Statutory PPM tasks on statutory assets due in M with completed_at ≤ due_date and certificate_uploaded_at before month end statutory tasks due in M
Routine PPM non-statutory tasks due in M completed by due date non-statutory tasks due in M
P1 make safe P1 jobs with made_safe_at − received_at ≤ 4h P1 jobs logged in M, less agreed exclusions
P2 / P3 completion jobs completed by the band deadline (next working day; 28 working days) jobs whose deadline fell in M
First-time fix reactive jobs with visit_count = 1 reactive jobs completed in M
Call answering calls with answered_at − offered_at ≤ 30s calls offered
Customer satisfaction sum of scores responses received in M
Service credit monthly charge × at-risk % × sum of weights of failed KPIs —

Two definitions cause most disputes. Is a P3 job "due in M" when it was logged or when its deadline falls? Does "working day" exclude bank holidays? Write the answer into contract_kpi.exclusions and the report becomes repeatable.

Worked example: one month, end to end

This example is illustrative. The council, its four sites, every job and the service credit mechanism are fictional. The priority bands copy the Penlee House structure and the weighted percentage structure echoes the FM24 table, but the at-risk pot is our assumption: published schedules we read listed per-KPI percentages without always stating what they apply to.

Hypothetical mechanism: monthly charge £84,000; 10% at risk, so £8,400; each KPI carries a weight; a KPI below target forfeits its full weight that month.

KPI Calculation Actual Target Result Weight Credit
Statutory PPM 140 ÷ 142 98.6% 100% Fail 25% £2,100
Routine PPM 371 ÷ 386 96.1% 95% Pass 10% £0
P1 made safe in 4h 17 ÷ 18 94.4% 100% Fail 20% £1,680
P2 next working day 62 ÷ 64 96.9% 95% Pass 15% £0
P3 in 28 working days 126 ÷ 131 96.2% 95% Pass 10% £0
First-time fix 194 ÷ 213 91.1% 90% Pass 10% £0
Calls in 30s 1,196 ÷ 1,240 96.5% 95% Pass 5% £0
Satisfaction 390 ÷ 46 8.48 8.0 Pass 5% £0

Credit: £8,400 × (25% + 20%) = £8,400 × 45% = £3,780. Net payable: £84,000 − £3,780 = £80,220.

The two statutory misses show why the certificate field matters: one legionella temperature check was done three days late, and one emergency lighting test was done on time but had no test record attached at month end. Under a "completion and document upload" definition both count. The P1 failure was water ingress at a depot intake room, made safe 4 hours 51 minutes after the call. One job out of 18 cost £1,680, which is why P1 volumes this low deserve daily monitoring rather than a month-end surprise.

The site breakdown also shows problems the contract-level figures hide. Harbour Leisure Centre's first-time fix is 88.3% (53 of 60) and its P2 and P3 results are below target, even though every one of those KPIs passes overall.

Ashcombe Borough Council: hard FM and building maintenance (fictional)

October 2026 · Contract month 7

Monthly contract KPI report

6 of 8 KPIs met.
Statutory PPM and P1 make-safe missed.

Service credit of £3,780 applies under the (hypothetical) contract mechanism.

KPIs met
6 / 8
Against contract targets
Monthly charge
£84,000
10% at risk
Service credit
£3,780
Two KPIs failed
Net payable
£80,220
Charge less credit

KPI results and service credits

KPI, target, actual result, pass or fail, credit weighting and service credit for October 2026
KPITargetCountActualResultWeightCredit
KPI1Statutory PPM completed and certified by due date100%140 / 14298.6%Fail25%£2,100
KPI2Routine PPM completed by due date95%371 / 38696.1%Pass10%–
KPI3P1 emergency made safe within 4 hours100%17 / 1894.4%Fail20%£1,680
KPI4P2 urgent completed by next working day95%62 / 6496.9%Pass15%–
KPI5P3 routine completed within 28 working days95%126 / 13196.2%Pass10%–
KPI6Reactive jobs fixed at first visit90%194 / 21391.1%Pass10%–
KPI7Helpdesk calls answered within 30 seconds95%1196 / 124096.5%Pass5%–
KPI8Customer satisfaction, mean score out of 108.046 responses8.48Pass5%–
Total service credit (10% of £84,000 at risk = £8,400)£3,780

By site (met / due)

Site-level results for each site-measured KPI; amber marks a site below the contract target
SiteStatRtnP1P2P3FTF
Ashcombe Civic Centre50/50120/1246/623/2446/4771/77
Riverside Library23/24, below target69/714/412/1220/2134/37
Harbour Leisure Centre43/44, below target108/1135/517/18, below target35/37, below target53/60, below target
Elm Road Depot24/2474/78, below target2/3, below target10/1025/2636/39

Stat = statutory PPM, Rtn = routine PPM, FTF = first-time fix. Amber: site below the contract target.

Breach log

  • PPM-30418 · KPI1Harbour Leisure Centre

    Legionella monthly temperature check, calorifier 2

    Due: 2026-10-14

    Completed 17 Oct; certificate uploaded 21 Oct

  • PPM-30562 · KPI1Riverside Library

    Emergency lighting monthly functional test

    Due: 2026-10-21

    Visit done 20 Oct; no test record attached at month end

  • J-48817 · KPI3Elm Road Depot

    P1: water ingress at electrical intake room

    Due: Logged 14:12, 9 Oct; due 18:12

    Made safe 19:03 (4h 51m)

  • J-48902 · KPI4Ashcombe Civic Centre

    P2: passenger lift out of service

    Due: Next working day (13 Oct)

    Completed 14 Oct, awaiting part

  • J-49011 · KPI4Harbour Leisure Centre

    P2: pool hall AHU fault alarm

    Due: Next working day (20 Oct)

    Completed 21 Oct

Not listed: 15 routine PPM and 5 P3 jobs past due (KPIs passed).

Example inputs: job system + helpdesk telephony + survey responses + contract schedule

Illustrative, fictional data

Illustrative, fictional data. The council, sites, jobs and the service credit mechanism are invented for this example; they are not taken from any published contract.

Building it from your FSM data

The report above needs data from at least three places: the job system (PPM and reactive), the helpdesk or telephony export, and the contract schedule, which usually lives in a spreadsheet the bid team built. Survey scores often sit in a fourth tool. The manual version is a monthly export, a VLOOKUP between job and ticket references, and an argument about which timestamp counts.

The IVP.ai Data Layer connects those sources (anything with a REST API, any SQL database, and Excel files such as the KPI schedule), joins them on the keys above, and keeps the definitions in one governed place. A report or agent then runs on that data: the monthly KPI pack, or a daily Deskless by IVP.ai check that flags a P1 approaching its deadline or a statutory task without a certificate before the month closes. A national fire safety and security company used the same approach to unify HubSpot, Uptick and finance spreadsheets into one governed view, saving more than 10 hours a week on reporting (case study).

Related pages: the PPM compliance report template covers statutory PPM in more depth, field service KPIs covers the internal weekly pack, and engineer utilisation covers the resourcing side. More at field service reporting.

If you want to see your own contract's KPIs calculated from live data, the free 48-hour build connects up to three of your sources, cleans the data and sets one report or agent running within 48 hours of read-only access. You keep access for 14 days, then choose a plan or walk away.

Questions

Frequently asked questions

What KPIs do public sector FM contracts usually include?

In the documents compiled on this page, the recurring set is statutory and routine PPM completion by due date, reactive response or completion by priority band, first-time fix, helpdesk call answering, customer satisfaction, health and safety events, and the monthly report itself. Newer schedules add social value and carbon measures, often without money attached. Each buyer defines them differently, so read the measurement column of the schedule, not just the KPI name.

How are service credits calculated on an FM contract?

It depends on the contract. Published examples include a percentage weighting per KPI, failure points per incident weighted by severity (Kent's sample awards 40 for a statutory failure that leads to enforcement), deduction values per service priority category, and a full day's contract payment while standards are not met. Check whether credits are capped, whether repeat failures escalate, and what base the percentage applies to before pricing the risk.

Does a PPM visit count as complete if the certificate is not uploaded?

Under some contracts, no. City of London's building repairs KPI was 'PPM Task Completion and Document Upload', and the contractor failed it because compliance documentation was not consistently loaded onto the CAFM system, leading to deductions. Store a certificate upload timestamp against every statutory task and count completion only when both the visit and the document are in by the deadline.

Where should the data for an FM contract KPI report come from?

From the systems that record the work, not a separate tracker. PPM and reactive timestamps come from the job system, call answering from telephony or the helpdesk, scores from the survey tool, and targets and weightings from the contract schedule. Join them on asset, site and ticket references so every KPI can be traced back to the individual jobs behind it when the buyer challenges a figure.

Sources

About the author

Simon Dutton

Simon has more than 10 years of experience as a data scientist, working with start-ups, SMEs, Google and the CMA.

Last reviewed 5 November 2026.

Your first report or agent in 48 hours.

Tell us which systems feed it. We connect them, clean the data and set the report running automatically. If it isn’t useful, walk away.