Cleaning Company Profit Tracking: A Margin Analysis Guide

How to track profit per contract, calculate gross and net margins the right way, and spot the accounts quietly bleeding your cleaning business dry.

CleanTrack360 Team
·July 7, 2026·9 min read

Most cleaning company owners can tell you their monthly revenue off the top of their head. Ask them which of their 30 accounts is actually profitable, and the room goes quiet.

That gap is where cleaning businesses get into trouble. You can grow revenue every year, add crews, sign new buildings — and still watch your bank account stay flat or shrink. Revenue hides problems. Margin exposes them.

This guide walks through how to track profit at the level that actually matters in this industry: per contract, per shift, per square foot. No accounting degree required. Just a clear framework you can apply to the accounts you're servicing right now.


Why Revenue Lies and Margin Tells the Truth

In commercial cleaning, labor typically eats the largest share of every dollar you bring in. According to the U.S. Bureau of Labor Statistics, janitors and building cleaners had a median hourly wage of $16.06 in May 2023 — and that's before payroll taxes, workers' comp, and overtime.

Source: U.S. Bureau of Labor Statistics, "Occupational Employment and Wage Statistics: Janitors and Cleaners" (May 2023).

Because labor is so dominant, a small scheduling error on a single large account can erase the profit from three smaller ones. If you only look at the top-line number, you'll never see it happen.

Margin analysis flips the view. Instead of asking "how much did we bring in?" it asks "how much did we keep, and where?" That second question is the one that keeps a cleaning company solvent.

Key Takeaway: A growing top line can mask shrinking profits. Track margin at the contract level, not just company-wide, or you'll subsidize losing accounts without knowing it.

The Numbers That Actually Matter

Before you can track anything, you need shared definitions. These four numbers form the backbone of margin analysis for a cleaning operation.

MetricFormulaWhat It Tells You
Gross ProfitRevenue − Direct Costs (labor, supplies, equipment for that job)Whether the work itself makes money before overhead
Gross Margin %(Gross Profit ÷ Revenue) × 100How efficient the account is, comparable across contracts
Net ProfitGross Profit − Allocated OverheadWhat you actually keep after running the business
Net Margin %(Net Profit ÷ Revenue) × 100The health of the whole company

The critical distinction is direct costs versus overhead. Direct costs are the expenses that exist only because you service a particular building — the crew's wages for that shift, the chemicals used, the floor pads consumed.

Overhead is everything else: office rent, your salary, sales commissions, software, insurance, the truck payment. These need to be spread across all your accounts, not tied to one.

💡 Tip: Fully burden your labor before calculating direct cost. A $16/hour cleaner does not cost you $16. Add payroll taxes, workers' comp, and any paid time off — many operators find their true burdened rate lands 15–30% above the base wage.

Calculating Profit on a Single Account

Let's make this concrete. Say you clean a 50,000 sq ft office building three nights a week. You bill the client $6,500 per month.

Your crew of four works four hours per visit, three nights a week — roughly 208 labor hours per month. At a burdened rate of $21/hour, that's $4,368 in labor.

Add $350 in supplies and consumables and $80 in equipment wear allocation. Your direct costs land at $4,798.

  • Revenue: $6,500
  • Direct costs: $4,798
  • Gross profit: $1,702
  • Gross margin: 26.2%

Now apply overhead. If your company-wide overhead runs, say, 12% of revenue, that's $780 allocated to this account. Net profit is $922, or a 14.2% net margin.

That's a healthy account. But watch what happens if the crew consistently stays 30 minutes longer per visit than budgeted. That's an extra 26 hours a month — roughly $546 in unplanned labor. Your gross profit drops to $1,156 and your net margin falls to under 6% on the same contract.

Key Takeaway: On most cleaning contracts, labor overrun is the single fastest way to destroy margin. Half an hour of drift per shift is often the difference between a strong account and a break-even one.

Using Cleaning Times to Set Realistic Labor Budgets

You can't measure labor overrun if you never set a labor budget in the first place. This is where industry production rates come in.

ISSA publishes cleaning time standards — estimates of how long specific tasks take under normal conditions. These are widely used to build defensible labor estimates during quoting and to benchmark actual performance afterward.

Source: ISSA, "The Official ISSA Cleaning Times" (used industry-wide for production rate estimation).

The practical move is to translate your bid into expected labor hours per visit, then compare that to what your crew actually logs. If a building was quoted at 16 labor hours per night and it's consistently taking 19, you have a margin leak — either the bid was wrong or the execution is drifting.

💡 Tip: Track a simple "budgeted hours vs. actual hours" figure for every account, every pay period. It's the earliest warning signal you have. A 10% overrun that appears in week two is fixable. The same overrun discovered at contract renewal has already cost you a year of margin.

Cost Per Square Foot: The Comparison Metric

Gross margin tells you if an account is healthy. Cost per square foot tells you why one account is healthier than another.

Divide your monthly direct cost by the cleanable square footage and you get a number you can compare across your entire portfolio. A medical office with strict disinfection requirements will cost more per square foot than a warehouse — and it should be priced accordingly.

Account TypeTypical Cleaning IntensityMargin Consideration
Warehouse / industrialLow — large open areas, infrequent detailHigh sq ft, thin per-foot pricing; margin comes from volume
General officeModerate — restrooms, breakrooms, trash, vacuumingPredictable labor; margin depends on route density
Medical / clinicalHigh — disinfection protocols, compliance documentationJustifies premium pricing; underpricing here is common and painful
EducationModerate–high — heavy traffic, seasonal swingsWatch summer scheduling; fixed billing vs. variable labor

When you calculate cost per square foot across accounts, patterns jump out. You'll often find one or two "prestige" clients — big names you were proud to sign — sitting at the bottom of the margin table because you priced them to win the bid, not to profit.

A Step-by-Step Profit Tracking Process

Here's how to actually put this in place without hiring a controller.

  1. List every active account with its monthly billing amount in one place.
  2. For each account, calculate burdened labor cost using actual logged hours, not the hours you assumed at bid time.
  3. Add direct supply and equipment costs per account. Estimate if you have to, but be consistent.
  4. Calculate gross profit and gross margin for each account.
  5. Total your monthly overhead and express it as a percentage of total revenue.
  6. Allocate overhead to each account and calculate net margin.
  7. Sort every account from highest net margin to lowest. This ranked list is your single most valuable management document.

The first time you build this table, expect surprises. Nearly every operator who does this discovers at least one account they assumed was fine is actually break-even or worse.

Monthly Margin Review Checklist

  • Update actual labor hours per account from time records
  • Flag any account where actual hours exceeded budgeted hours by more than 10%
  • Recalculate gross margin for every account
  • Compare this month's margin to last month's — note the direction of movement
  • Identify your bottom three accounts by net margin
  • Decide on one action for each: reprice, re-scope, retrain the crew, or exit
  • Confirm supply costs haven't crept up unnoticed

Common Mistakes That Wreck Margin Analysis

Even operators who track numbers regularly fall into these traps.

  • Using base wage instead of burdened wage. This understates your true labor cost on every single account and makes losing contracts look profitable.
  • Ignoring supervisor and travel time. The time a manager spends driving between sites and checking work is a real cost. If it's not captured somewhere, your margins are fiction.
  • Averaging everything together. A 15% blended company margin can hide accounts running at 30% subsidizing accounts running at negative 5%. The average tells you nothing about what to fix.
  • Treating supplies as an afterthought. Consumables like liners, paper products, and chemicals add up. On tight accounts, uncontrolled supply usage is a quiet margin killer.
  • Never revisiting old contracts. A building you priced three years ago at a healthy margin may now be underwater after wage increases. Old contracts don't reprice themselves.
  • Confusing cash flow with profit. Money in the account this week doesn't mean the account is profitable. Slow-paying clients and prepaid supplies distort what you see in the bank.
💡 Tip: When you find a low-margin account, resist the urge to immediately fire the client. First ask whether it's a pricing problem or an execution problem. A well-priced account bleeding margin from labor overrun is fixable through better scheduling and crew accountability — no awkward client conversation required.

How Often to Review Your Numbers

Margin analysis only works if it's a habit, not a once-a-year panic. Different numbers deserve different cadences.

ReviewFrequencyWhy
Budgeted vs. actual labor hoursEvery pay periodCatch overruns while they're still small and correctable
Gross margin per accountMonthlySpot trends before they become quarterly losses
Supply cost per accountMonthlyConsumable creep is gradual and easy to miss
Full net margin rankingQuarterlyMake repricing and account-exit decisions with clear data
Overhead allocation rateAnnually or when overhead changes materiallyKeep your net margins honest as the business grows

The pay-period labor check is the one most operators skip and the one that pays off fastest. If you do nothing else from this article, compare budgeted hours to actual hours every time you run payroll.


How CleanTrack360 Supports Profit Tracking

Everything above works with a spreadsheet — but the data collection is where it falls apart. If your labor hours come from paper timesheets and your supply costs live in a shoebox of receipts, building an accurate margin table each month becomes a chore you'll abandon by spring.

CleanTrack360 captures the raw inputs automatically. GPS clock-in gives you real labor hours per site, so budgeted-versus-actual comparisons happen without manual entry. Job-level scheduling and inspections tie hours and quality back to specific accounts, and the quoting tools let you set labor budgets up front so you have something real to measure against. Starting at $99/month, it turns the profit tracking process in this guide into a routine you can actually keep.

Ready to see it in action?

Start your free 14-day trial. No credit card required.