Ask ten janitorial owners what labor should cost and nine will say fifty percent of revenue. It is the most repeated figure in this industry and, on its own, one of the least useful.
Fifty percent of what, exactly? Revenue before or after supplies you bill back? Wages only, or wages plus payroll taxes, workers comp and unemployment? Does the working supervisor who inspects three sites and covers a call-out count as labor or overhead?
A cleaning company dashboard should carry one number per function: direct labor as a percent of revenue, gross margin per account, revenue per labor hour, production rate, inspection score, complaints, shift coverage, overtime share, and revenue retention. Refresh labor and coverage weekly, financials and retention monthly.
What follows is the benchmark set, where each number typically lands, what moves it, and how to calculate your own version so the comparison actually means something.
What is a good labor cost percentage for a cleaning company?
Most commercial cleaning operators running recurring nightly office work report direct labor landing somewhere between 45 and 55 percent of contract revenue once payroll burden is included. Day porter and labor-only staffing contracts sit higher because there is almost nothing else in the price.
The ratio is worthless until you fix the definitions. Write them down once and never change them mid-year:
- Numerator: gross wages for hours worked on that account, plus payroll burden. Burden means employer FICA, federal and state unemployment, workers comp premium and any paid time off accrual.
- Denominator: recurring contract revenue for the same period. Keep one-time project work such as strip and wax, carpet extraction and post-construction in a separate line, because those jobs carry a completely different labor profile.
- Excluded: supervisor salary, office payroll, and your own draw. Those belong in overhead, otherwise you cannot compare one account to another.
Payroll burden is the piece most owners forget. If your base rate is $17.00 an hour and burden runs 18 percent, your real cost is $20.06 per hour, and a dashboard built on $17.00 will tell you a comfortable lie every single week.
Which KPIs should a commercial cleaning company track?
Nine numbers cover the whole business: three financial, three operational, three quality and retention. Anything beyond that and people stop looking at the screen.
| KPI | How to calculate it | Common operating range | What moves it most |
|---|---|---|---|
| Direct labor as % of revenue | (Wages + payroll burden) / recurring revenue | 45% to 55% on recurring janitorial; higher on labor-only contracts | Scope creep, overtime, wage increases, underbid square footage |
| Gross margin per account | (Revenue minus direct labor, supplies, equipment allocation) / revenue | 30% to 45% | Supply waste, unbilled extras, travel time between sites |
| Revenue per labor hour | Account revenue / total labor hours worked | Roughly $30 to $45 in general office work | Price per square foot, crew productivity, task frequency |
| Production rate | Cleanable square feet / labor hours on site | 3,000 to 5,000 sq ft per hour for general office cleaning | Floor type, restroom count, density of workstations, trash volume |
| Average inspection score | Points earned / points possible on a fixed checklist | Pass threshold commonly set at 90; track the share of inspections at or above it | Checklist consistency, inspector training, crew turnover |
| Complaints per account per month | Logged client complaints / active accounts | Under 1.0, with many operators working toward 0.5 | Restroom supplies, trash misses, unlocked doors, lights left on |
| Shift coverage rate | Shifts worked / shifts scheduled | 98% or better; no-shows under 2% of scheduled shifts | Route distance, pay competitiveness, supervisor call-out response |
| Overtime as % of paid hours | OT hours / total paid hours | Under 5% | Chronic short staffing, single-cleaner sites with no backup |
| Annual revenue retention | Recurring revenue retained over 12 months / starting recurring revenue | 90% or better | Inspection scores, complaint response time, price increases handled badly |
Notice what is missing: social media followers, website visits, hours logged in total. None of those change a decision you make on a Tuesday morning.
Worked example: reading the dashboard for a 48,000 sq ft office account
Take Meridian Business Center, an illustrative single-tenant office building of 48,000 cleanable square feet, cleaned five nights a week and billed at $8,000 per month. Two cleaners work five hours per night.
Assumptions, stated plainly: base wage $17.00 per hour, payroll burden 18 percent for a loaded rate of $20.06, supplies running $240 per month, and 21.65 service nights per month, which is 5 nights times 4.33 weeks.
- Labor hours per month: 10 hours per night times 21.65 nights = 216.5 hours.
- Direct labor cost: 216.5 times $20.06 = $4,343.
- Labor as % of revenue: $4,343 / $8,000 = 54.3%.
- Revenue per labor hour: $8,000 / 216.5 = $36.95.
- Production rate: 48,000 / 10 hours per night = 4,800 sq ft per hour.
- Gross margin: ($8,000 minus $4,343 minus $240) / $8,000 = 42.7%.
This account is inside every range in the table, but it is sitting near the top of the labor band. That matters, because the sensitivity is brutal.
Add one hour per night to the route, which is what happens when a tenant adds a break room or the crew starts detailing the lobby glass every night: 21.65 extra hours at $20.06 is $434 per month. Labor jumps from 54.3 percent to 59.7 percent and gross margin drops to 37.3 percent. Nobody called. Nothing broke. You just gave away five points of margin.
How often should each KPI refresh on the dashboard?
Cadence is not a formality. Match it to how fast the number can be fixed.
| Refresh | KPIs | Why this cadence |
|---|---|---|
| Daily | Shift coverage, missed clock-ins | An uncovered building is a same-night problem, not a month-end problem |
| Weekly | Labor hours vs budgeted hours, overtime share, open complaints | You can still adjust the schedule before payroll closes |
| Monthly | Labor % of revenue, gross margin per account, revenue per labor hour, inspection score average | Ties to the billing cycle and to your P&L |
| Quarterly | Revenue retention, production rate by account type, turnover | Too noisy to read monthly, too slow to catch annually |
Budgeted hours versus actual hours is the single highest-value weekly number in this business. It is the leading indicator for the labor ratio you will not see until the month closes.
How to build the dashboard in one afternoon
You do not need a data warehouse. You need consistent definitions and one screen.
Build sequence
- Write the definition of each of the nine KPIs on one page, including exactly what is in the numerator and denominator. Date it.
- Confirm your payroll burden percentage with your bookkeeper. Use the real figure, not 15 percent because it sounds right.
- Set a budgeted hours figure for every account. Without it, actual hours are just a number with nothing to compare against.
- Fix the inspection checklist and scoring scale before you track scores. A score is only comparable if the questions and weights stay identical across sites.
- Pull three months of history and calculate your own baseline for each KPI. This becomes your reference line, not the table above.
- Put lagging and leading indicators side by side: labor percent next to budgeted versus actual hours, retention next to inspection score and complaint count.
- Sort account-level views worst to best. The dashboard should point at the three sites that need attention, not present a tidy average.
On inspection scoring, borrow structure rather than inventing it. APPA defines five levels of cleanliness, from Level 1, Orderly Spotlessness, to Level 5, Unkempt Neglect. Deciding that a client's specification is Level 2 gives your inspectors a shared reference for what a passing restroom looks like, which is what makes scores comparable across two different supervisors.
Why a benchmark is a starting point and not a target
Every range in the table above is an average of businesses that do not look like yours. A medical office portfolio with heavy restroom counts and terminal cleaning protocols will never hit the same production rate as a 40,000 sq ft open-plan call center, and it should not be priced as if it could.
Four things legitimately push you outside a benchmark:
- Building mix: hard floor percentage, restroom fixture count and trash volume swing production rates more than crew skill does.
- Local wage floors: a metro with a $17 minimum will show a higher labor ratio at the same price per square foot. The fix is price, not payroll.
- Contract structure: if supplies are billed through at cost, both your revenue and your labor ratio shift even though nothing about the work changed.
- Route density: six accounts in one office park behave nothing like six accounts spread across 30 miles once travel time is counted.
Use the benchmark to ask a question, not to set a goal. If your labor ratio reads 61 percent, the right response is not "cut it to 50." It is "which three accounts are pulling this up, and is it scope, price or productivity?" Usually the answer differs by building.
And treat any KPI you cannot influence within 30 days as a report, not a dashboard tile. Dashboards are for decisions.
Frequently asked questions
Should a working owner's hours count in the labor KPI?
Yes, at a market wage for the work being performed. If you clean two buildings yourself, charge those hours to those accounts at what you would pay a cleaner plus burden. Otherwise those accounts look artificially profitable and you will price the next one just like them, then discover it loses money the moment you hire someone to replace you.
How many inspections per account per month are enough for the score to mean anything?
One formal scored inspection per account per month is the common baseline, with weekly inspections during the first 60 to 90 days of a new contract and on any account that has logged a complaint. A single inspection per quarter produces a number too sparse to trend, and daily scoring usually degrades into rubber-stamping.
What no-show rate should I expect on a night crew?
Track it as a percentage of scheduled shifts rather than as a headcount. Most operators consider anything above 2 percent a staffing problem rather than a personnel problem. Watch it alongside overtime share: a rising no-show rate almost always shows up as overtime one or two weeks later when supervisors cover the gaps themselves.
Do I need a separate dashboard for each client?
Clients do not want your labor ratio. What they want is proof of service and a record of quality, which means schedule adherence, completed visits, inspection reports with photos and open service requests. Keep the financial KPIs internal and give the client a service-level view. Mixing the two invites arguments about your margin instead of about the work.
Can I run cleaning KPIs off a spreadsheet instead of software?
For under roughly ten accounts, yes, and plenty of profitable operators do. The break point is data entry: once someone spends more than an hour a week retyping timesheets and inspection sheets, the numbers start arriving late, and a late KPI stops changing decisions. That is when the manual approach quietly costs more than it saves.
Where CleanTrack360 fits
Most of the nine KPIs above depend on two inputs you have to capture cleanly every day: actual hours on site and a consistent quality score. CleanTrack360 handles both. Geofenced GPS clock-in and clock-out runs in the crew's phone browser with a default 150 m radius that you can configure per location, which gives you actual hours per account instead of estimated hours. Quality inspections use custom checklists with photo evidence and automatic scoring, so the inspection number is comparable across supervisors. Reports export to CSV, so you can build the labor ratio and margin calculations in whatever spreadsheet or accounting tool you already use.
Scheduling with recurring shifts gives you the budgeted hours figure to compare actual hours against, and the browser-based client dashboard shows clients their schedules, inspection reports and service requests without exposing your internal numbers. Plans are Starter at $99 per month for up to 5 team members, Pro at $199 for up to 20, and Business at $249 for up to 50, billed per plan rather than per user. There is a 14-day free trial with no credit card. Note that crews work through the phone browser today: the native mobile app is still in development.