---
title: "Construction Job Costing: How to Track Profit Per Project (2026)"
description: Learn construction job costing in 2026. Track labor, materials, subs, and overhead to protect margins and improve profit per project.
---

[TaskTag Blog | Ideas and Tips for Construction Project Management](https://blog.tasktag.com)

# [Construction Job Costing: How to Track Profit Per Project (2026)](https://blog.tasktag.com/construction-job-costing-profit-per-project-2026)

 Written by [Mak Pastrana](https://blog.tasktag.com/author/mak-pastrana) | May 7, 2026, 5:55:07 AM

Most contractors know how much money came in last year. Very few know which jobs actually made money. [**FMI's 2024 survey found contractors who track job costs earn 2.3x higher net margin**](https://tasktag.com/pricing)**s** — not because they work harder, but because they know where they're losing money and fix it.

**Key Takeaways**

- Contractors who track job costs earn **2.3x higher net margins** (FMI, 2024)
- [**Labor is the most common source of overruns**](https://app.tasktag.com/register/signup-with-email) — typically 15–25% over estimate without daily time tracking
- Job costing requires your estimate to be broken down the same way you track actuals — or the comparison is useless
- [The goal is closing the feedback loop](https://blog.tasktag.com/tag/tasktag): use actuals to improve every future estimate

## **The 5 Cost Categories Every Contractor Must Track**

### **1. Direct Labor**

Track hours per crew member per phase, with burden rate applied (28–35% above base wage).

Fully Loaded Labor = Hourly Wage × (1 + Burden Rate) × Hours Worked

Example:

Carpenter at $32/hr × 1.32 burden × 48 hours = $2,027 actual

vs. $1,536 estimated (40 hrs) → $491 over, 32% labor overrun

### **2. Materials**

Code every receipt to the job and phase at point of purchase — not at month-end. Track waste percentage vs. estimated waste.

### **3. Subcontractors**

Track original subcontract amount, approved change orders, and invoices paid. Every verbal addition is a change order — document it. See our construction change order template.

### **4. Equipment and Tools**

**Owned equipment is not free.** Calculate an internal rate: depreciation + fuel + maintenance + insurance ÷ annual billable days.

$35,000 truck ÷ 5 years + $4,800 insurance + $3,600 fuel + $1,200 maintenance

= $16,600/year ÷ 240 days = $69/day internal charge rate

### **5. Job Overhead (Indirect Costs)**

[Permits, dumpsters, temp utilities, supervision time, inspections.](https://blog.tasktag.com/mastering-construction-project-management) Frequently missing from job cost tracking — and from estimates.

## **The Job Cost Variance Formula**

Variance ($) = Actual Cost − Estimated Cost

Variance (%) = (Actual − Estimated) ÷ Estimated × 100

Actual Gross Profit = Contract Price − Total Actual Cost

Profit Variance = Actual GP − Estimated GP

**Example:** $48,000 bathroom remodel estimated at $33,600 (30% GM) that runs $36,900 actual = **$11,100 actual GP (23.1%)** — $3,300 less than expected. Job costing tells you exactly which category caused it.

## **Copy-Ready Job Cost Tracking Template**

JOB COST SHEET

Project: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

Contract Value: $\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

Start: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ End: \_\_\_\_\_\_\_\_\_\_\_\_

════════════════════════════════════════════

CATEGORY ESTIMATED ACTUAL VARIANCE $ VAR %

═════════════════════════════════════════════

DIRECT LABOR

Demo / Site Prep $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Framing $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Rough MEP $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Drywall $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Finish Carpentry $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Paint $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Flooring $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Punch / Cleanup $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

LABOR TOTAL $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

MATERIALS

Lumber / Framing $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Drywall $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Tile / Flooring $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Cabinets $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Fixtures $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Misc $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

MATERIALS TOTAL $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

SUBCONTRACTORS

Electrical $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Plumbing $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

HVAC $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

SUBS TOTAL $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

EQUIPMENT

Rental $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Owned (internal) $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

EQUIPMENT TOTAL $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

JOB OVERHEAD

Permits / Insp $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Dumpster $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

Supervision $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

JOB OH TOTAL $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

══════════════════════════════════════════════════════════════

TOTAL COSTS $\_\_\_\_\_\_ $\_\_\_\_\_\_ $\_\_\_\_\_\_ \_\_\_\_%

CONTRACT VALUE: $\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

ESTIMATED GROSS PROFIT: $\_\_\_\_\_\_ ( \_\_\_% )

ACTUAL GROSS PROFIT: $\_\_\_\_\_\_ ( \_\_\_% )

PROFIT VARIANCE: $\_\_\_\_\_\_ ( \_\_\_% )

══════════════════════════════════════════════════════════════

LESSONS FOR NEXT ESTIMATE:

1. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

1. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

1. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

## **Weekly Job Costing Workflow**

**Daily:** Crew logs hours by phase; receipts coded and submitted same day; sub invoices logged.

**Weekly:** Compare hours-to-date vs. estimated hours-to-date by phase. Flag any category running 10%+ over — investigate before it compounds.

**At closeout:** Finalize all costs → calculate variance by category → write 3 lessons → update estimating unit costs.

30–45 minutes/week per active project. That's the whole system.

Relevant Article：[Avoid Costly Jobsite Mistakes with a Construction Documentation App](https://blog.tasktag.com/jobsite-mistakes-construction-documentation-app)

## **Connecting Job Costing to Your Other Documents**

- **Estimate + SOW** → defines the cost baseline → how to estimate construction costs + construction scope of work template
- **Change orders** → update estimated cost and contract value simultaneously → construction change order template
- **Invoices / draws** → draw schedule should match cost incurred → contractor invoice template
- **Schedule** → slippage drives labor overruns; a 2-week slip at $4,500/week = $9,000 variance → construction project schedule

*Sources: FMI/Autodesk Construction Disconnected 2024 · CFMA Benchmarker 2024 · NAHB Cost of Construction Survey 2025*

 

[View full post](https://blog.tasktag.com/construction-job-costing-profit-per-project-2026)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Mak Pastrana"
  },
  "dateModified" : "2026-05-07T05:56:11.813Z",
  "datePublished" : "2026-05-07T05:55:07Z",
  "headline" : "Construction Job Costing: How to Track Profit Per Project (2026)",
  "image" : {
    "@type" : "ImageObject",
    "height" : 1215,
    "url" : "https://23964531.fs1.hubspotusercontent-na1.net/hubfs/23964531/1%20-%202026-05-07T004003.028.jpg",
    "width" : 1620
  },
  "mainEntityOfPage" : "https://blog.tasktag.com/construction-job-costing-profit-per-project-2026",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Blog"
  }
}
```