Complete Guide

How to Bid Commercial Cleaning Contracts

An eight-step method for pricing commercial cleaning jobs profitably, from the walkthrough to a signed agreement. Written by the team at Alpine Cleaning in Spokane Valley, Washington.

GrowClean Team12 min read

Bidding commercial cleaning is a math problem with a sales problem on top of it. Get the math wrong and you either lose the bid or win a contract that bleeds money every month. Get the math right but take a week to send a plain quote, and the building goes to whoever answered first.

This guide walks through the method we use at Alpine Cleaning, a 20+ person commercial cleaning company in Spokane Valley, Washington. When we standardized it, our proposal turnaround went from five days to one, our win rate climbed from 15 percent to 35 percent, and our margins improved by 10 percent. Nothing here is theory; it is the same process we run on real walkthroughs every week.

Step 1: Run a walkthrough that captures what you need to price

Never bid a building you have not walked. Floor plans and a phone call from the property manager leave out the things that drive labor: carpet versus hard floor, how many restrooms and fixtures, whether the break room has a dishwasher, how cluttered the desks are, and where the trash goes.

Ask the same questions every time. What is the current cleaning schedule, and what do they dislike about the current provider? What hours can the crew be in the building? Is there an alarm, and who holds keys? Who supplies paper and soap? Are there any areas that are off limits or need special handling, such as server rooms, labs, or exam rooms?

Write down each area as you walk it rather than trying to remember afterward. Photos of each space save you from a second trip and help you defend your scope later.

Step 2: Measure cleanable square footage by area

Use cleanable square footage, not the building gross area on the lease. Exclude mechanical rooms, unused storage, elevator shafts, and anything you will not touch. A building listed at 30,000 square feet often has 24,000 to 26,000 square feet of space a crew actually cleans.

Break the total into zones that clean at different speeds: open offices, private offices, restrooms, break rooms, lobbies and corridors, and specialty spaces. A single blended number hides the difference between a fast-moving corridor and a slow restroom, and that hidden difference is where underpriced bids come from.

Step 3: Set the cleaning frequency and convert it to monthly visits

Most offices are cleaned five nights a week. Smaller or low-traffic offices may be three times a week, and medical or 24-hour facilities can be six or seven. Restrooms and trash are often daily while detail work like high dusting is weekly or monthly.

Because contracts are billed monthly, convert visits per week into visits per month by multiplying by 52 and dividing by 12. Five nights a week is 21.67 visits a month, not 20. Using 20 underprices every five-night account by about 8 percent before you have made any other mistake.

FrequencyVisits per month
1x per week4.33
2x per week8.67
3x per week13.00
5x per week21.67
6x per week26.00
7x per week30.33

Step 4: Apply a production rate to each area

A production rate is how many square feet one worker cleans in an hour. Divide each area by its rate to get labor hours per visit. The table below shows ranges we see for routine nightly cleaning; your own measured rates are always better than any benchmark.

Track actual hours against bid hours on every new account for the first month. If a crew consistently needs 20 percent more time than you bid, your rate for that space type is too optimistic, and every future bid that uses it will be too low.

Space typeSq ft per labor hour
Open office, carpet3,500 – 4,500
Private offices2,500 – 3,500
Lobbies and corridors4,500 – 6,000
Break rooms and kitchens2,000 – 3,000
Restrooms800 – 1,200
Medical exam rooms2,000 – 2,500
Warehouse, light industrial6,000+

Step 5: Use loaded labor cost, not the hourly wage

This is the single most common pricing mistake in the industry. The wage is only part of what an hour of cleaning costs you. Add the employer share of Social Security and Medicare (7.65 percent), federal and state unemployment insurance, workers compensation, paid sick leave and holidays, and the cost of uniforms, training, and turnover.

For a cleaner earning $17 an hour, those items typically add $3.50 to $4.00, bringing the loaded cost to around $20.60. Add supervision and drive time between buildings and many Inland Northwest companies land between $22 and $24 an hour. Calculate your own number once a year and whenever wages change, then use it in every bid.

Step 6: Price to a margin, not a markup

Overhead covers everything that is not direct labor: rent, insurance, vehicles, supplies, software, marketing, and office salaries. For most cleaning companies it runs 10 to 15 percent of revenue. Profit should be another 10 to 15 percent. Together that is a target gross margin of roughly 20 to 30 percent over direct labor cost.

Margin and markup are not the same, and confusing them is expensive. Adding 25 percent to cost gives you a 20 percent margin, not 25. To hit a true margin, divide the cost by one minus the margin: cost divided by 0.75 for a 25 percent margin. On a $3,275 monthly labor cost, the difference between the two methods is $273 a month, or $3,276 a year on a single account.

Set a floor margin you will not go below. When a prospect pushes back on price, reduce the scope or frequency rather than the margin. A low-margin client almost never turns into a high-margin client later.

Adjust for the type of building

The method stays the same across building types, but the inputs change. Medical offices need slower production rates, disinfection protocols, and often bloodborne pathogen training, which raises your loaded labor cost. Schools and churches have heavy, uneven traffic and seasonal schedules, so price summer and holiday breaks separately. Warehouses and light industrial sites clean fast per square foot but often add dock offices and restrooms that clean at office speed.

Multi-tenant office buildings need a clear line between common areas, which the property manager pays for, and tenant suites, which may be billed separately. Get that split in writing before you price, or you will end up cleaning space nobody is paying for.

Offering two or three options, such as five nights a week versus three nights with a day porter, lets a price-sensitive prospect choose a smaller scope without asking you to cut your margin.

Step 7: Present a proposal that is easy to say yes to

Facility managers compare three or four proposals side by side. Yours should show the scope by area, what is cleaned and how often, your service hours, the monthly price, the agreement dates, and your terms. A cover letter that mentions something specific from the walkthrough proves you paid attention.

Include your certificate of insurance and W-9 so there is nothing left to chase, and make signing easy with an electronic signature link. Every extra step between "this looks good" and a signed agreement is a chance for the deal to stall.

Step 8: Send it fast and follow up

Speed is the most underrated factor in winning commercial cleaning contracts. When our proposals took five days, prospects had already talked to two other companies and our 15 percent win rate reflected it. Getting the proposal out within a day was the biggest single change behind our jump to 35 percent.

Follow up two business days after sending, then again a week later. Ask whether the scope matches what they need rather than whether they have decided. Track every bid as won or lost along with the reason, because a win rate you do not measure is a win rate you cannot improve.

Worked example: a 24,000 sq ft office

A 24,000 sq ft cleanable office in Spokane, cleaned five nights a week. The same calculation runs automatically for every line in GrowClean once your production rates and loaded labor cost are saved.

AreaSq ftRate (sq ft/hr)Hours/visit
Offices15,0004,0003.75
Restrooms1,2001,0001.20
Lobbies and corridors6,0005,0001.20
Break rooms1,8002,5000.72
Hours per visit
6.87
Monthly hours (× 21.67 visits)
148.9
Labor cost (× $22.00 loaded)
$3,275
Monthly price at 25% margin (÷ 0.75)
$4,367
Price per square foot per month
$0.18

Seven bidding mistakes to avoid

  • Pricing from the hourly wage instead of the loaded labor cost
  • Using one production rate for every space type
  • Multiplying by 20 visits a month instead of 21.67 for five nights a week
  • Adding a markup and calling it a margin
  • Underpricing to get a foot in the door
  • Taking a week to send the proposal
  • Not tracking which bids you win and lose, and why

Commercial cleaning bidding FAQ

Divide the cleanable square footage of each area by its production rate to get labor hours per visit. Multiply by the monthly visit count and your loaded labor cost to get monthly labor cost. Divide that by one minus your target margin to get the monthly price.

For routine nightly office cleaning, many markets fall roughly between $0.10 and $0.25 per square foot per month depending on frequency, labor costs, and the mix of spaces. Use price per square foot as a sanity check after you calculate the bid, not as the way you price it.

Most healthy cleaning companies target a gross margin of 20 to 30 percent over direct labor, which covers overhead of 10 to 15 percent and leaves 10 to 15 percent profit.

Routine cleaning of open, carpeted office space typically runs 3,500 to 4,500 square feet per hour. Restrooms, break rooms, and medical spaces are much slower. Measure your own crews to get the most accurate number.

Start with the hourly wage and add payroll taxes, unemployment insurance, workers compensation, paid leave, uniforms, training, and supervision. For a $17 wage, the loaded cost is commonly $20 to $24 an hour.

Yes, either as part of overhead in your margin or as a separate line. If the client supplies paper and soap, say so clearly in the proposal so it is not assumed you provide them.

Within one business day of the walkthrough if you can. At Alpine Cleaning, cutting turnaround from five days to one was the largest factor in raising the win rate from 15 to 35 percent.

Run every step of this guide automatically

GrowClean prices each area from your production rates, loaded labor cost and margin, then sends a branded proposal for e-signature.

Start Your Free Trial