COGS and labor percentage for contractors: the two numbers that explain your margin
Revenue tells you what came in. COGS and labor percentage tell you what you actually kept. This guide covers how to calculate both, what the numbers reveal, and how to use them to catch margin drift before the month closes.
Formula
COGS = direct labor + materials and parts + subcontractor costs + equipment costs per job
Cost of goods sold (COGS) captures everything spent to complete a job before overhead enters the picture. For a plumbing or HVAC company, that means technician wages and burden (payroll taxes, benefits), the parts and materials on the truck, any subcontractors used on that call, and equipment wear allocated to the work. Overhead items such as management salaries, rent, insurance, and software are excluded from COGS. Gross profit = revenue minus COGS. Gross margin = gross profit divided by revenue, expressed as a percentage.
Definitions vary by accounting method. Always reconcile your COGS categories with your controller before building a reporting view.
Formula
Labor percentage = total labor cost / total revenue x 100
Labor percentage isolates the share of revenue consumed by field and install labor including burden. In most skilled-trades companies it is the single largest variable in COGS and the first number to move when something is off: overtime runs high, a job takes longer than the estimate, or crew mix is wrong for the work type. If labor percentage is running above your company target mid-month, gross margin is almost certainly compressing. Labor percentage and COGS are two views of the same cost story told at different levels of detail.
What this article covers
- How to calculate COGS and gross margin in a home-service context, with the exact formula.
- How labor percentage connects to COGS and why it is the fastest leading signal of a margin problem.
- Which role in a contracting business owns each number and what decision it should trigger.
- The data hygiene prerequisites before you can trust either metric in a reporting tool.
- How to see COGS and labor percentage in real time, not just at month-end.
Why COGS and labor percentage belong on every contractor's dashboard
Most home-service companies track revenue because it is easy: jobs are billed, payments are collected, the number is obvious. COGS and labor percentage are harder to see in real time because the data lives in two places: the CRM holds the job and the revenue, and the accounting system holds the cost. When those two systems do not talk, margin is invisible until the bookkeeper closes the month.
The practical cost of that delay is real. If labor percentage climbs three points above target in week two, an owner who knows about it in week two can adjust scheduling, pull back on overtime, or review job types. An owner who finds out on the 8th of the following month is reviewing history. COGS and labor percentage are leading indicators of a margin problem, but only if you can see them before the period closes.
These two metrics also point at different parts of the cost structure. COGS is the full direct-cost picture per job or per period: labor, parts, subcontractors, equipment. Labor percentage isolates the biggest variable inside COGS, the one that moves the fastest and is most directly controllable by the operator through scheduling, dispatching, and coaching. Use both together: COGS to audit the overall margin, labor percentage to find the immediate lever.
Breaking down COGS in a field service business
COGS in a home-service company is not identical to COGS in a product-based business. You are selling labor and expertise, not manufacturing inventory. The line items that belong in COGS vary by trade and accounting approach, but the categories below cover most field service setups.
Field labor and burden
Technician and installer wages plus burden: payroll taxes (FICA, FUTA, SUTA), workers compensation, health insurance attributable to field staff, and any paid time off that is job-allocated. Burden typically adds 20 to 30 percent on top of the base wage. An HVAC technician earning $28 per hour may cost $34 to $38 per hour all-in. A company that prices labor at straight hourly rates without burden is underestimating its real labor cost per job.
Materials, parts, and inventory
Parts purchased for a specific job, materials pulled from truck inventory, and supply-house runs. For electrical, plumbing, and HVAC companies, materials cost per job can vary widely: a simple drain clear uses minimal parts; a full system install may have equipment costs that represent 30 to 50 percent of the job revenue. Accurate materials tracking requires that technicians log parts used in the CRM, not just the invoice total.
Subcontractor costs
Any outside labor used to complete a job billed under your company. Common in roofing, restoration, and general contracting, but also in electrical and plumbing for specialty work. Subcontractor cost belongs in COGS because it is a direct cost of delivering that specific job.
Equipment and vehicle allocation
Some companies allocate a portion of fleet costs and specialized equipment depreciation to COGS, treating it as a cost of doing the work rather than overhead. Others keep fleet entirely in overhead. Either approach is consistent as long as it is applied the same way every period. Shifting the treatment mid-year makes comparisons meaningless.
Who owns each margin metric in a home-service company
| Metric | Who tracks it | Decision it drives | Frequency to review |
|---|---|---|---|
| COGS as % of revenue (gross margin) | Controller or owner | Is the business profitable enough to cover overhead and grow? | Weekly mid-month, monthly to close |
| Labor percentage | Operations manager or GM | Is scheduling and crew mix right for the job volume? | Daily or weekly; adjust before overtime compounds |
| Materials cost per job | Department manager or service manager | Are technicians logging parts and pricing jobs at cost-plus correctly? | Per job and per week |
| Gross profit per tech per day | Sales manager or service manager | Which technicians are generating profitable production? | Weekly for coaching, monthly for comp review |
| COGS by department (service vs. install) | Owner or GM | Which revenue lines are actually profitable, and which are subsidized? | Monthly at minimum; mid-month if one department is busy |
Warning
Data visibility gap: QuickBooks alone is not enough
Most home-service companies run QuickBooks for accounting and a CRM (ServiceTitan, Housecall Pro, or Workiz) for jobs and scheduling. COGS in QuickBooks reflects what was coded to expense accounts. Labor percentage in QuickBooks depends on how payroll is categorized. Neither system, on its own, shows COGS and labor percentage per job or per technician in real time. The CRM holds the job-level data. QuickBooks holds the cost coding. Only when both are consolidated into one view can you see gross margin by job type, by department, or by tech without building a manual spreadsheet every week.
How to read labor percentage as an early warning signal
Labor percentage moves before most other margin signals. Here is why: labor costs are incurred daily, but the revenue from those hours may be spread across jobs that close over several days or weeks. When overtime runs in week one and the jobs are still open, labor cost is already in the books but the revenue has not yet posted. That timing gap makes labor percentage one of the best weekly indicators of whether the current month is on track.
The most common drivers of high labor percentage in field service
Overtime accumulation: scheduled hours exceed what the job volume supports, so technicians run overtime to close work rather than being dispatched efficiently. Callback and rework: a job that requires a second truck roll costs labor without generating additional revenue. Poor crew mix: sending two technicians when one would complete the job adds labor hours to the same revenue. Slow season with fixed labor: a company keeping its full field team through a demand trough will see labor percentage climb because revenue is down while payroll is fixed.
What to do when labor percentage is running high
First, confirm whether the overtime is job-driven or administrative: if techs are running overtime completing booked calls, the schedule may be undersupported. If overtime is in the shop or on callbacks, it points to rework or inefficiency. Second, check if a particular technician or job type is driving the number: a single high-overtime week on a large install does not mean the whole service business has a labor problem. Third, adjust dispatching before the week closes rather than after payroll posts.
COGS and labor percentage signals: good, watch, and poor
These are directional signals only. Targets vary significantly by trade, market, season, job mix, and business model. Use these as a starting point for setting your own thresholds with your controller.
- Gross margin (revenue minus COGS / revenue)Compression during a growth push is worth investigating immediatelyGood
- Current
- Stable or improving vs. prior period
- Target
- Consistent with your target, not just positive
- Labor percentage trend week-over-weekRising labor % during a busy period is a scheduling or efficiency signalGood
- Current
- Within 2 percentage points of your target
- Target
- Flat or declining as revenue grows
- Materials cost as % of revenueParts logging gaps in the CRM often show up as unexplained materials cost increasesWatch
- Current
- Creeping above prior period average
- Target
- Consistent with job type and pricing model
- COGS by department: service vs. installInstall jobs typically carry different cost structures; blending hides the department pictureWatch
- Current
- Install COGS significantly higher than service as % of revenue
- Target
- Each department tracked to its own margin target
- Gross profit per tech per dayMulti-week decline usually points to overtime, callback volume, or a job-mix shiftPoor
- Current
- Declining over two or more consecutive weeks
- Target
- At or above department average
| Metric | Current | Target | Status |
|---|---|---|---|
| Gross margin (revenue minus COGS / revenue)Compression during a growth push is worth investigating immediately | Stable or improving vs. prior period | Consistent with your target, not just positive | Good |
| Labor percentage trend week-over-weekRising labor % during a busy period is a scheduling or efficiency signal | Within 2 percentage points of your target | Flat or declining as revenue grows | Good |
| Materials cost as % of revenueParts logging gaps in the CRM often show up as unexplained materials cost increases | Creeping above prior period average | Consistent with job type and pricing model | Watch |
| COGS by department: service vs. installInstall jobs typically carry different cost structures; blending hides the department picture | Install COGS significantly higher than service as % of revenue | Each department tracked to its own margin target | Watch |
| Gross profit per tech per dayMulti-week decline usually points to overtime, callback volume, or a job-mix shift | Declining over two or more consecutive weeks | At or above department average | Poor |
Info
Before you build this: four data hygiene checks
Before wiring COGS or labor percentage into any reporting view, confirm four things: (1) Your QuickBooks chart of accounts separates field labor from management and overhead labor, otherwise labor percentage will include non-field costs and be misleadingly high. (2) Your technicians are logging parts used per job in the CRM, not just at invoice time. Incomplete parts logging makes materials cost invisible at the job level. (3) Your payroll export is coded consistently: if some payroll runs sit in COGS and some in overhead depending on who processed it, the numbers will not tie out. (4) Your CRM and QuickBooks are measuring the same period: a mismatch in cut-off dates between systems creates phantom margin swings that are data problems, not business problems.
Tracking COGS and labor percentage in a dashboard
The challenge is not calculating these metrics: the formulas are straightforward. The challenge is getting the data into one place, current enough to act on, without rebuilding a spreadsheet every Monday morning.
For teams using QuickBooks alongside a CRM such as ServiceTitan, Housecall Pro, or Workiz, a dashboard that consolidates both sources can surface gross margin, labor percentage, and COGS as a percentage of revenue in a single Financial board, updated far more frequently than the monthly close. Datacube's Financial board is configured to pull revenue and cost data from QuickBooks, then layer on job-level CRM data for department and technician breakdowns. That means an owner can see labor percentage by department mid-week, not just as a month-end line on the income statement.
The goal is not to replace the income statement. It is to surface the signals that predict what the income statement will say, early enough to change the outcome. A labor percentage dashboard is most useful as a weekly coaching tool for operations managers and dispatchers, not as a month-end accounting report. See the financial dashboard page for a closer look at what those boards include.
COGS and labor percentage for contractors: common questions
See your margin picture before the month closes
If your COGS and labor percentage live in QuickBooks and your job data lives in your CRM, a datacube financial dashboard can bring both together in one view your controller and your operations manager can both use. Book a live demo to see what that looks like for a company at your scale.
