To automate a cleaning business with one to six people, automate four things, in this order: an instant quote on your website, online booking that only offers the days you are already in that area, card-on-file billing that charges after each clean, and a lead alert that lands on your phone.
Those four end the phone tag, the invoice chasing and the 9 p.m. "how much do you charge" messages, and all four can be built around how your business actually runs, with a set build price and a monthly plan priced to compete with Jobber's Connect plan.
I have not built this for a cleaning company yet, and I am not going to pretend I have. What follows is assembled from pieces I already run: the per-address instant quote in the snow app I built for Revisions Unlimited, Stripe subscription billing from my BizLifeOS app and Payment Links from my PlentifulStudio store, and the form-to-phone lead alerts both of my businesses live on.
Every "how much do you charge" call is the same six questions, so put them on your website and let the math answer. Here is a starting formula; every number is yours to change.
Worked example: a 3-bedroom, 2-bath, 1,800 sq ft house, standard clean, every two weeks. $85 + $45 + $50 + $25 = $205, minus 10% = $184.50, which the form rounds to the nearest $5: $185. The same house as a one-time deep clean is $310; as a move-out, $360.
Set your numbers from your own invoices: pull the last 20, divide each price by the hours it took, and tune the per-room numbers until the formula reproduces those 20 prices within about $10. If that 3/2 house takes you three and a half hours, $185 is $53 an hour; if you want $60, raise the base, not the bathroom number.
This is the same shape as the quote tab in the snow app I built for my own plow route: the address and driveway go in, a seasonal price comes out, and the app texts it with "Reply YES and you're locked in." The rates live on a settings screen, not in the code, so when you raise prices in January you change four numbers, not the website.
QuoteShield, the quote generator I built for contractors, is the same idea with a bigger rule table; a cleaning version is a smaller one.
Show the number. A form with a price gets filled out at 9 p.m.; "call for a quote" gets the back button.
A booking page that lets anyone pick any day is a problem generator, not an automation. Three rules make it work.
Zones by day. You already clean one town or one side of the county on certain days, so the form asks for the address first and only offers those days. My snow app orders every storm by road time, and the lesson is blunt: one stop 20 minutes out of the way costs more than it pays.
Capacity in hours, not jobs. A two-person crew has about seven billable hours after drive time. The formula already gives you minutes per house, so the form adds up the day and closes it when it is full. My plow route caps at 20 to 24 driveways per truck per storm, and the app shows a finish-by time against the 12-hour promise I make customers. Your booking form should know the same thing about a Tuesday.
New clients request, regulars book. A first visit is where the surprises live, so a new client's booking lands as a request you confirm with one tap; a regular picks a real slot and gets a confirmation text.
One trap from the address side: a geocoder matched a county road near me to one with the same name in the wrong county. Normalize street names and reject matches outside your service area.
Recurring clients should never see an invoice: a card on file once, charged after each clean, receipt in their inbox before you are out of the driveway. Stripe does this two ways.
A flat subscription. Stripe Subscriptions charges the same amount on the same day every month. My BizLifeOS app bills $12.99 and $24.99 a month this way and I never touch it. It works for cleaning only if every client is the same frequency and nobody ever skips.
Charge after each clean. This is the one I would build for a cleaning company. Stripe Checkout in setup mode saves the card with the client's consent; when the crew taps Done, a small function charges the saved card off-session for that visit's price and Stripe emails the receipt. A skipped week is no charge, an oven add-on is a different amount, and nothing needs chasing.
The fee is Stripe's standard 2.9% plus 30 cents on a US card, about $5.67 on a $185 clean; ACH Direct Debit is 0.8% capped at $5, about $1.48, worth offering weekly clients (Stripe pricing). Stripe Billing adds a small percentage for subscriptions; charging the saved card yourself avoids it.
Put the authorization in writing, as a checkbox on the form: "I authorize [Business] to charge this card after each scheduled clean at the quoted price." I am not a lawyer; that sentence is between you and your client, so have it there before the first charge.
When a charge fails (expired card, bank wants a tap), do not retry forever: text the client a pay link, text yourself a heads-up, and hold the next clean until it clears. The slower version of all this is in how I get paid faster as a contractor.
Two first-hand details. My snow sign-up page makes the customer pick "one payment" or "monthly through the winter" before they submit, and the app splits the season across the winter months still ahead; cleaning is the same decision, made once.
On the booking book I built for Hitch & Host, my family's party-rental business in central Minnesota, the deposit is a Stripe Payment Link whose webhook flips the quote to Confirmed and pushes it to my phone before the customer has closed the tab. My PlentifulStudio template store runs on the same Payment Links.
The fourth piece is the smallest, and the one I would build first if you only build one: when a quote or booking form is submitted, a push lands on your phone within seconds with the name, the address, the price the form showed, and a tap-to-call button. Both of my businesses run on this; the cheap version is in how I get a text when someone fills out my website form.
A snow sign-up at 9:40 p.m. is a pin on my map and a buzz in my pocket, and I text the price back before the customer has set the phone down. For a cleaning company that is the 9 p.m. shopper booking you instead of the next listing. The missed-call side of the same pipe is in missed-call text-back for contractors.
How the four pieces connect, with no Zapier in the chain: one website, one serverless function behind the forms, one small database (under a few hundred clients, one document holding clients, bookings and settings is plenty), Stripe for the cards, a push service for your phone.
The quote form creates the client record. The booking form reads it, so nobody types an address twice. The Done tap charges the card. Every write goes through a compare-and-set with retries so two taps a second apart do not erase each other; that rule cost me three review rounds on the snow app.
Zapier stays out because every zap is a place a lead can die without telling you, and the bill grows with your task count. Everything logs to one place, so when something did not run, I know within a minute.
Jobber is good software; the question is whether it is good at your size. Its cleaning page (source) is written for owners with a team in the field.
As I write this, Jobber prices by plan and by seat, and the annual rate is an introductory price for 12 months before it rises: Core for one user is $21 a month then $29 ($49 month to month); Connect is $70 then $99 for one user or $105 then $149 for five ($139 and $199 month to month); Grow is $161 then $229 for five users ($299 month to month). "Collect payments automatically" first appears on Connect (Jobber pricing).
Housecall Pro lists Basic at $59 for one user, Essentials at $149 for five and MAX at $299 for eight, all billed annually ($79, $189 and $329 month to month), plus $35 a month per extra MAX user (Housecall Pro pricing). The numbers move; plug in the current ones.
Over 36 months, by size:
A system built for your business, a quote form, booking with zones and capacity, Stripe card-on-file and the phone alert, is priced a different way. You get a set price for the build, quoted up front once we know how many rules your booking needs, then a monthly plan that covers only the services you actually use, such as hosting, texting and support. My development team builds it around your formula and your route instead of asking you to fit a tier chart, and it is priced to compete with Jobber and Housecall Pro at your size.
The honest read: while it is just you, Jobber Core is the right answer. The day you add a second crew, the Connect number above is what it costs to keep going, and by Grow you are paying for features written for bigger companies while your formula and your route still live outside the app. That is the moment to put a quote beside your tier's 36-month figure and compare line by line.
So stay on Core while it is just you, get a quote the day you add a second crew, and do not hesitate the day you would need Grow. The calculator above shows what quoting and invoicing by hand already costs you a year; that is the other side of the comparison.
What a generic app never gives you: your formula on your own website, booking that knows your route, and a client list that stays in your own accounts when you sell, which is the point of building a business that runs without you.
The first walkthrough. Anything the form cannot price should not be priced by the form: over 3,500 sq ft, post-construction dust, heavy pet hair, hoarding, a house nobody has cleaned in a year. For those the form says "we'll come look" and puts the request on your phone.
Pricing exceptions. The client who wants the oven and the fridge every visit, the three-story with four bathrooms and a dog. Write the exception on their client record once and the formula charges it every time after that; it lives in the data, not in your memory.
The review ask, for now. I have not automated this for my own business yet, so I will not tell you how well it works. My remodeling profile has seven Google reviews, every one asked for by hand, and my own tracker still says "Review asked? No" on most rows.
Until the automated version exists, text the ask yourself after the third clean with the direct link to your Google profile. Three cleans in, they have decided they like you; one clean in, they are still checking the baseboards.
The first message. The confirmation text can be automatic. The first real reply should be you.
The big names are Jobber, Housecall Pro and ZenMaid, with Stripe or Square for payments and a Google Business Profile for reviews. Small shops often start on a booking plugin and a spreadsheet. The brand matters less than four functions: a quote the client can get without calling, booking that fits your route, a saved card charged after each clean, and an alert on your phone when a lead comes in.
They save the client's card once with written authorization, then either run a flat monthly subscription or charge the saved card after each completed clean. In Stripe that is a Checkout session in setup mode plus an off-session charge when the job is marked done, and Stripe emails the receipt. In Jobber, automatic payments on saved cards start on the Connect plan.
Yes, with the client's clear authorization to store the card and charge it for scheduled cleans at the quoted price. Get it in writing (a checkbox on the booking form is standard), show the price before each charge, and send a receipt every time. If a charge fails, send a pay link rather than retrying silently. I am not a lawyer; keep the authorization language simple and keep a copy.
Show a price first. People book online when the form tells them the number; 'request a quote' sends them back to the phone. Then offer only the days you are already in their area, confirm by text within seconds, and make a new client's first booking a request you approve so the first visit has no surprises.
At 30 clients on Jobber Core, $21 to $29 a month billed annually or $49 month to month, yes, if its invoicing is enough for you; at that size it is the right tool. It gets expensive the moment you need automatic card-on-file billing, which starts at Connect: $70 to $139 a month for one user ($3,216 to $5,004 over 36 months) and $105 to $199 for five ($4,836 to $7,164), with another step up at Grow when you hire. That is the point to price a system built around your route: a set build price, quoted up front, and a monthly plan for just the services you use, priced to compete with Connect and Grow. Put the quote beside your tier's 36-month total and decide.
Start with a base for the kitchen and living areas, add a fixed amount per bedroom and a larger one per bathroom, add a square-footage tier, multiply for deep or move-out cleans, and discount for frequency. Example: $85 base + $15 a bedroom + $25 a bathroom + $25 for 1,500 to 2,500 sq ft, minus 10% for every two weeks, prices a 3-bed, 2-bath house at $185. Tune the numbers until the formula matches your last 20 invoices.
Tell me how you quote and bill today (phone and Venmo, Jobber, a booking plugin) and how many recurring clients you have. I'll come back with a clear scope, a set price for the build and a monthly plan for just the services you need. No templates: my development team builds it around how you work, and you talk directly with the person who built his own.