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.
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.
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.
| Metric | Formula | What It Tells You |
|---|---|---|
| Gross Profit | Revenue − Direct Costs (labor, supplies, equipment for that job) | Whether the work itself makes money before overhead |
| Gross Margin % | (Gross Profit ÷ Revenue) × 100 | How efficient the account is, comparable across contracts |
| Net Profit | Gross Profit − Allocated Overhead | What you actually keep after running the business |
| Net Margin % | (Net Profit ÷ Revenue) × 100 | The 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.
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.
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.
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.
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 Type | Typical Cleaning Intensity | Margin Consideration |
|---|---|---|
| Warehouse / industrial | Low — large open areas, infrequent detail | High sq ft, thin per-foot pricing; margin comes from volume |
| General office | Moderate — restrooms, breakrooms, trash, vacuuming | Predictable labor; margin depends on route density |
| Medical / clinical | High — disinfection protocols, compliance documentation | Justifies premium pricing; underpricing here is common and painful |
| Education | Moderate–high — heavy traffic, seasonal swings | Watch 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.
- List every active account with its monthly billing amount in one place.
- For each account, calculate burdened labor cost using actual logged hours, not the hours you assumed at bid time.
- Add direct supply and equipment costs per account. Estimate if you have to, but be consistent.
- Calculate gross profit and gross margin for each account.
- Total your monthly overhead and express it as a percentage of total revenue.
- Allocate overhead to each account and calculate net margin.
- 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.
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.
| Review | Frequency | Why |
|---|---|---|
| Budgeted vs. actual labor hours | Every pay period | Catch overruns while they're still small and correctable |
| Gross margin per account | Monthly | Spot trends before they become quarterly losses |
| Supply cost per account | Monthly | Consumable creep is gradual and easy to miss |
| Full net margin ranking | Quarterly | Make repricing and account-exit decisions with clear data |
| Overhead allocation rate | Annually or when overhead changes materially | Keep 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.