Quick Links
- Cleans That Run Longer Than the Original Quote
- Supply Costs Rising Faster Than the Contract Renews
- Crew Turnover That Changes the Real Cost of the Job
- Contracts Priced to Win, Never Priced to Keep
- Tracking Budget vs. Actual by Contract Catches This Before Renewal Does
- The Practical Fix: Review Contract Profitability on a Schedule, Not Just at Renewal
You priced the contract right. You walked the space, timed it out, quoted a fair rate for the work, and won the account. Six months later, the price hasn’t moved. The work has.
This is the quiet math problem in recurring cleaning contracts. The price is fixed at the signing. The actual cost to deliver each visit is not. Rooms get added. Buildup accumulates in ways the original walkthrough didn’t catch. Staff changes. Supply prices move. None of it shows up as a single dramatic event. It shows up as a few extra minutes per visit, repeated fifty-two times a year, until a contract that was profitable in January is barely breaking even by summer, and nobody noticed because nobody was looking at that one contract specifically.
Most cleaning businesses find this out the same way: at year-end, when the books get reviewed as a whole, and the owner realizes overall margin is thinner than it should be, with no clear sense of which accounts caused it.
Here’s where that margin actually goes.
1. Cleans That Run Longer Than the Original Quote
A walkthrough happens once, usually before the contract starts. The quote is based on that one visit: this many rooms, this much square footage, this level of buildup, this much time.
Reality drifts from that snapshot almost immediately. A client adds a break room that wasn’t part of the original scope, mentions it once in passing, and it becomes a permanent, unpriced part of the job. A property that looked lightly used during the walkthrough turns out to see heavier daily traffic than expected, so buildup on floors and surfaces is worse than the quote accounted for. None of these show up as a formal scope-change request. They show up as a crew that used to finish in 90 minutes now taking 105, quietly, every single visit.
If nobody is tracking actual time against the original quoted time per visit, this kind of drift is invisible until it’s structural.
2. Supply Costs Rising Faster Than the Contract Renews
Most recurring cleaning contracts lock in a price for 12 months, sometimes longer for larger commercial accounts. Supply costs do not wait for the renewal date.
Say a contract is priced with a supply cost assumption baked in at signing. If chemical and paper product costs move over the course of that year, and the contract price doesn’t move with them, that gap comes directly out of margin. Invisibly, one restocks at a time. By the time the contract is up for renewal, and the price can be revisited, a year of rising supply costs has already been absorbed without anyone deciding to absorb it.
3. Crew Turnover That Changes the Real Cost of the Job
Contracts are priced based on how long the job takes a specific level of crew experience to complete. A tenured cleaner who has worked a route for a year knows the property, the shortcuts, the trouble spots, and can move through it efficiently. That efficiency is baked into the original price, whether anyone thought about it explicitly or not.
When that employee leaves and a newer hire takes over the route, the job doesn’t get faster because the price says it should. It takes the new hire longer to learn about the property, longer to hit the same pace, and that gap in hours is a real cost that the contract price never accounted for. Turnover is treated as an HR problem. On a fixed-price recurring contract, it is also, quietly, a margin problem.
4. Contracts Priced to Win, Never Priced to Keep
The most common leak isn’t drift at all. It’s the pricing decision made at the very beginning. A lot of recurring cleaning contracts get priced aggressively to win a competitive bid or to secure a relationship with a larger commercial client. That’s a reasonable business decision at the moment. The problem is what happens next: nothing. The account renews on autopilot at the same rate, or close to it, because the relationship is comfortable, and nobody wants to be the one to bring up a price increase with a long-standing client.
A contract that was thin on margin the day it was signed doesn’t get less thin with time. It just sits there, year after year, looking like a stable piece of the book of business while quietly contributing less than it should to actual profit.
Tracking Budget vs. Actual by Contract Catches This Before Renewal Does
The pattern across all four of these leaks is the same: the price is fixed, but the true cost per visit is not, and nothing in a standard invoicing or scheduling system compares the two.
Budget vs Actual tracking, applied at the contract level, closes that gap. When you set up the original quoted time and cost per visit for a contract and then track what each actual visit takes in labor and supplies, you get a real-time comparison instead of a year-end surprise. If a contract was quoted at 90 minutes per visit and the last two months of actual visits are consistently running 110, that’s visible immediately, tied to that specific account, not buried inside overall company revenue.
This matters more for cleaning than almost any other trade in field service, because the work is recurring by design. A one-off job that goes over budget is a single bad day. A recurring contract that’s quietly drifting over budget is the same bad day repeating fifty-two times a year, for as long as the contract runs. See how Budget vs Actual tracking works, contract by contract.
The Practical Fix: Review Contract Profitability on a Schedule, Not Just at Renewal
The easiest way to stop this leak isn’t to price every contract perfectly on day one. Nobody does that consistently, and the market doesn’t stay long enough for a single quote to remain accurate for a full contract term.
The fix is a review cadence that doesn’t depend on the renewal date. Pull actual time and cost per visit against the original quote for every recurring contract every six months, not just when the contract is up for renegotiation. A contract that’s drifted 15 to 20 percent over its original quoted time by month six is a problem you can still fix with a scope of conversation or a price adjustment before it becomes a full year of underpriced work. Waiting until renewal means you’re negotiating from a full year of data you never looked at along the way.
If you’re running recurring contracts on spreadsheets or a scheduling tool that doesn’t separate quoted time from actual time by account, this is the gap worth closing first. See how MyWorkbelt compares to ServiceTitan service-based businesses.
A contract that looked good on the day you signed it is not a guarantee it still is. The only way to know is to keep checking.