Build Flows

Free resource

Construction reporting metric dictionary

Most reporting arguments are not about the math. They are about what a number means: which change orders count, what date a balance is taken as of, and whether a blank is a gap or a genuine zero.

We write each metric as a contract before building it: an owner who approves it, a plain definition, the formula, the source objects, how missing data appears, and reference cases the team can check the result against. The 29 metrics below follow that pattern. Use them as a starting point and adapt them to your own accounting policies.

Contract and billing

Revised contract

What will we be paid for this job if nothing else changes?

Definition
The original contract value plus approved change orders. Pending change orders are reported separately as exposure, not included.
Formula
Original contract + approved change orders (owner-approved only)
Typical sources
Procore prime contracts; Procore prime contract change orders; accounting contract or job master
Missing data
A job with no prime contract record shows blank and appears on the exceptions list as 'No contract'. Zero is shown only when the contract record exists and its value is genuinely zero.
Common pitfalls
  • Adding pending or draft change orders, which overstates revenue and margin.
  • Summing monthly contract rows across periods instead of taking each job's latest value, which multiplies the contract.
  • Mixing contract values with and without sales tax between jobs.

Glossary: Change OrderRead: Construction WIP Reporting in Power BI: A Controller's Guide

Pending change order exposure

How much contract value is in play but not yet approved, and how old is it?

Definition
The total value of change orders submitted or in negotiation but not approved, shown next to the age of the oldest unapproved item.
Formula
Sum of change order amounts with status pending or submitted; age = reporting date − oldest pending change order created date
Typical sources
Procore change orders and change events; change order log
Missing data
Zero means the change order register was read and holds no pending items. If the register could not be read, show blank with a source status warning.
Common pitfalls
  • Including pending change orders in revised contract instead of showing them as exposure.
  • Counting a change event and its resulting change order twice.
  • Ignoring unpriced change events, which carry real cost exposure with no dollar value yet.

Glossary: Change OrderRead: Construction Project Reporting: Solution Showcase

Earned revenue

How much revenue have we earned to date based on progress?

Definition
The share of the revised contract earned by work performed, using the percent complete method the finance team has adopted. Calculated job by job, then summed.
Formula
Revised contract × percent complete (cost-to-cost, capped at 100%)
Typical sources
Procore budget and prime contracts; accounting job cost
Missing data
Blank when percent complete is blank (no estimate at completion). Never fill with zero, which would make an active job look idle.
Common pitfalls
  • Multiplying portfolio totals instead of calculating per job and summing.
  • Letting percent complete exceed 100%, which pushes earned revenue above contract.
  • Ignoring a projected loss: under percentage-of-completion accounting the full anticipated loss is generally recognized when known. The finance team and CPA decide the treatment.

Glossary: WIP ScheduleRead: Construction WIP Reporting in Power BI: A Controller's Guide

Over billing

On which jobs have we billed ahead of the work performed?

Definition
The amount billed to date in excess of earned revenue on a job. Reported as a liability, often labeled billings in excess of costs and estimated earnings.
Formula
Billed to date − earned revenue, when positive; otherwise 0
Typical sources
Procore owner pay applications or accounting AR invoices; earned revenue measure
Missing data
Blank when earned revenue or billed to date is unknown. Zero only when both are known and billing does not exceed earned revenue.
Common pitfalls
  • Netting over billing against under billing across jobs before showing the gross figures.
  • Using billed amounts net of retainage on some jobs and gross on others; the finance team chooses one basis and applies it to every job.
  • Reading a growing over billing as new invoicing when it was caused by a higher cost forecast lowering percent complete.

Glossary: Over/Under BillingRead: Construction WIP Reporting in Power BI: A Controller's Guide

Under billing

On which jobs have we performed work we have not yet billed?

Definition
Earned revenue in excess of the amount billed to date on a job. Reported as an asset, often labeled costs and estimated earnings in excess of billings.
Formula
Earned revenue − billed to date, when positive; otherwise 0
Typical sources
earned revenue measure; Procore owner pay applications or accounting AR invoices
Missing data
Blank when earned revenue or billed to date is unknown. A job missing from accounting must appear as an exception, not as a fully under-billed job.
Common pitfalls
  • Treating persistent under billing as harmless; it often means unprocessed change orders, late billing or costs running ahead of the forecast.
  • Missing billing records from an unmapped accounting job, which inflates under billing.
  • Netting it against over billing on other jobs in the same total.

Glossary: Over/Under BillingRead: Construction WIP Reporting in Power BI: A Controller's Guide

Net over/under billing

Across the portfolio, are we billed ahead of or behind our earned revenue overall?

Definition
The combined position of over and under billing. Positive means net over billed; negative means net under billed.
Formula
Sum of over billing − sum of under billing (equals total billed to date − total earned revenue)
Typical sources
over billing measure; under billing measure
Missing data
Calculated only from jobs with both values known. Show the count of excluded jobs beside the figure rather than treating them as zero.
Common pitfalls
  • Showing only the net figure, which lets a large over billing on one job hide a large under billing on another.
  • Assuming the figure is right because the identity balances; a source column silently returning zero still balances.

Glossary: Over/Under BillingRead: Construction WIP Reporting in Power BI: A Controller's Guide

Backlog value

How much signed contract revenue is still to be earned?

Definition
Revised contract value not yet earned, across signed work only.
Formula
Revised contract − earned revenue, per job, summed
Typical sources
revised contract measure; earned revenue measure
Missing data
Jobs with no forecast show blank backlog and are counted separately. Month-end backlog before snapshots began shows 'unavailable', not zero.
Common pitfalls
  • Adding CRM pipeline to backlog; show weighted pipeline beside backlog, never inside it.
  • Recalculating past months from the current forecast instead of reading month-end snapshots.

Glossary: BacklogRead: Procore, QuickBooks & HubSpot Reporting Example

Backlog months

At today's pace, how many months will current signed work keep us busy?

Definition
Backlog value divided by recent average monthly earned revenue. The averaging window is a policy choice; three months is common.
Formula
Backlog value ÷ average monthly earned revenue over the last 3 months
Typical sources
backlog value measure; month-end earned revenue snapshots
Missing data
Blank when fewer than the required months of snapshots exist or the average earned revenue is zero or negative. Never divide by zero or show an infinite value.
Common pitfalls
  • Using a single month as the denominator, which swings with one large billing period.
  • Computing monthly earned revenue from the current forecast instead of from month-end snapshots.

Glossary: BacklogRead: Construction WIP Reporting in Power BI: A Controller's Guide

Cost and forecast

Estimated cost at completion (EAC)

What will this job cost when it is finished?

Definition
Cost incurred to date plus the project team's estimate of remaining cost. It drives percent complete, earned revenue and margin.
Formula
Cost to date + estimated cost to complete
Typical sources
Procore budget and forecast; accounting job cost
Missing data
A job with no forecast entered shows blank and is labeled 'No forecast'. Do not substitute budget or cost to date silently.
Common pitfalls
  • Leaving the forecast stale while costs move, so every dependent metric is stale.
  • Taking cost to date from one system and cost to complete from another without reconciling them.

Glossary: EAC (Estimate at Completion)Read: Construction WIP Reporting in Power BI: A Controller's Guide

Percent complete (cost-to-cost)

How far through the job are we, measured by cost?

Definition
Cost incurred to date as a share of estimated cost at completion. Cost-to-cost is the most common method; the finance team and advisers choose the method and any adjustments, such as excluding uninstalled materials.
Formula
Cost to date ÷ estimated cost at completion, capped at 100%
Typical sources
Procore budget and direct costs; accounting job cost
Missing data
Blank when EAC is blank or zero. Jobs where cost to date exceeds EAC show 100% and are flagged as over estimate so the forecast gets updated.
Common pitfalls
  • Filling a missing EAC with zero, producing absurd percentages.
  • Including costs that do not reflect progress, such as stored materials or mobilization, without a policy decision.
  • Letting the value exceed 100% instead of capping and flagging.

Glossary: Cost-to-Cost Percent CompleteRead: Construction WIP Reporting in Power BI: A Controller's Guide

Cost to complete

How much more do we expect to spend to finish the job?

Definition
The project team's estimate of remaining cost, by cost code and in total.
Formula
Estimated cost at completion − cost to date (or the forecast-to-complete field when the PM system stores it directly)
Typical sources
Procore budget forecast-to-complete; cost-to-complete worksheets
Missing data
Blank when no forecast exists. A negative result means cost to date already exceeds EAC and is shown as an exception, not clamped to zero silently.
Common pitfalls
  • Treating a blank forecast as zero remaining cost, which makes the job look finished and profitable.
  • Defaulting cost to complete to budget remaining without the project manager's review.

Glossary: EAC (Estimate at Completion)Read: Construction Project Reporting: Solution Showcase

GP % at completion

What gross margin do we expect on the whole job?

Definition
Expected gross profit at completion as a share of revised contract.
Formula
(Revised contract − estimated cost at completion) ÷ revised contract
Typical sources
revised contract measure; Procore budget and forecast
Missing data
Blank when EAC is missing or revised contract is zero; labeled 'No forecast'. Negative values are shown as they are and flagged at risk.
Common pitfalls
  • Averaging job percentages for the portfolio instead of dividing total gross profit by total revised contract.
  • Calculating margin on original contract after change orders have moved both revenue and cost.

Glossary: Fade and GainRead: Construction WIP Reporting in Power BI: A Controller's Guide

Fade / gain

Is the job's expected margin shrinking or growing?

Definition
The change in GP % at completion between two month-end snapshots. A decrease is fade; an increase is gain.
Formula
GP % at completion (this month-end) − GP % at completion (prior month-end), in percentage points
Typical sources
month-end WIP snapshots
Missing data
Blank when either month lacks a snapshot or a forecast. Months before snapshots began show 'unavailable'.
Common pitfalls
  • Calculating fade from the live forecast instead of stored snapshots, so history rewrites itself.
  • Mixing percentage points and percent change in the same report.

Glossary: Fade and GainRead: Construction WIP Reporting in Power BI: A Controller's Guide

Forecast variance

Where is the forecast final cost running over or under budget?

Definition
The difference between forecast cost at completion and revised budget, by cost code and in total, with a percentage of budget.
Formula
Forecast cost at completion − revised budget; % = variance ÷ revised budget
Typical sources
Procore budget lines (budget, forecast)
Missing data
Blank when either budget or forecast is missing on a line. A cost code with forecast but no budget is flagged 'No budget' rather than shown as an infinite percentage.
Common pitfalls
  • Mixing sign conventions between pages; state whether positive means over budget.
  • Comparing forecast with original rather than revised budget after budget transfers.
  • Netting cost codes so a large overrun is hidden by underruns elsewhere.

Read: Construction Project Reporting: Solution Showcase

Percent bought out

How much of the budget is already committed to subcontracts and purchase orders?

Definition
Committed cost as a share of budget. A low figure late in a job means price risk remains open.
Formula
Committed cost ÷ revised budget
Typical sources
Procore commitments and commitment change orders; Procore budget
Missing data
Blank when budget is zero or missing. Zero only when the budget exists and no commitments are recorded.
Common pitfalls
  • Including self-performed labor budget, which is never bought out, without labeling it.
  • Counting draft or void commitments.

Glossary: Committed CostRead: Construction Project Reporting: Solution Showcase

Cost variance (PM system vs accounting)

Does cost to date in the project system agree with job cost in accounting?

Definition
The difference between project management system cost to date and accounting job cost for the same job. A difference is a finding to review, not automatically an error.
Formula
PM system cost to date − accounting job cost, by mapped job
Typical sources
Procore spent to date; accounting AP and job cost (for example QuickBooks or Sage)
Missing data
Blank, with an exception, when the job is not mapped in both systems. Never treat a missing accounting job as zero cost.
Common pitfalls
  • Adding the two sources together instead of comparing them.
  • Comparing different cutoffs, such as invoice date in one system and posting date in the other.

Glossary: Job CostRead: Procore, QuickBooks & HubSpot Reporting Example

Cash and receivables

Retainage held (owner, subcontractor, net)

How much is withheld from us by owners, how much do we withhold from subs, and what is the net position?

Definition
Retainage receivable held by owners, retainage payable held on subcontractors, and the difference. Treatment in billed and AR figures is a policy choice for the finance team and advisers.
Formula
Net retainage = retainage held by owner − retainage held on subcontractors, each read from the latest issued (owner) or approved (subcontractor) pay application
Typical sources
Procore owner and subcontractor pay applications; accounting retainage receivable and payable
Missing data
Blank for a contract with no issued or approved pay application. Zero only when a pay application exists and retainage is genuinely zero.
Common pitfalls
  • Summing pay application retainage across periods; the columns are running balances, so only the latest one counts.
  • Including draft pay applications.
  • Mixing gross and net-of-retainage billing between jobs.

Glossary: RetainageRead: Construction Project Reporting: Solution Showcase

AR outstanding (as of a date)

How much posted customer receivable remains unpaid at the reporting cutoff?

Definition
Posted customer invoice balances, net of credits and payments applied through the cutoff, in the reporting currency. The controller chooses whether retainage is included.
Formula
Posted invoice amounts − applied credits − payment allocations, all through the cutoff date (or the accounting system's authoritative as-of balance)
Typical sources
accounting AR invoices and payments; AR aging report
Missing data
Unmapped or unavailable balances appear as exceptions. A mapped job with no open invoices shows zero; an unmapped job shows blank.
Common pitfalls
  • Subtracting payments from a field that is already a remaining balance.
  • Using today's balances for a past cutoff instead of reconstructing as of the date.
  • Dropping credit balances instead of preserving them.

Glossary: AR AgingRead: Procore, QuickBooks & HubSpot Reporting Example

Days to payment / DSO

How long do customers take to pay us?

Definition
Average days to payment measures paid invoices from invoice date to payment date. Days sales outstanding (DSO) estimates collection time from the AR balance relative to billings over a period.
Formula
Days to payment = average (payment date − invoice date) over paid invoices; DSO = AR outstanding ÷ billings in period × days in period
Typical sources
accounting AR invoices and payments
Missing data
Blank when no invoices were paid (days to payment) or no billings occurred (DSO) in the period. Never show zero days.
Common pitfalls
  • Including retainage in DSO, which inflates it on jobs where retainage is not yet due.
  • Ignoring open invoices: average days to payment looks good when slow invoices simply have not been paid yet.
  • Mixing invoice-weighted and dollar-weighted averages without saying which is used.

Glossary: AR AgingRead: Construction Project Reporting: Solution Showcase

Expected collections

How much cash do we expect to collect each week?

Definition
Open customer invoice balances placed in the week they fall due. Overdue balances roll into the current week.
Formula
Sum of open AR balances by due-date week; due date before this week → current week
Typical sources
accounting AR invoices; invoice terms and due dates
Missing data
Invoices without a due date appear in an 'Undated' row rather than being dropped or assigned a guessed date.
Common pitfalls
  • Including retainage before its release conditions are met.
  • Adding unbilled backlog or pipeline to expected collections.

Read: Procore, QuickBooks & HubSpot Reporting Example

Cumulative cash position

Based on what we have invoiced and been billed, where is cash heading over the coming weeks?

Definition
The running total of expected collections minus expected payments by week. It is a projection from issued invoices and bills, not a bank balance.
Formula
Running sum by week of (expected collections − expected payments to vendors and subcontractors)
Typical sources
accounting AR invoices; accounting AP bills
Missing data
A week with no due items shows zero movement; if AR or AP failed to load, the series is blank with a source status warning, not a flat line.
Common pitfalls
  • Presenting it as cash on hand without a starting bank balance.
  • Including unbilled backlog, which has not been invoiced.

Read: Procore, QuickBooks & HubSpot Reporting Example

Schedule

Overdue milestones %

What share of critical milestones are late?

Definition
Critical-path milestones whose finish date has passed while still under 100% complete, as a share of all critical milestones.
Formula
Count of critical milestones with finish date < reporting date and percent complete < 100% ÷ count of critical milestones
Typical sources
scheduling system milestones (for example Outbuild or Primavera P6)
Missing data
Blank when the project has no milestones in the scheduler or is missing from it. Zero only when milestones exist and none are overdue.
Common pitfalls
  • Counting milestones with inverted dates (finish before start) instead of flagging them.
  • Using forecast finish dates that were moved to avoid being overdue, without comparing to baseline.

Glossary: Critical PathRead: Construction Project Reporting: Solution Showcase

Completion variance days

How many days late or early is the job forecast to finish against its baseline?

Definition
Forecast finish date minus baseline finish date, in calendar days. Positive means late.
Formula
Forecast completion date − baseline completion date (calendar days)
Typical sources
scheduling system forecast finish; baseline dates register
Missing data
Blank when no baseline date is recorded. Zero means the job is on its baseline date.
Common pitfalls
  • Re-baselining without recording it, so the variance resets to zero.
  • Mixing calendar and working days between projects.

Glossary: Baseline ScheduleRead: Construction Project Reporting: Solution Showcase

Quality and safety

Observation closure days

How quickly are quality and safety observations being closed?

Definition
Average days from an observation being created to being closed, for observations closed in the period.
Formula
Average (closed date − created date) for observations closed in the period
Typical sources
Procore observations
Missing data
Blank when no observations were closed in the period. Report open observations and past-due counts alongside it.
Common pitfalls
  • Looking only at closed items; long-open observations do not affect the average until they close.
  • Including observations closed as duplicates or voided.

Read: Construction Project Reporting: Solution Showcase

Punch items aged over 7 days

How many open punch items have gone past the escalation threshold?

Definition
Count of open punch items created more than 7 days before the reporting date. The threshold follows the firm's escalation policy.
Formula
Count of punch items with status open and (reporting date − created date) > 7
Typical sources
Procore punch list
Missing data
Zero when the punch list was read and no items exceed the threshold. Blank when the punch list did not load for the project.
Common pitfalls
  • Measuring age from due date on some projects and created date on others.
  • Counting items in draft or 'ready for review' as open without a stated rule.

Read: Construction Project Reporting: Solution Showcase

Recordable incidents

How many recordable safety incidents occurred in the period, against the hours worked?

Definition
Count of incidents classified as recordable under the firm's safety program, reported with hours worked so the figure has context.
Formula
Count of incidents marked recordable with incident date in the period; hours worked summed from manpower logs
Typical sources
Procore incidents; Procore manpower logs
Missing data
Blank, shown as 'Not measured', when no hours are logged for the period. Zero means hours were logged and no recordable incidents occurred.
Common pitfalls
  • Showing zero incidents for a month with no logged hours.
  • Counting near misses or first-aid cases as recordable.

Read: Construction Data Quality: The Rules That Make Reports Trustworthy

Data quality and freshness

Source coverage %

What share of projects exist and are mapped in every system the report depends on?

Definition
Projects present and mapped in all required systems (for example the PM system, accounting and the scheduler) as a share of active projects.
Formula
Count of active projects mapped in all required systems ÷ count of active projects
Typical sources
project crosswalk; Procore projects; accounting jobs; scheduling projects
Missing data
Each missing mapping is listed by project and system. An unmapped project stays in totals and is flagged, never dropped.
Common pitfalls
  • Letting a project missing from accounting report zero revenue unnoticed.
  • Matching projects by name automatically when the match is ambiguous.

Glossary: CrosswalkRead: Construction Data Quality: The Rules That Make Reports Trustworthy

Unresolved records

How many records are missing, unmatched or unassigned, and how much money do they carry?

Definition
Count of records on the unresolved worklist (rejected rows, unmatched invoices, unmapped projects, cost codes or trades), with the amount they carry and the system to fix each in.
Formula
Count of open worklist rows; amount = sum of money on rows that carry it, counted once
Typical sources
rejects tables; data-gap register; project and cost-code crosswalks
Missing data
Zero means every check ran and found nothing. If the checks did not run, show blank with the pipeline status, not zero.
Common pitfalls
  • Dropping rejected rows instead of keeping them with a reason.
  • Counting the same dollars twice when one invoice is both unmatched and on an unmapped project.

Glossary: Data-Quality GateRead: Construction Data Quality: The Rules That Make Reports Trustworthy

Data freshness (hours since last validated refresh)

How old are the numbers on this page, and did the last run pass its checks?

Definition
Hours since the last refresh that passed the data-quality gate, shown with a pipeline status such as passed, warnings, late, stale or blocked.
Formula
Current time − timestamp of last refresh that passed the quality gate, in hours
Typical sources
pipeline run log; data-quality gate results
Missing data
If no validated run exists, show 'Never validated' rather than a number. A failed run leaves the last good data and its age in place, with the status 'blocked'.
Common pitfalls
  • Showing the last attempted refresh time, which hides a run that failed its checks.
  • Showing time without a time zone or the agreed acceptable age.

Glossary: Data-Quality GateRead: Construction Data Quality: The Rules That Make Reports Trustworthy

Metric contract template

The fields we agree for each metric before it goes into a report. Bracketed fields need real project information. Copy it into your own document and fill it in with the person who owns the number.

Metric name:
[Name]
Business question:
[Question this metric answers]
Owner and approver:
[Role and named person]
Definition and unit:
[Plain language definition, currency or count, tax and retention treatment]
Reporting basis:
[As of date, event date, period cutoff, time zone]
Source objects:
[System, table or endpoint, fields, and version]
Identifier rules:
[Project/job/cost code mapping and unmatched behavior]
Formula:
[Calculation with inputs and exclusions]
Filters:
[Entity scope, statuses, voided or deleted records, currency]
Missing data behavior:
[Unknown, incomplete, unavailable, or genuine zero]
Reference cases:
[Known record, expected output, tolerance]
Refresh and freshness:
[Cadence, required age, stale behavior]
Change process:
[Who reviews changes, version, effective date]
Approved by and date:
[Approval evidence]

Next step

Need these numbers to agree across your systems?

WIP, over/under billing, and cash only help when everyone trusts the definitions. Tell us how your team builds them today and which systems are involved.

Prefer email? charley@buildflows.ai