Construction · Change orders

Change order cycle time

The number of days from when a change order is submitted to the owner to when it is approved. Long cycle times delay billing and leave work done but unpaid.

Plan your metrics

What it is

When scope changes, the contractor prices the change and submits a change order request to the owner. The owner reviews, negotiates, and approves or rejects it. Cycle time is how long that takes.

Approved changes are measured by cycle time. Changes still pending are measured by open age: days since submission.

Why operators track it

  • Cash. Work on an unapproved change often cannot be billed, so long cycle times show up as underbilling.
  • Margin risk. Costs post to the job before the revenue is approved, which can make the job look like it is fading.
  • Owner relationships. Cycle time by owner or architect shows who is slow to approve.
  • Forecast quality. Pending changes are a common source of disagreement between the PM's view and the WIP.

How it is calculated

Cycle time = approved date − submitted date (in days)

  • Report the median across approved change orders in a period. A few slow ones can pull an average far up.
  • Report open age for pending changes separately: as-of date − submitted date.
  • Pair both with the dollar value pending.

Worked example

Job 2417 has four change orders. Three were approved in 28, 50, and 14 days, a median of 28 days. The fourth, worth $42,000, has been pending 72 days.

Change orders on job 2417: days from submitted to approvedJul 1Aug 1Sep 1Oct 1Nov 1CO-0728 daysCO-0850 daysCO-0914 daysCO-1072 days, still pendingMedian cycle time for approved change orders: 28 days (14, 28, 50).CO-10, worth $42,000, has been pending 72 days as of Oct 31. The work is done but cannot be billed.
Example data Blue bars are approved change orders. The dashed bar is still pending and is counted separately as open age.

How to read it

  • Median and open age together. A low median can hide one large change order pending for months.
  • Weight by dollars. A slow $200,000 change matters more than a slow $2,000 one.
  • Split by owner and by stage. Time with the contractor (pricing) and time with the owner (review) have different fixes.
  • Typical cycle times depend on contract type and owner, so we do not publish a benchmark.

Definitional choices and common pitfalls

  • Start date. Submitted to owner, or when the change was first identified. Starting at identification also captures the contractor's own pricing time.
  • End date. Approved by the owner, or fully executed and signed. Say which.
  • Rejected and revised. Decide whether a revised resubmission restarts the clock.
  • Potential change orders. Many systems track a potential change order before the formal request. Choose which stage starts the measure.
  • Median or average. Median is less sensitive to outliers. If you show average, show the count too.

How different roles use it

Role How they use it
Owner / CEO Watches total value pending and the oldest items.
CFO / controller Tracks pending change orders as a cash and underbilling risk.
Project manager Chases approvals on their jobs and prices changes quickly.
Operations / superintendent Flags scope changes from the field so they enter the log early.

Questions it answers

  • How long do owners take to approve changes?
  • How much approved work is waiting on paperwork?
  • Which owners or architects are slowest?
  • Which pending changes are oldest?

How to present it in a report

  • KPIs for median cycle time, number and value pending, and oldest open age.
  • A list of pending change orders sorted by age with dollar value.
  • Median cycle time by owner or by PM.
  • A monthly trend of median cycle time.
Customer report mockupExample data
Change orders: approval speedJob 2417 · as of Oct 31, 2026
Median cycle time28 days3 approved
Pending$42,0001 change order
Oldest pending72 daysCO-10
COStatusSubmittedApprovedDaysRevenue
CO-10PendingAug 2172 open$42,000
CO-08ApprovedJul 16Sep 450$30,000
CO-07ApprovedJul 3Jul 3128$55,000
CO-09ApprovedAug 5Aug 1914$15,000

Data you need

Fields

Field What it means Example value
Change order ID, job, and description CO-10, job 2417
Status Draft, submitted, approved, rejected, void Pending
Submitted date When the request went to the owner Aug 21
Approved date When the owner approved it none
Revenue amount Contract value requested or approved $42,000
Cost amount Budget added for the change $36,000
Owner / approver Who must approve it Main St LLC

What the raw data looks like

Example data A few rows as they might come out of the source system.

CO Job Status Submitted Approved Revenue Owner
CO-07 2417 Approved Jul 3 Jul 31 $55,000 Main St LLC
CO-08 2417 Approved Jul 16 Sep 4 $30,000 Main St LLC
CO-09 2417 Approved Aug 5 Aug 19 $15,000 Main St LLC
CO-10 2417 Pending Aug 21 none $42,000 Main St LLC

Where this data usually lives

  • Project management often holds change orders, commitments, and project documents. For example: Procore.
  • Construction ERP and accounting holds job cost, budgets, billing, AP, and AR. For example: Sage 300 Construction and Real Estate, Viewpoint Vista (Trimble), and Foundation. Some smaller contractors use general accounting software such as QuickBooks with jobs set up as projects.
  • Spreadsheets often hold forecasts, logs, or the report itself.

The same field can live in more than one system. Agree with the customer which one is the source of truth.

Common data gaps and traps

  • Dates not captured. Some systems store only the current status, not when it changed. Status history or audit logs may be needed.
  • Changes outside the system. Field changes may live in email until the PM enters them.
  • Two systems. The PM tool holds the request; the ERP holds the approved amount. Join on CO number.
  • Approved date is the entry date. If the ERP date is when accounting keyed it in, cycle time is overstated.

FAQ

What is a good change order cycle time?
It depends on the owner and contract. Track your own trend and compare owners.
Should rejected change orders count?
Show them separately. Including them in the median mixes two different outcomes.
Why median instead of average?
A few very slow change orders can make the average misleading.
For your data teamFormula variants, tables, SQL sketch, and dashboard spec

Formula details

cycle_days    = approved_at - submitted_at              -- approved only
open_age      = :as_of - submitted_at                    -- pending only
median_cycle  = PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY cycle_days)
pending_value = SUM(revenue_amount) WHERE status = 'pending'

Worked example detail

CO Cycle days Open age
CO-07 28
CO-08 50
CO-09 14
CO-10 72
Median (approved) 28

Tables and fields

Table Fields Notes
change_orders co_id, job_id, status, submitted_at, approved_at, revenue_amount, cost_amount, owner_id
co_status_history co_id, status, changed_at Needed if dates are not stored on the record

SQL sketch

SELECT job_id,
  PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY approved_at - submitted_at)
    FILTER (WHERE status = 'approved') AS median_cycle_days,
  COUNT(*) FILTER (WHERE status = 'pending') AS pending_count,
  SUM(revenue_amount) FILTER (WHERE status = 'pending') AS pending_value,
  MAX(:as_of - submitted_at) FILTER (WHERE status = 'pending') AS oldest_open_days
FROM change_orders GROUP BY job_id;

Build spec

Copy this into a ticket. It lists the grain, inputs, logic, and edge cases.

metric: construction.change_order_cycle_time
grain: one row per change order
inputs:
  - status
  - submitted_at
  - approved_at
  - revenue_amount
  - owner_id
logic:
  - cycle_days = approved_at - submitted_at for approved
  - open_age = as_of - submitted_at for pending
  - median by job, owner, PM, month approved
edge_cases:
  - approved_at before submitted_at: flag as data error
  - resubmitted CO: keep original submitted_at unless policy says restart
  - void or rejected: exclude from median, count separately

As a dashboard card

  • KPIs for median cycle time and pending value, a table of pending change orders by age, and a bar of median by owner.

Common mistakes

  • Averaging cycle time with a few extreme outliers.
  • Leaving pending changes out entirely.
  • Using the accounting entry date as the approval date.

Version 1.0 · Last reviewed 2026-10-20 · Machine-readable definition