What KPIs Should a Painting Business Track?
Painting businesses live and die on labor hour accuracy. Here are the 3 daily, 5 weekly, and 4 monthly KPIs that expose margin leaks before they eat the job, plus benchmarks by job type.
Key takeaways
- Hours variance of more than ±15% against estimate on any job is a margin leak that needs an explanation at job close
- Bid win rates split by job type: 40-60% interior, 35-55% exterior, 20-35% commercial
- Gross margin benchmarks at 40-55% across job types; below 40% usually means labor overruns or systematic underbidding
- Revenue per labor hour of $65-$90 is the target; below $65 means crew time is being sold too cheap or wasted
The thing that kills painting company margin is not bad pricing, it is labor hour creep on jobs that were bid accurately but run long. A job estimated at 24 hours that finishes at 31 is a 29 percent labor overrun. At $28 per hour fully loaded crew cost and a $1,800 invoice, that overrun erases most of the margin. The job was priced right. The hours were not controlled, which is exactly the problem covered in job profitability for home services.
The KPIs for a painting business exist to catch that overrun while it is still happening, not after the invoice is sent and the margin is gone.
3 Daily KPIs
Open Estimates Older Than 48 Hours with No Follow-Up
Every estimate that is more than 48 hours old and has not received a follow-up call or email needs attention today. Painting estimates cool fast. Homeowners who requested a quote are often collecting 2 to 3 bids simultaneously. The contractor who follows up first after delivering the estimate closes more work. Beyond 72 hours without contact, close rate drops sharply.
This is not a weekly check. It is a daily filter. Pull every open estimate, sort by date sent, and make a call or send a message to everything older than 48 hours. The cadence is in estimate follow-up cadence for home services.
Jobs in Progress vs. Crew Allocated
Count of active jobs currently in progress versus number of crews available today. If you have 4 active jobs and 3 crews, one job is not getting touched today. If that is by design (a large multi-day project that is paused between coats), document it. If it is not by design, someone made a scheduling error and a customer is waiting for work they were told would continue.
This check prevents the drift where a job gets "in progress" status in the CRM but has not had a crew on it for 3 days.
Jobs Finishing Today
Jobs on the schedule with a completion date of today. These need final walk-through scheduled, invoice triggered, and any punch list items identified. A job that finishes without a same-day invoice is 2 to 4 weeks away from getting paid instead of 1 to 2 weeks. For a painting company running tight on cash flow, that gap matters.
Text Clint: "which open estimates are more than 48 hours old with no follow-up logged, and which jobs are finishing today without an invoice sent?"
5 Weekly KPIs
Bid Win Rate by Job Type
Interior residential, exterior residential, commercial. Track the win rate on each separately. A 55 percent overall win rate is meaningless if you are at 70 percent on interior and 25 percent on commercial. The commercial miss rate might mean you are overpriced for that market, or it might mean you are underresourcing the estimating process for commercial bids (taking too long, not following up, not showing up professionally).
Most painting CRMs (Jobber, Housecall Pro, PaintScout) track win rate globally. Segmenting by job type requires tagging estimates on entry or filtering exports. Cross-trade benchmarks live in what is a good close rate for home services.
Hours Per Job: Actual vs. Estimated
Every job that closed in the last 7 days: how many hours were estimated versus how many labor hours were logged? Flag every job with a variance of more than ±15 percent. Jobs that ran significantly over estimate need an explanation. Jobs that ran significantly under estimate are worth understanding too, because the reason might be that the crew cut corners.
This check is where most painting companies find their margin leaks. Hourly overruns are predictable across job types once you have 20 to 30 data points. If 2-story exterior jobs consistently run 20 percent over estimate, the estimate template is wrong, not the crew.
Revenue Per Crew Per Day
Total weekly revenue divided by number of crews divided by working days. The target is $900 to $1,600 per crew per day depending on market, job mix, and crew size. Below $900 suggests scheduling gaps between jobs, long drive times, or crews not starting on time. Above $1,600 on a regular basis is a signal to hire another crew before you lose jobs due to capacity.
Callbacks and Customer Complaints
Count of jobs from the prior 30 days where the customer raised a quality complaint or requested a return visit. Painting complaints are usually about coverage (thin coverage showing the original color), edge quality, or surface prep failures (peeling within months of application). A single complaint per week in a busy shop is normal. More than 2 to 3 per week in a shop doing 20 to 30 jobs requires a quality-process review.
Complaints that go unresolved turn into negative reviews, which directly impact close rate on new estimates.
New Estimates in Pipeline by Dollar Value
Total value of estimates sent but not yet won or lost. This is the pipeline health check. A shop that needs $50,000 in monthly revenue and only has $40,000 in open estimates has a problem coming in 30 days. A shop with $200,000 in open estimates has a capacity planning challenge coming.
Pipeline value should be reviewed weekly during busy season and at least twice monthly during shoulder season.
Text Clint: "bid win rate by job type for the last 30 days, average hours variance on completed jobs this week, and total pipeline value of open estimates?"
4 Monthly KPIs
Gross Margin by Job Type
Revenue minus direct labor and materials cost, divided by revenue, per job type. The benchmarks: interior residential 45 to 55 percent, exterior residential 40 to 50 percent, commercial 35 to 45 percent. Commercial runs lower because project scale requires more supervision and more materials management overhead.
Below 40 percent across all job types means the estimating process is systematically underpricing labor, overruns are consistent and not being addressed, or materials costs have increased without a corresponding price adjustment.
Cost Per New Customer by Lead Source
Total marketing spend on each channel (Google Ads, Angi, Yelp, yard signs, direct mail, referral program) divided by customers acquired from that channel. The target for painting is a cost per booked job under 12 to 15 percent of average job revenue. If your average job is $2,200 and you are paying $400 per booked job from Angi, you are at 18 percent and the math is tight.
Referral cost per booked job is usually $0 to $50 (referral gift or credit). That benchmark makes referral programs the highest-ROI channel in painting for shops that have the volume to generate them; see how to build a referral program for home services.
Average Job Size Trend
The 90-day trend in average job invoice value. Painting average job size tends to drift down over time as small repair jobs fill scheduling gaps between larger projects. If average job size is decreasing, it usually means sales discipline on minimum job size is eroding or the lead sources are shifting toward smaller projects.
A $500 per job shop and a $2,200 per job shop have completely different cost structures and different crew utilization requirements. The trend tells you which direction you are moving.
Employee Productivity: Revenue Per Labor Hour
Total revenue divided by total labor hours paid for the month. The benchmark is $65 to $90 per labor hour. Below $65 means labor cost is too high relative to revenue, either because jobs are being underbid or because crew hours are being wasted on non-billable time (drive time, setup, waiting on materials). Above $90 is possible in premium markets or on specialized work (faux finishes, high-end cabinet painting).
This metric requires clean time tracking. If crews are not logging actual hours per job, the calculation uses payroll hours, which overstates efficiency.
Text Clint: "gross margin by job type for last month and which lead source has the lowest cost per booked job over the last 90 days?"
Benchmarks Table
| Metric | Interior | Exterior | Commercial |
|---|---|---|---|
| Bid win rate | 40-60% | 35-55% | 20-35% |
| Gross margin | 45-55% | 40-50% | 35-45% |
| Hours variance acceptable | ±15% | ±15% | ±10% |
| Revenue per labor hour | $65-$90 | $60-$85 | $55-$80 |
Revenue per labor hour benchmarks from Painting and Decorating Contractors of America financial survey data.
CRM Coverage: Jobber, Housecall Pro, PaintScout
PaintScout is built for painting specifically. Estimate templates with room counts, surface areas, and coverage calculations built in. Material cost tracking against estimate. Win/loss tracking by job type is native. The estimating workflow is the strongest of the three for painters who want to control hours-per-square-foot accuracy.
Jobber handles the operations side well: scheduling, crew dispatch, invoicing, and basic win-rate reporting. No native job costing against estimated hours. Gross margin tracking requires exporting to a spreadsheet or connecting QuickBooks. Good fit for painting shops under $2M that are primarily managing scheduling and invoicing.
Housecall Pro is middle-ground. Strong scheduling and customer communication. Estimate-to-invoice workflow is clean. No native hours-variance tracking. Works for painting shops that are running a simple job type mix without heavy project cost tracking.
All three require QuickBooks or Xero integration to get labor cost data into the job margin calculation. None of the three natively compute revenue per labor hour without a spreadsheet bridge; see the best dashboard for painting business for the rollup pattern.
How Clint Joins Crew Hours with Job Invoices
Getting actual hours versus estimated hours per job requires pulling the job invoice from the CRM and the time entries from the crew scheduling system, then matching them against the original estimate. In most painting setups, those three pieces of data live in different places: the estimate in PaintScout or Jobber, the time entries in a separate timekeeping app or in payroll, and the invoice in QuickBooks.
Clint connects to the CRM and accounting system simultaneously. A question like "which jobs completed this week ran more than 15 percent over on hours?" returns the answer without a spreadsheet. The same connection handles lead source ROI: "what is my cost per booked job from Google Ads versus Angi for the last 90 days?" pulls ad spend from the connected marketing data and compares it against booked revenue directly.
The daily check on estimates older than 48 hours with no follow-up is a question Clint answers in seconds. Most painting CRMs surface this only if you build a custom filter and remember to check it. Clint makes it a 10-second morning check instead of a 5-minute dashboard navigation exercise.
Text Clint: "which jobs completed in the last 7 days ran more than 15 percent over estimated hours, what is my average ticket by job type this month, and which open estimates are older than 48 hours with no follow-up?"
Sources
Frequently Asked Questions
4 questions home service owners actually ask about this.
01What gross margin should a painting business target?
The range is 40 to 55 percent across job types. Interior residential should be at the top of that range (50 to 55 percent) because setup is faster and the work is weather-independent. Exterior drops to 40 to 50 percent. Commercial runs 35 to 45 percent. Below 40 percent overall is a signal that labor overruns or materials cost increases have not been addressed in pricing.
02Why does bid win rate matter more than total bids sent?
Because sending 50 bids at 15 percent close rate is less productive than sending 30 bids at 50 percent close rate, even though the first scenario produces more activity. Win rate tells you whether your pricing, presentation, and follow-up are working for each job type. A shop with a low win rate on commercial but high win rate on residential should stop chasing commercial bids and invest the estimating time elsewhere.
03What is an acceptable hours variance on a painting job?
Plus or minus 15 percent against the estimate. A job estimated at 20 hours that finishes at 22 hours (10 percent over) is within acceptable variance. A job that finishes at 28 hours (40 percent over) needs a post-job review. If that pattern repeats across similar job types, the estimate template is wrong.
04How do I calculate revenue per labor hour for my painting shop?
Take total invoice revenue for the month. Divide by total labor hours paid (from payroll, not invoiced hours). The result is revenue per labor hour. Do this monthly across the whole shop, then per crew if you have more than one. A crew consistently below $65 per labor hour is either doing too many small jobs, running too many overages, or being routed inefficiently between jobs.
See Clint in action
Clint is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.