# CleanFlo: full content > The complete companion to https://cleanflo.io/llms.txt: every feature's full > description, every comparison and guide in full, every Help Centre > article's full body, and every free calculator's full method and FAQs, > in one document. Nothing here needs a second fetch. For a short index > instead, see https://cleanflo.io/llms.txt. CleanFlo is a UK cleaning business management platform: job scheduling, staff rotas, a cleaner mobile app, VAT invoicing with BACS details, health & safety compliance (RAMS and risk assessments), quoting, lead capture, a private client portal, a public website builder, payroll and mileage, expenses, inventory and equipment, a vehicle register, and a waste transfer notes compliance module, on one flat price with unlimited staff. It covers domestic, commercial, end of tenancy and holiday let / Airbnb changeover cleaning alike. Pricing: a 14-day free trial with full access, then £19.99/month for the CleanFlo plan with unlimited staff, clients and locations. Month to month, no contract, cancel anytime. Read-only demo, no signup: https://app.cleanflo.io/login?demo=1. ## Key facts - Country: United Kingdom. Currency: GBP. VAT: standard rate 20% on cleaning services, charged on invoices only when the business tells CleanFlo it is VAT registered. That setting defaults to no, and with it off no VAT number, column, line or total appears on an invoice. - Pricing: £19.99/month after a 14-day free trial. Month to month, cancel anytime. Unlimited staff, clients and locations. - Waste transfer notes: shipped, and the duty-of-care paperwork for controlled waste is written in the product rather than on a pad: season tickets for repeat collections, one-off notes, EWC codes from a picker rather than free text, hazardous consignment details and the consignee's Part E return, and an A4 note that prints. The carrier's registration is checked against the Environment Agency's public register at the moment of signing rather than typed in, the carrier signs from a link of their own, and each site's notes follow the rules of the nation that site is in. - This document and https://cleanflo.io/llms.txt are both generated at build time from the site's own feature, help and tools registries, so neither can list something the product does not actually have. ## What is in this document Headings are nested: `##` is a section of this document, `###` is one article, feature, comparison, guide or calculator inside it, and `####` and below are that article's own headings. 1. Every feature, in full 2. By trade 3. More product pages 4. Cleaning software for UK cleaning businesses, compared 5. Comparisons, in full 6. Guides, in full 7. Free tools and calculators, in full 8. Help Centre, in full ## Every feature, in full ### Scheduling and rotas Day, week and month views and a calendar you can drag. One-off or recurring, job templates for the rounds you run weekly, double-booking warnings before you save, and the unassigned job first on the dashboard. URL: https://cleanflo.io/help/#scheduling ### The full client CRM Every client, every site they have, and the whole job history against it. Access notes and keys held on the property, and a portal the client opens without an account. URL: https://cleanflo.io/help/#clients ### Staff records and shift swaps Invites, three roles and hourly rates. Holiday balances that count down, sickness and fit notes on the record, employment documents filed, shift swaps between cleaners, and a leaver deactivated with their history intact. URL: https://cleanflo.io/help/#staff ### The cleaner app Start clean, live timer, Complete clean. Checklists, site notes and photographs per job, offline by default, twenty-seven languages, and a lone-worker check-in with an alarm that reaches you with no signal. URL: https://cleanflo.io/help/#cleaner-app ### The job report the client gets A completed job goes out as its own page: what was done, when it started and finished, and the photographs the cleaner took. It is the proof that renews the contract, and the client needs no account to open it. URL: https://cleanflo.io/help/#cleaner-app ### Complaints, on the record A client raises a concern from their own portal and it lands somewhere with a date on it, rather than in a phone call nobody wrote down. Logged, assigned and closed off, next to the site it happened at. URL: https://cleanflo.io/help/#clients ### The rota in their own calendar Every cleaner gets a private calendar feed. They subscribe once and their jobs appear in whatever calendar they already use, updating themselves when you move something. The link is theirs alone and it dies the day they leave. URL: https://cleanflo.io/help/emailing-schedules/ ### Time and payroll Start and complete times off the phone, with breaks and travel time, contract records against each cleaner, overtime worked out, and a pay run at the end of the week. The hours are estimated from the job as scheduled: workload, not evidence in a billing dispute. URL: https://cleanflo.io/help/timesheets/ ### Mileage claims Cleaners claim journeys in their own vehicle and you approve them at the HMRC rate, so the money leaves the business once, with a record, instead of as cash nobody wrote down. URL: https://cleanflo.io/help/timesheets/ ### Site surveys Walk the building room by room and price it while you are stood in it. Bedrooms, bathrooms, kitchens and offices, counted and timed, and the walkthrough turns into a numbered draft quote when you are back in signal. The survey itself works with none. URL: https://cleanflo.io/help/#invoicing ### Quoting and enquiries Quotes with a valid-until date that convert to an invoice when they say yes, an enquiry form you can embed on a site you already run, and a lead inbox behind it. URL: https://cleanflo.io/help/#invoicing ### Invoicing and getting paid VAT invoices raised from completed jobs in one click, BACS details and a payment reference already on them, VAT switched off entirely if you are not registered, and an overdue chase at 7, 14 and 30 days that stops when they pay. URL: https://cleanflo.io/help/sending-invoices/ ### Expenses Fuel, chemicals, parking and congestion charges logged against the job or the van, with a photograph of the receipt, and totalled into the same reports as the revenue. URL: https://cleanflo.io/help/expenses/ ### Inventory and stock Chemicals, consumables and PPE counted, with a minimum on each item and one email the day it is crossed. What went out to which job, and what is left in the cupboard. URL: https://cleanflo.io/help/#inventory ### Equipment and machines The machines your cleaners take out: who has one, when it is due back, and the service and maintenance dates against it. URL: https://cleanflo.io/help/equipment/ ### Vehicles and the fleet Every van on the register with its plate, its mileage and who has it today. MOT, road tax and insurance renewals counted down before they lapse, and the fuel and mileage already logged against the vehicle rather than against nobody. URL: https://cleanflo.io/help/vehicles/ ### Health and safety Risk assessments on a 5×5 hazard matrix, method statements you can attach to a tender, incidents logged by severity, audits scheduled and scored, and a live compliance score you can show a client. URL: https://cleanflo.io/cleaning-compliance-software/ ### Waste transfer notes Every collection of controlled waste, logged against the carrier who took it: what it was, how much, when, and both signatures before it leaves. Season tickets for a carrier you use every week, one-off notes for a single load, hazardous waste on its own consignment code, and the note kept two years (three if hazardous) even with the module off. URL: https://cleanflo.io/cleaning-compliance-software/ ### Your own website A page at cleanflo.io/p/your-name, in a choice of layouts you preview with your own content, built out of the services, the town and the job history already in your account. URL: https://cleanflo.io/cleaning-website/ ### Referrals A referral card on your clients’ portal so a happy one can pass you on, with the attribution recorded against them. You get a CleanFlo referral code of your own as well. URL: https://cleanflo.io/help/#account ### Team messaging Talk to the team inside CleanFlo rather than in a group chat that scrolls away. Every message sits against the company it is about, so a question asked in March is still findable in September. URL: https://cleanflo.io/help/messages/ ### Push and email on everything Assigned, moved, cancelled, completed, invoiced, overdue, running late, stock below its minimum: each one sends, to the phone and to the inbox. A daily briefing at six with the first job on it, and each cleaner’s next fortnight in one click. URL: https://cleanflo.io/help/notifications/ ### Services and pricing One catalogue every job and quote is priced from, with add-ons priced apart from the clean. Change a price once instead of in four different memories. URL: https://cleanflo.io/help/#services ### Reports and your data Revenue, completion rates and what is still outstanding. Everything exports to CSV whenever you want it, and clients, sites, services and staff import from CSV on day one. URL: https://cleanflo.io/help/#reports ### Documents and the tender pack Insurance schedules, COSHH data sheets, certificates, policies and permits filed with an expiry date and flagged before they lapse, shared by a link that expires. When a tender asks for the file, your risk assessments, audits, health and safety position and the team who would do the work print as one document instead of four screenshots. URL: https://cleanflo.io/cleaning-compliance-software/ ### Needs a decision Everything waiting on you on one dashboard panel, grouped by schedule, money, clients and team: the job with nobody on it, the enquiry nobody has answered, the accepted quote to acknowledge. The client who has fallen out of their own booking rhythm is flagged before they ring someone else, a contract is pushed 60 days before renewal, and a dated follow-up sits against anyone you promised to ring back. URL: https://cleanflo.io/help/the-dashboard/ ### The client portal A PIN-protected page per client with three visibility levels, and each self-service power switched on per client. They can approve a quote, ask for a clean or propose a new time for one, message you in the same inbox as the team, rate a clean out of five, and see their invoices, what is outstanding and how to pay. Link and PIN emailed from the client record. URL: https://cleanflo.io/help/the-client-portal/ ### The accident book Anyone hurt is recorded: who, where on the body, the injury, treatment and days lost. Whether it is reportable under RIDDOR, and by when, is worked out rather than looked up. An open absence is watched nightly for the over-seven-day rule, a colleague named as a witness is told without any detail of the injury, and the entry outlives the incident for the statutory period. URL: https://cleanflo.io/help/accident-book/ ### Staff documents and training A DBS check, right to work, contract, training certificate, insurance or hazardous waste card recorded against each person, a file attached if you have one, and a warning 14 days before any of them expires. The training register answers the question a tender asks: who holds COSHH, whose is lapsing, and who has not got it, across the whole team. URL: https://cleanflo.io/help/employment-records/ ### Was anyone actually there The phone’s location when a clean starts is read against the site and its radius, and the job says at the property, away from the property or no coordinates, never a guess. Before the first wipe the cleaner answers four yes-or-no questions about what only they can see, and reads and signs the risk assessment on the phone, with signatures marked out of date when the hazards change. URL: https://cleanflo.io/help/locations-and-properties/ ## By trade - [Domestic](https://cleanflo.io/domestic-cleaning-software/): Weekly and fortnightly houses - [Commercial](https://cleanflo.io/commercial-cleaning-software/): Offices, clinics, the job after five - [End of tenancy](https://cleanflo.io/end-of-tenancy-cleaning-software/): Move-outs, agents and deposits - [Holiday lets](https://cleanflo.io/holiday-let-cleaning-software/): Changeovers on a four-hour clock - [Airbnb](https://cleanflo.io/airbnb-cleaning-software/): Turnovers between guests, proof for the host - [Windows](https://cleanflo.io/window-cleaning-software/): Rounds that repeat, and who has gone quiet - [Carpets and upholstery](https://cleanflo.io/carpet-cleaning-software/): Priced per item, judged on two photographs - [One-off and specialist](https://cleanflo.io/specialist-cleaning-software/): Ovens, deep cleans, after builders, jet washing - [Facilities management](https://cleanflo.io/facilities-management-cleaning-software/): Soft FM across multiple sites ## More product pages - [Cleaner app](https://cleanflo.io/cleaning-staff-mobile-app/): Offline, 27 languages, on their own phone - [RAMS](https://cleanflo.io/cleaning-compliance-software/): A 5×5 that prints to A4 - [Your website](https://cleanflo.io/cleaning-website/): Fourteen layouts, in the £19.99 - [Invoicing](https://cleanflo.io/cleaning-invoicing-software/): BACS and one click from a finished job, VAT optional - [Clocking in](https://cleanflo.io/cleaner-clock-in-app/): Start and finish on their own phone, one location fix at each end - [Multi-site and franchise](https://cleanflo.io/enterprise/): Several sites, several branches, and what head office cannot see - [Rotas and scheduling](https://cleanflo.io/cleaning-scheduling-software/): Day, week and month, with recurring jobs - [Reports](https://cleanflo.io/analytics-reporting/): Revenue, completion, outstanding, CSV out ## Cleaning software for UK cleaning businesses, compared Every product a UK cleaning business shortlists, with what each is built for, where it is from, how it is priced (the model, never a figure), and who it suits. Every cell read from the vendor's own site on 2026-09-06. No ratings and no customer counts. Product | Built for | Country | Pricing model | UK VAT / BACS | RAMS / COSHH | Offline app | Best fit CleanFlo | UK cleaning, domestic and commercial | UK only | Flat per company, nothing counted | Native VAT and BACS, with references | Scored 5×5, and a compliance score | Yes, and 27 languages | A cleaning firm with staff ProCleanerUK | UK cleaning companies | UK | Bands by team size | Not checked: see the note | Not checked: see the note | Listed, not checked | One price per headcount band Cleenie | UK solo cleaners and small teams | UK | Bands: solo or team, invoicing or not | VAT invoices on some bands | Not in their feature list | Browser only, not published | A solo domestic cleaner Squeegee | Rounds: windows, domestic, gardening | UK-built, sold worldwide | Per user a month | HMRC VAT returns, GoCardless Direct Debit | Custom forms, no RAMS module | Offline mode listed | A round that wants automatic collection GetCleanFlow | Solo cleaners, teams, companies | International, on a UK domain | Founder rate, then standard, plus per member | Branded invoices; VAT and BACS not stated | Not published | Not published | A solo cleaner on the founder rate ZenMaid | Residential maid services | United States | Tiers; entry plan caps appointments | US sales tax and US rails | Not a module | Not published | A US residential maid service Swept | Janitorial and commercial cleaning | Canada, serving North America | By number of locations, in USD | No invoicing at all | Inspections, not compliance | GPS clock in, translated checklists | A North American janitorial contractor CleanManager | Cleaning: a base plus add-on modules | Denmark, with a UK site | Per user by user type, in kroner | Invoicing is an add-on; UK terms not stated | Audits add-on, no RAMS named | App is an add-on; not stated | A Scandinavian cleaning contractor BigChange | Multi-trade field service, vehicle-first | UK | Not published: request a quote | UK-based, through its financial module | RAMS and COSHH; no start until done | Photos, and the form before the start | A multi-trade firm with a fleet Joblogic | Field service and maintenance, including FM | UK-built | Per user on the entry plan, quoted above it | UK-built quoting and invoicing | RAMS as a marketplace add-on | Engineer app; offline not stated | An FM contractor running PPM contracts ServiceM8 | Trades and service businesses generally | Australia, UK prices in GBP | Free for one user, then bands on jobs a month | UK VAT; their own bill is reverse-charged | Forms and certificates you build | Offline; full app iOS, lighter Android | A small trades firm that wants Xero Jobber | Home service trades generally | North America first, UK prices published | Tiers with users included, then per extra user | Cards and wallets; no bank rail named | Not a core module | Field app; offline not published | A multi-trade home service business Commusoft | Plumbing, heating, gas, electrical | UK | Per-user licences, three tiers, quoted | UK-built quoting and invoicing | Not stated on their plans page | Engineer app; offline not stated | A heating or electrical contractor Tradify | Electrical, plumbing, gas, HVAC | New Zealand, priced in USD | Per user a month, three plans | Xero and QuickBooks; UK VAT not stated | Not a module | Mobile app; offline not stated | A trades contractor, not a cleaner Connecteam | Deskless workforces, many industries | Global, priced in USD | Free under a headcount, then a band per hub | No invoicing and no client records | Forms, not a compliance engine | Deskless team app | A big team whose problem is hours Deputy | Shift workforces, many industries | Australia, UK prices in GBP | Per user a month, three plans | No invoicing and no client records | Not a module | Rota and clock-in app | A business whose problem is the rota A spreadsheet and WhatsApp | Whatever you make it | Yours | Free, and it never goes down | Whatever you type | Wherever you filed it | Works with no signal, and forgets | A solo cleaner under fifteen clients CleanFlo is the wrong answer if: - You are one person with fifteen or so regular clients. A spreadsheet and a phone calendar cost nothing and work, and we wrote the whole page on when that is still true. - You want a Direct Debit mandate held for you, and the round planned on a map with an optimised route. Squeegee does both. CleanFlo holds no mandate, groups no rounds and optimises no routes. - You want a live two-way sync with Xero or Sage. ServiceM8, Joblogic and Tradify sync. CleanFlo exports invoices, payments and revenue as CSV for a bookkeeper and has no live sync to anything. - The work is not cleaning. Jobber, ServiceM8, Tradify, Commusoft and Joblogic serve trades generally, and a product built for one trade is a liability if half your week is jet washing or gutters. - You need a hard block on starting a job until the risk assessment is signed. BigChange does that. CleanFlo gates the other end: a clean cannot be marked complete while a required photograph or reading is missing, and finishing anyway takes a typed reason. - You need live GPS tracking or a geofence. Swept and BigChange track. CleanFlo takes one location fix at the start and one at the finish, compares each against the property, and holds nothing in between. - You are not in the UK. Everything here assumes VAT at 20% or none at all, BACS with a payment reference, and UK health and safety practice. Outside that, most of the argument is void. URL: https://cleanflo.io/cleaning-software-comparison/ ## Comparisons, in full ### CleanFlo vs Jobber Jobber is general field service management software covering many home service trades: landscaping, HVAC, plumbing, cleaning and more: with strong quoting, scheduling and payments. Jobber is a well-built field service platform for home service businesses. CleanFlo is built for one trade in one country. This page explains where that difference actually matters, and where it does not. **Comparison** Feature | CleanFlo | Them Built specifically for cleaning | Yes: cleaning is the only trade | No: many home service trades UK VAT invoicing | Native at 20%, or off entirely if you are not registered | Supports tax config; check UK specifics BACS bank details on invoices | Built in, with payment references | Cards and Apple Pay or Google Pay in the UK; no bank rail named Health & safety / RAMS | 5×5 risk matrix, incidents, audits, compliance score | Not a core module Per-user pricing | No: unlimited staff on one plan | Yes: each tier includes a number of users and charges per extra one Cleaner mobile app with offline | Yes, checklists sync when back online | Yes, mobile app for field teams Inventory & stock tracking | Chemicals, PPE and equipment | Limited Client portal | Yes, with clean requests | Yes Breadth of integrations | Focused | Broader third-party ecosystem Company size fit | Sole trader to multi-site cleaning firm | Small to large field service CleanFlo suits: - UK cleaning companies that need VAT invoices with BACS details as standard - Anyone who has to produce RAMS, risk assessments or compliance evidence for commercial clients - Growing teams where per-user pricing would become the largest software cost - Businesses that want one tool that assumes cleaning, rather than one configured for it Common objections, answered: - Jobber covers several trades (plumbing, HVAC, landscaping), not just cleaning. It does, and that breadth is the cost. A multi-trade product has to be configured into a cleaning business; this one already assumes one. Cleaning job types, checklists, COSHH, a 5×5 risk matrix and an app that works offline in a plant room are the defaults here, not a setup project. Breadth you never use is not a feature you are getting for free: it is a product you have to bend first. - Jobber has the larger third-party app directory. True. In a UK cleaning business the integration that gets used is the one to whoever does the books, and that is one click: invoices, payments and revenue export as CSV formatted for a bookkeeper. Most of the rest of a directory is tools a cleaning round does not run. - Jobber is built around collecting card payments. It is, and in the UK that means cards plus Apple Pay and Google Pay through their client hub. It is the wrong shape for how UK cleaning actually gets paid: offices and letting agents pay by bank transfer on terms, and a card fee on a monthly contract invoice is a margin you never agreed to. CleanFlo puts your sort code, account number and a unique payment reference on the invoice itself, then chases at 7, 14 and 30 days and stops the moment it lands. - Jobber is most at home in North America. CleanFlo is UK-only on purpose. VAT at 20% or switched off entirely if you are not registered, BACS as the assumption, HMRC mileage rates, RAMS on the 5×5 an inspector here expects. None of that is a regional setting to find: it is what the product is. #### The real difference: general platform vs single trade Jobber is a genuinely good product. It is used by tens of thousands of home service businesses and the quoting, scheduling and payments workflows are mature. If you run a business that does cleaning alongside gardening, window cleaning and handyman work, a general platform is arguably the right answer. The trade-off with any general platform is that it has to be configured into your trade rather than shaped around it. Cleaning has specifics that a multi-trade product treats as optional: recurring rotas across multiple sites, per-site cleaning specifications, COSHH and RAMS documentation, chemical and PPE stock levels, and compliance evidence that a facilities manager will ask to see before awarding a contract. CleanFlo assumes all of that exists because it only serves cleaning companies. That is the entire difference, and whether it matters depends on how much of your work is commercial. #### Where UK specifics genuinely matter Cleaning services in the UK are standard rated for VAT at 20%, and most commercial clients settle by BACS rather than card. A UK cleaning invoice therefore needs a VAT number, the net and VAT split per line, sort code, account number and a unique payment reference for reconciliation. CleanFlo generates that by default because there is no other kind of invoice it needs to generate. A platform serving multiple countries handles it through tax and payment configuration, which works. It is simply more setup and more to keep right. The same applies to health and safety. UK cleaning contractors are routinely asked for site-specific RAMS, COSHH assessments and training records during tenders. Having those in the same system as the jobs they relate to is the difference between producing evidence in a minute and rebuilding it the week before a review meeting. #### Pricing models, not prices We are not going to quote Jobber's prices here. They change, they vary by plan and region, and a stale number would be worse than none. Check their pricing page for the current position. What is worth comparing is the model. Each Jobber tier includes a set number of users and charges a monthly rate for every extra one, so the bill has a step in it every time the team grows past its band. CleanFlo charges £19.99 a month with unlimited staff, clients and locations, which means the software cost is flat as you grow. For a two-person operation, per-user pricing is usually cheaper or comparable. For a cleaning company adding cleaners, which is the whole point of a cleaning company, flat pricing diverges quickly in your favour. Work out your likely headcount in two years and compare on that basis rather than today's. #### Where this lands Jobber is a good product with a wider remit: several trades, a big app directory, card payments, North America. Every one of those is breadth a UK cleaning company pays for and does not use. If you run a UK cleaning company, deal with VAT and BACS, get asked for RAMS by commercial clients, and expect to add staff, CleanFlo is built for exactly that and priced so growing does not cost you more in software. Both offer a free trial. The fastest way to decide is to put one real week of your actual schedule into each and see which one fights you. **FAQs** Q: Is CleanFlo a good Jobber alternative for UK cleaning companies? A: For cleaning businesses specifically, yes. CleanFlo is built only for cleaning companies and only for the UK, so VAT invoicing at 20% (or no VAT at all if you are not registered), BACS payment details with references, and health & safety documentation including RAMS and COSHH are native rather than configured. Jobber has to be configured into a cleaning business; CleanFlo starts as one. Q: Does Jobber handle UK VAT and BACS? A: Jobber supports tax configuration and is used internationally, but its payments workflow is oriented around collecting cards. Their own UK help page lists debit and credit cards plus Apple Pay and Google Pay, and names no bank rail. If UK VAT invoicing with BACS sort code, account number and unique payment references is your standard invoice format, check carefully how much configuration that requires before committing. Q: Which is cheaper, CleanFlo or Jobber? A: It depends on headcount, and you should check Jobber's current pricing directly rather than relying on a figure on our site. The structural difference is that Jobber uses tiered plans with user limits while CleanFlo is £19.99 per month with unlimited staff, clients and locations. Small teams may find either comparable; growing teams diverge in CleanFlo's favour. Q: Can I move from Jobber to CleanFlo? A: Starting from nothing, about fifteen minutes: add a client, price your services and put a first job on the rota. Moving a real book across is an evening, because the CSV brings the clients and sites over in minutes but the access notes, alarm codes and keys are yours to check. Your team joins from a single-use invite link, or a password you set for them. Most businesses run both in parallel for a week or two during the free trial rather than switching over in one go. URL: https://cleanflo.io/compare/cleanflo-vs-jobber/ --- ### CleanFlo vs ZenMaid ZenMaid is scheduling and management software built specifically for residential maid services, with a strong focus on the US domestic cleaning market. ZenMaid is purpose-built software for residential maid services, and it does that job well. The question for a UK reader is whether a US residential-first product fits a business that also does commercial work and has to answer to UK VAT and health & safety rules. **Comparison** Feature | CleanFlo | Them Residential cleaning | Full support | Core focus, very well served Commercial & contract cleaning | Multi-site, per-site specs, contracts | Not the primary use case UK VAT invoicing | Native at 20%, or off entirely if you are not registered | US sales tax oriented BACS bank details on invoices | Built in with payment references | US payment rails oriented Health & safety / RAMS | Risk matrix, incidents, audits, score | Not a core module Inventory & PPE tracking | Yes | Limited Cleaner mobile app | Yes, offline capable | Yes Client portal | Yes, with clean requests | Yes Pricing model | Flat £19.99/mo, no cap on anything | Tiered: the entry plan caps appointments a month, the ones above it do not Currency & locale | GBP, en-GB throughout | USD-first CleanFlo suits: - UK cleaning businesses invoicing in GBP with VAT and BACS - Companies doing both domestic and commercial work under one roof - Anyone needing RAMS, COSHH records or compliance evidence for contracts - Rounds whose monthly job count keeps climbing, where a plan with an appointment cap has to be upgraded to keep up Common objections, answered: - ZenMaid is purpose-built for US residential maid services. And built around US invoicing and US payment rails. A UK round needs VAT at 20% or off entirely, BACS details with a reference on the invoice, and paperwork a UK client recognises. That is what CleanFlo is, rather than a US product with a currency setting. - If you are purely domestic, you may not need the commercial side. Until the first block of flats, letting agent or small office asks what you charge, and then asks for a risk assessment and proof of insurance before they will sign. Domestic rounds get that call more often than they expect. The compliance side is in the drawer at the same £19.99, doing nothing until the day it wins you the work. - You may already be embedded in US payment and marketing tools. The link that matters is to whoever does your books, and CleanFlo exports the whole ledger as CSV in one click. Everything else (quotes, the enquiry inbox, your own web page, the client portal) is already inside the £19.99 rather than a stack of subscriptions to hold together. #### Residential-first is a real strength, and a real constraint ZenMaid has been built around residential maid services for years and the workflows show it. Recurring domestic schedules, cleaner assignment and customer communication are handled thoughtfully because that is the business it was designed for. The constraint is what sits outside that. Most UK cleaning companies that grow do not stay purely domestic. They add end of tenancy work, then office contracts, then multi-site commercial. That transition brings requirements a residential-first product does not need to solve: per-site cleaning specifications, contract-level reporting, compliance documentation and multi-site staff allocation. CleanFlo handles domestic rounds and commercial contracts in the same system, which matters most at exactly the point a business is growing and least when it is not. #### The UK gap This is the clearest practical difference. ZenMaid is a US product serving a US market: sales tax rather than VAT, US payment rails rather than BACS, dollars rather than pounds. None of that makes it unusable in the UK, but it means the invoice you send is not natively the invoice a UK client expects, and your accountant will notice. A UK VAT invoice needs a VAT registration number, net and VAT shown separately, the tax point, and, because most UK commercial clients pay by bank transfer: a sort code, account number and reference. CleanFlo produces that format because it produces no other. If you are a UK cleaning business, that is a daily convenience rather than a one-off setup question. #### Compliance is the other divide UK cleaning contractors carry documentation obligations that US residential cleaners largely do not: COSHH assessments for every hazardous product and task, site-specific risk assessments, method statements, training records, and an incident log. Commercial clients ask for these during tenders as standard. Facilities management providers will not engage a sub-contractor without them. CleanFlo includes a compliance engine: 5×5 hazard matrix risk assessments per site, incident logging by severity, scheduled audits and a live compliance score. If your work is entirely domestic you may never need it. If you intend to win a single office contract, you will. #### Where this lands ZenMaid is built for US residential maid services, and the further your business sits from that description (UK, VAT, any commercial work at all) the more of it you are configuring around. If you are a UK cleaning company: particularly one that does or wants to do any commercial work: the UK-native invoicing, GBP pricing and built-in compliance are the reasons to look at CleanFlo, alongside a flat price with no cap on jobs, appointments, staff or sites. Check ZenMaid's current pricing on their own site; we deliberately do not quote competitor prices because they change and a stale figure helps nobody. **FAQs** Q: Is ZenMaid suitable for UK cleaning businesses? A: It can be used in the UK, but it is built for the US residential maid service market: sales tax rather than VAT, US payment rails rather than BACS, and USD-first pricing. UK businesses that need VAT invoices with BACS details and health & safety documentation for commercial clients will find those areas need workarounds. Q: What is the best ZenMaid alternative in the UK? A: For UK cleaning companies, CleanFlo covers the same residential scheduling ground while adding UK VAT invoicing at 20% for those who are registered and none for those who are not, BACS payment details with references, multi-site commercial contract management, and a health & safety compliance engine with RAMS and risk assessments. It is £19.99 per month with unlimited staff, and it puts no monthly cap on how many jobs you book. Q: Does CleanFlo work for purely domestic cleaning businesses? A: Yes. Recurring schedules, client and location profiles, job checklists, the cleaner mobile app and invoicing all work exactly as well for a domestic round as for a commercial contract. The commercial and compliance features simply sit unused until you need them. Q: Can I run both domestic and commercial cleaning in CleanFlo? A: Yes, that is a core design goal. Domestic rounds and commercial contracts live in the same schedule, with per-site cleaning specifications, separate compliance tracking per location, and invoicing that handles both households and corporate clients on BACS terms. URL: https://cleanflo.io/compare/cleanflo-vs-zenmaid/ --- ### CleanFlo vs Connecteam Connecteam is employee management software for deskless teams across many industries: shift scheduling, time clock, internal communication, checklists and forms. Connecteam is a deskless workforce app: shift scheduling, time tracking, chat and forms for teams that do not sit at desks. CleanFlo is a cleaning business platform. They overlap on staff management and diverge everywhere else. **Comparison** Feature | CleanFlo | Them Staff scheduling & shifts | Job-based rotas across sites | Strong general shift scheduling Time tracking / clock in | Start and completion on the phone, each with a location fix | Core strength · GPS time clock Team chat | Built-in messaging | Core strength Client & location records | Full CRM with site profiles | Not a client management tool Quotes & invoicing | Quotes, invoices, BACS, payment tracking; VAT if you are registered | Not included Client portal | Yes, with clean requests | No Health & safety / RAMS | Risk matrix, incidents, audits, score | Forms and checklists, not a compliance engine Inventory & equipment | Chemicals, PPE, equipment registers | Not included Revenue & contract analytics | Yes | Workforce analytics only Pricing model | Flat £19.99/mo, one product, no free tier | Free for life under a headcount; above it, a flat band per hub plus a rate per extra user CleanFlo suits: - Cleaning companies that need to quote, schedule, invoice and get paid in one place - Businesses that must issue UK VAT invoices with BACS details - Anyone who needs client and site records alongside the staff rota - Operations that need compliance evidence tied to specific sites Common objections, answered: - Connecteam is strong on time tracking and internal comms for deskless teams. It is, and that is one half of a cleaning business. The other half is quoting the job, pricing it, invoicing it and getting paid, none of which Connecteam does. Running both means two subscriptions and re-keying the same jobs into whichever tool raises the invoice. CleanFlo has the rota, the chat, the checklists and the invoice in one place. - You may already have a finance system that handles invoicing. CleanFlo does not replace your accountant: it removes the typing between the job and the invoice. A completed clean becomes an invoice in one click with BACS details already on it, carrying VAT only if you are registered, and the whole ledger exports as CSV for whoever does your books. - Connecteam serves many industries, cleaning among them. Which is why its forms are blank and yours would need building. Here the risk assessment is already a 5×5 hazard matrix, the checklist is already a cleaning checklist, and the job report the client opens already has the photographs on it. - Connecteam puts a GPS time clock at the centre. It does, and CleanFlo does not run a time clock against it. What CleanFlo does is narrower and worth stating exactly: a location fix when a clean is started and another when it is completed, each compared against the property address, with the distance shown on the job and a start well outside the radius flagged. Nothing is tracked between those two points, nothing is blocked if the fix never arrives, and the radius is yours to set. What settles a dispute with a client is rarely a map pin anyway: it is the job report, with what was done, when it started and finished, and the photographs the cleaner took on site. That goes out on every completed clean. #### They solve different halves of the problem Connecteam is very good at what it does. If your problem is "I have forty deskless staff, I need shift scheduling, a time clock and a way to reach everyone", it is a strong answer and it serves many industries well. But a cleaning business has two halves. One is the workforce: who is working, where, when, and did they turn up. The other is the commercial side: who the client is, what was agreed, what the site specification says, what to invoice, whether it has been paid, and what compliance evidence exists for that location. Connecteam handles the first half. It does not attempt the second, because it is not a cleaning product. Businesses that adopt it typically end up running it alongside accounting software and a spreadsheet of clients, which works, but means the schedule and the invoice never know about each other. #### The cost of the gap between systems The practical consequence of splitting the two halves is re-keying. A job is scheduled in one system, completed, then someone manually creates an invoice in another, matches it to the right client, and later reconciles the payment. At ten jobs a week that is an irritation. At two hundred it is a part-time job, and it is where errors enter: jobs completed but never invoiced is the single most common revenue leak in cleaning businesses that run split systems. CleanFlo generates invoices directly from completed jobs, which removes that gap by design. That is the main structural argument for a single cleaning platform over a workforce app plus accounting software. #### What Connecteam is good at Two situations. First, if your workforce is large and the hard problem really is time tracking, GPS verification and mass internal communication, Connecteam is built for that at a depth a cleaning platform will not match. Second, if cleaning is one function inside a bigger organisation: an in-house facilities team, or a multi-service contractor, then you are not running a cleaning business, you are managing staff, and a general workforce tool is the right shape. We would rather say that plainly than pretend otherwise. #### Where this lands Connecteam solves half of a cleaning business well: the shifts, the clock, the chat. The half it does not touch is the money, so it usually means a second subscription and the same jobs typed in twice. CleanFlo if you are running a cleaning company and want the quote, the schedule, the job, the invoice and the compliance record to be the same system: for £19.99 a month with unlimited staff. Check Connecteam's current pricing on their own site, and start with the free tier if you are under their headcount: it costs nothing and it will tell you within a fortnight whether a workforce app is the half of the problem you actually have. Above that line the shape is a band per hub plus a rate for each extra user, so it is worth modelling against your expected headcount rather than today's, and against how many of their hubs you would end up on. **FAQs** Q: Can Connecteam be used for a cleaning business? A: Yes, for the workforce side: shift scheduling, time tracking, team chat and checklists all apply well to cleaning teams. It does not include client records, quoting, invoicing, payment tracking or a cleaning-specific compliance engine, so most cleaning businesses using it also run separate accounting software and client records. Q: What does CleanFlo do that Connecteam does not? A: Client and location management with site-specific cleaning specifications, quotes, invoicing with BACS details generated from completed jobs and VAT on it if you are registered, payment tracking, a client portal for clean requests, inventory and equipment registers, revenue and contract analytics, and a health & safety compliance engine with RAMS, risk assessments, incident logging and audit scheduling. Q: Which is better for a small cleaning company? A: For a small cleaning company where the owner is doing everything, CleanFlo generally fits better because invoicing and client management are the actual daily burden, not workforce coordination. Connecteam becomes more compelling as headcount grows and shift scheduling, time verification and internal communication become the dominant problem. Q: Do I need both CleanFlo and Connecteam? A: Most cleaning businesses will not. CleanFlo covers job scheduling, staff rotas, the cleaner mobile app with checklists, and in-app messaging alongside the commercial side. If you specifically need GPS-verified time clocking at scale, running both is possible, but check whether CleanFlo alone covers your requirement first during the free trial. URL: https://cleanflo.io/compare/cleanflo-vs-connecteam/ --- ### CleanFlo vs a spreadsheet and WhatsApp A spreadsheet holds your clients and prices, a shared calendar holds the rota, and a WhatsApp group tells the cleaners. Nothing connects them, so you are the connection: every change has to be made in three places, and the one that gets missed is the one that reaches a client. Most cleaning companies in the UK are run on a spreadsheet, a shared calendar and a group chat. It is free, everyone already knows how to use it, and for a small round it is genuinely the right answer. This page is about where that stops being true, and how to tell. **Comparison** Feature | CleanFlo | Them Cost per month | £19.99 flat, unlimited staff | Nothing, in money Everyone already knows how to use it | A cleaner learns Start clean and Complete clean | Yes, and that is its real advantage Rota changes reach the cleaner | Push and email the moment it is assigned or changed | If they scroll back far enough Double-booking a cleaner | Warned before you save | Found out afterwards, usually by phone Proof a visit happened | Start and finish times, checklist, photographs | Your word against theirs A job that never got invoiced | Sits in an uninvoiced list until you deal with it | Scrolls out of the chat Chasing a late payer | Sends itself at 7, 14 and 30 days overdue | When you remember, if you remember RAMS for a commercial tender | 5×5 risk matrix, prints to A4 | Nothing to hand over Works when a cleaner has no signal | Queues on the phone and syncs later | Messages do not send Getting your data out | CSV export, any time | It is already your file Setting it up | An evening to move a real book across | Already done CleanFlo suits: - Rounds past roughly twenty recurring clients, where the rota stops fitting in one head - Anyone employing cleaners, where a missed message becomes somebody standing outside a locked door - Companies quoting for commercial work, where RAMS and evidence of attendance are asked for before the contract - Owners spending their Sunday evening rebuilding next week and raising invoices Common objections, answered: - A spreadsheet, a calendar and a group chat are free. They are, and the bill arrives as your Sunday evening instead. Rebuilding next week by hand, chasing who is where, raising invoices from memory: at the published UK rates that is the most expensive admin in the business, and it is the one nobody invoices for. £19.99 buys the round back. - If you are solo, software can feel like overhead. The Sunday night is the same size whether you have one cleaner or ten, arguably worse on your own, because there is nobody to hand it to. Quotes that turn into invoices, a round that rebuilds itself every week and an overdue chase that runs at 7, 14 and 30 days without you are worth more to one person than to five. - Under about fifteen clients, an hour a week of admin is not much. It is about fifty hours a year, and it is the hour you would otherwise spend quoting. That is the part worth watching: the spreadsheet does not lose you the round you have, it quietly caps the one you could have had. - Your problem might be winning work rather than running it. Then this is the right page. CleanFlo includes a quote form you can embed on a site you already run, an enquiry inbox behind it, quotes with a valid-until date that convert to an invoice in one click, and a public page at cleanflo.io/p/your-name for the people who search for you. Winning work is inside the £19.99, not an upgrade. #### What the current way actually costs Not in money. In hours, and they are your hours. Our own guide to starting a cleaning business puts it plainly: at ten clients the admin is about an hour a week. At forty clients with two staff it is ten hours a week, and it is all unpaid. That is rebuilding the rota around availability and holidays, telling clients about changes, raising and sending invoices, chasing the ones that have not been paid, keeping COSHH and risk assessments current, and pulling numbers together for the accountant. Ten hours is most of a working day. At the £18–£28 an hour that regular domestic work goes for in 2026, a day a week of your own time is the largest single cost in the business, and it is the one that never appears on any invoice. CleanFlo is £19.99 a month. Whether that is worth it is a straight comparison: one flat line against however many of those ten hours it gives you back. If the answer is "not many, yet", the honest advice is on this page too. #### The point where a spreadsheet stops working There is a threshold, and it is more specific than most software companies will tell you. Our guide puts it somewhere between fifteen and twenty-five recurring clients, and it names the symptom: a missed visit that nobody noticed until the client rang. That is the tell. Not that the spreadsheet is untidy, or that the group chat is noisy. Both of those are survivable for years. It is the first time work that was agreed does not happen, and nobody in the business knew until the person paying for it said so. It happens because nothing in the current setup is a system of record. The rota lives in a calendar, the price lives in a sheet, the change lives in a message, and the only place all three meet is your memory. Once there are more moving parts than one person can hold, the gap stops being theoretical. If you are under that threshold, stay where you are. Genuinely. Come back when a visit gets missed. #### What a group chat cannot do, however well you run it Four things, and none of them is about tidiness. It cannot prove a visit happened. When a commercial client says they only saw two cleaners for an hour, a chat history is not evidence. Start and finish times against the job, a completed checklist and photographs are. It cannot stop a job scrolling away. A clean agreed in a message on a Thursday, never written anywhere else, is a clean nobody invoices. At £45 a visit, one a month is £540 a year, more than double what CleanFlo costs. It cannot answer a tender. "What is your lone working procedure" has no answer that is a WhatsApp group, and neither does the request for risk assessments that arrives with it. It cannot tell you which work is profitable. A spreadsheet can, if you build it and keep it up. Most do not, because the version that would answer that question is a bigger job than the cleaning. #### Moving across, honestly Your spreadsheet is the easy part: clients, sites, services and staff import from CSV, and that genuinely takes minutes rather than an evening. The rest is not minutes and we would rather say so. Access notes, alarm codes, key numbers, who cleans what and which client moved to Thursdays in March are yours to check as they land, and they are worth checking, because they are the details that make the system trustworthy on the day somebody is off sick. Most businesses run both for a week or two rather than switching everything on a Sunday night. Nothing about CleanFlo requires you to stop using your spreadsheet on day one, and the export is always there if you want to go back. **FAQs** Q: Is a spreadsheet good enough to run a cleaning business? A: For a while, yes, and plenty of profitable businesses run on one. A spreadsheet for clients and prices, a shared calendar for the rota and a group chat for the team covers a small round perfectly well. It usually stops working somewhere between fifteen and twenty-five recurring clients, and the symptom is a missed visit that nobody noticed until the client rang. Q: How many hours a week does cleaning business admin take? A: About an hour a week at ten clients. At forty clients with two staff it is closer to ten hours a week: building the rota, telling clients about changes, raising and chasing invoices, keeping COSHH and risk assessments current, and preparing figures for the accountant. All of it unpaid. Q: Can I keep using WhatsApp with my cleaners? A: Yes, and most companies do. CleanFlo sends the jobs, the changes and the invites; the group chat carries on being a group chat. Staff invites are deliberately shared by WhatsApp or text, because that is what actually gets opened. Q: What happens to my spreadsheet if I switch? A: It stays exactly where it is, and it is still yours. Clients, sites, services and staff import from CSV, and everything in CleanFlo exports back to CSV at any time, before or after cancelling. Nothing is held in a format only we can read. Q: When should I not buy cleaning software? A: When the admin is still about an hour a week, when you are working alone with a diary that fits on a page, or when your problem is winning more work rather than running the work you have. Software does not solve an empty round, and £19.99 a month to remove an hour of admin is not a good trade. URL: https://cleanflo.io/compare/cleanflo-vs-spreadsheet/ --- ### CleanFlo vs Swept Swept is workforce-operations software purpose-built for commercial cleaning and janitorial teams: scheduling, GPS-verified time tracking, inspections and job costing, from a Canadian company serving North America. Swept is genuinely built for commercial cleaning teams, and it shows in the inspections and the job costing. What it does not do is run the business around that work: no client records, no quoting, no invoicing. This page is about what happens on the other side of a completed shift. **Comparison** Feature | CleanFlo | Them Built specifically for cleaning | Yes: cleaning is the only trade | Yes: janitorial and commercial cleaning specifically UK VAT invoicing | Native at 20%, or off entirely if you are not registered | Not offered: no invoicing at all Client & site records | Full CRM with a client portal | Not a client management tool Quoting and invoicing | Quotes, invoices, BACS, payment tracking; VAT if you are registered | None: a completed job stops at the timesheet GPS time tracking | Not continuous: one fix at the start, one at the finish, checked against the property | Yes, GPS-verified clock in and out Site inspections & quality scoring | Scheduled audits and a compliance score | Core strength: dedicated inspection workflows Health & safety / RAMS | 5×5 risk matrix, incidents, audits | Not a compliance module Supply & job costing | Inventory and expenses, per job | Job costing and supply tracking, a core feature Pricing model | Flat £19.99/mo, unlimited sites | Priced by how many locations you clean, in USD, from a minimum number of them Currency & locale | GBP, en-GB throughout | USD, North America-first CleanFlo suits: - UK cleaning companies that need quoting, VAT invoicing and a client portal in the same system as the rota - Anyone who has to produce RAMS or compliance evidence for a commercial client - Businesses that want a 14-day free trial with no card and a published, flat price - Companies for whom a completed job has to become an invoice, not just a timesheet Common objections, answered: - Swept is built for commercial janitorial inspections and attendance. And stops at the completed shift: no client records, no quoting, no invoicing. The money side is where a cleaning business actually lives or dies, so Swept usually means a second system to bill from. CleanFlo runs the inspection and the invoice out of the same job. - Swept offers GPS-verified attendance. It does, and CleanFlo is a level below that on purpose. It takes one location fix when the clean is started and one when it is completed, compares each against the property address, shows the distance on the job and flags a start that is well outside the radius, which defaults to 250 metres and is yours to change. It is not a shift-long track, it never blocks a clean, and a fix that never arrives is recorded as the reason rather than as a fault. In practice what a commercial client accepts as proof is the job report: what was done, when, and photographs from the site, sent on every completed clean. That is the evidence that renews a contract. - You may already bill through separate accounting software. Then you are paying twice and typing everything twice. CleanFlo raises the invoice from the completed job with your BACS details on it, VAT on it only if you are registered, and still exports the whole ledger as CSV for your accountant. - Swept has deeper job costing on its higher tiers. Higher tiers are the point. CleanFlo is £19.99 flat with unlimited staff, clients and locations, and job costs, hourly rates, expenses and mileage are all in it at that price. There is no tier where the useful part lives. #### The real difference: an operations tool against a business platform Swept is good at what it does. Scheduling, GPS-verified time tracking, site inspections and job costing are built specifically for commercial cleaning and janitorial teams, and the depth shows in the inspection workflow especially. What Swept does not attempt is the other half of running a cleaning company: who the client is, what was quoted, what to invoice, and whether it has been paid. Its own features page advertises running operations, proving quality and controlling costs, with nothing about client records, quotes or invoices. CleanFlo does both halves in one system. Whether that matters depends on whether you already have client billing solved elsewhere, or whether a completed job needs to become an invoice without leaving the software that scheduled it. #### Where UK specifics genuinely matter This is not really a workaround question, the way it sometimes is against a US-based competitor. Swept simply does not attempt invoicing, in any currency, so a UK cleaning company using it is running a second system for client billing regardless of VAT. CleanFlo generates a UK VAT invoice, with net and VAT split per line, sort code, account number and a unique payment reference, if you are VAT registered. If you are not, it asks once, takes you at your word, and puts no VAT number, column, line or total on anything. If that half of the job is currently a spreadsheet or an accounting package that does not know about the rota, moving it into the same system as the schedule removes a manual step rather than adding a configuration one. #### GPS tracking, and what CleanFlo does instead Swept's GPS-verified clock in and out is a real, current feature, and worth naming plainly rather than working around. CleanFlo takes two location fixes on a job, at start and at completion, checked against the property with a deliberately generous radius, because a phone fixes indoors to a hundred metres routinely and wrongly doubting a cleaner costs more than missing one. That is a different level of verification from continuous GPS tracking, on purpose. If proving exactly where a cleaner was for the whole shift is the actual requirement, Swept's version is the real answer to that question and CleanFlo's is not trying to be. #### Where this lands Swept is well built for the shift itself, and stops when the shift ends: no client records, no quoting, no invoicing. A cleaning business is decided on the other side of that line. If you want the quote, the schedule, the job, the invoice and the compliance record in one system, £19.99 a month with unlimited staff, CleanFlo is built for that specifically. One thing to check before you model anything: their plan page prices on the number of locations you clean, and starts from a minimum number of them. A cleaning company adding a small site is adding to that count, so a contract worth a few hundred a month can move you up a band before it has earned anything. CleanFlo puts no cap and no price on sites at all. Check their current pricing on their own site; we deliberately do not quote competitor prices here because they change and a stale figure helps nobody. **FAQs** Q: Is CleanFlo a good Swept alternative for UK cleaning companies? A: Yes, if you want the commercial side in the same system. CleanFlo covers quoting, invoicing with BACS details and VAT if you are registered, and a client portal alongside the rota. Swept's inspections and GPS time tracking are real strengths but stop at the timesheet, so most Swept customers run separate invoicing software regardless. Q: Can CleanFlo do the inspections and quality scoring Swept does? A: Partially. Scheduled audits and a live compliance score cover the health-and-safety side of quality. Swept's site inspection workflow is built around a different question, quality against a client's own standard visit by visit, and is a deeper tool for that specific job. Q: Does CleanFlo do GPS time tracking like Swept? A: No, and it is a deliberate choice rather than a gap. CleanFlo takes a location fix at the start and completion of a job and checks it against the property, generous by design. Swept's continuous GPS verification is a genuinely different level of tracking, and the right answer if that is specifically what you need to prove. Q: Which is cheaper, CleanFlo or Swept? A: Check Swept's current pricing directly rather than relying on a figure here. Two structural differences. Their plans price on how many locations you clean, from a stated minimum, so the bill moves when you win a site; CleanFlo's does not move for a site, a cleaner or a client. And their tiers price the operations half only, with invoicing and client management left to a separate system, while CleanFlo's £19.99 a month covers both in one place. URL: https://cleanflo.io/compare/cleanflo-vs-swept/ --- ### CleanFlo vs BigChange BigChange is a UK multi-trade job management platform: CRM, scheduling, live vehicle tracking and financial-system integrations, serving electricians, plumbers, HVAC engineers and cleaning companies alike from one general system. BigChange is a serious, UK-built job management platform, and vehicle tracking is where it earns its reputation. Cleaning is one of the trades it serves rather than the one it was built for, and that shows up in what is configured against what is simply assumed. **Comparison** Feature | CleanFlo | Them Built specifically for cleaning | Yes: cleaning is the only trade | No: general field service across many trades UK VAT invoicing | Native at 20%, or off entirely if you are not registered | Yes, UK-based, through its financial module Health & safety / RAMS | A scored 5×5 hazard matrix with residual scoring, and a 0-100 compliance score built from it | RAMS and COSHH named for cleaners, with a risk assessment required before a job can start Vehicle & GPS tracking | No live tracking and no geofence: a fix at a job's start and finish, nothing between | Core strength: live tracking, geofencing, fleet management Accounting integrations | CSV export, no live sync | Live sync with Xero, Sage, QuickBooks, SAP Business One Cleaner mobile app | Offline by default, 27 languages | Photo capture, and the H&S form before the job starts Client portal | Yes, with clean requests | CRM included; a client portal is not the focus Pricing model | Flat £19.99/mo, published | Not published: their pricing page asks you to request it Free trial | 14 days, no card | None: demo-led sale Company size fit | Sole trader to multi-site cleaning firm | Established multi-trade operations, often vehicle-heavy CleanFlo suits: - UK cleaning companies that want the risk assessment scored, on a 5×5 with a residual score, and feeding a compliance score they can show a client - Businesses that want one published, flat price and a real 14-day trial rather than a custom quote - Cleaning-only operations where a van is incidental to the work, not central to it - Anyone who wants the cleaner app to assume cleaning: checklists, photos, offline by default Common objections, answered: - BigChange serves several trades: electrical, plumbing, HVAC and cleaning. Cleaning is one of the trades it serves rather than the one it was built for, and that shows in what is configured versus what is assumed. Here the checklists, the COSHH records, the 5×5 and the cleaner app are cleaning by default. Nothing to shape first. - BigChange will not let a cleaning job start until the risk assessment is done. That is true, they say so on their own cleaning page, and it is a harder line than ours. CleanFlo gates the other end: a clean cannot be marked complete while a checklist item is still missing the photograph or the reading it requires, and a cleaner who finishes anyway has to type a reason, which is filed against the job with their name and the time on it. The reason we gate completion rather than the start is that a lock at the door strands a cleaner outside a building at seven in the morning with a client waiting, and what the client is owed is the evidence, which is produced at the end. If a hard start block is what your contract demands, that is a real reason to buy theirs. - BigChange puts RAMS and COSHH in front of cleaning companies by name. It does, and any page telling you otherwise has not read theirs. Where the two differ is what the assessment is once it exists. Ours is scored: every hazard carries a likelihood and a severity on a 5×5, then a residual pair after the controls, and a hazard nobody scored is printed as not scored rather than banded as if it were. Those scores feed a 0-100 compliance score with every deduction named and dated, so what you hand a facilities manager is a position rather than a folder. Their strength is enforcement at the door; ours is that the paperwork adds up to a number you can defend. - BigChange earns its reputation on vehicle tracking. If live telematics is the business you are running, that is genuinely their ground. If your vans are how the cleaners get to site, CleanFlo already holds the register: every vehicle with its plate, its mileage and who has it today, with MOT, road tax and insurance counted down before they lapse, and fuel and mileage logged against the van rather than against nobody. - You may want a live two-way sync with Xero, Sage or QuickBooks. CleanFlo has no live sync, and it is better you know that here than in week three. What it has is one-click CSV export of invoices, payments and revenue, formatted so a bookkeeper can bring it straight in, which is how most cleaning firms this size actually work with their accountant. - BigChange is a custom-quoted, demo-led sale. £19.99 a month, published, flat, unlimited staff. There is a 14-day free trial with no card, and a read-only demo you can open right now without giving anyone your phone number. You can find out whether this fits before anybody calls you. #### A general platform built around the vehicle, not the clean BigChange's reputation is built on live vehicle tracking, geofencing and fleet management, and that is not an accident: it serves electricians, plumbers, HVAC engineers and cleaning companies alike, and a van full of tools driving between jobs is the thing most of those trades have in common. Cleaning fits that model without needing it. Most cleaning work is walked to or arrives by whatever transport a cleaner already has, and the risk assessment a commercial client actually asks for is COSHH and a 5×5 hazard matrix, not a geofence. Their health and safety is not an afterthought and this page is not going to pretend it is: their cleaning page names RAMS and COSHH to cleaners and says a cleaning job cannot be started until its risk assessment has been completed. Read their page before you read ours. The difference worth the ink is what happens to the assessment after it is filled in. CleanFlo scores it: a likelihood and a severity on a 5×5 for every hazard, a second pair for the residual risk once the controls are in, and a hazard that was never scored printed as not scored rather than quietly banded. Those scores roll into a 0-100 compliance score whose every deduction is named, dated and capped by category, so improving one area is visible rather than lost in a folder. And the gates sit at different ends of the job. Theirs is at the start. CleanFlo will not let a clean be marked complete while a checklist item still wants the photograph or the reading it was set up to require, and a cleaner who completes it anyway types a reason that is filed against the job with their name and the time. Nobody is left outside a building at seven in the morning, and the client still gets the evidence. #### Where cleaning-specific still wins A checklist per clean type, a compliance score built from cleaning-specific hazards, and a cleaner app that assumes cleaning rather than any trade: these are the parts of BigChange that would need configuring to fit a cleaning company, and the parts of CleanFlo that already do. That trade-off runs both ways. A multi-trade business does not want six differently-configured cleaning-only tools sitting beside five other trade-specific ones; BigChange's genuine strength is being the one system that reasonably fits all of them. #### Pricing: published and flat, or quoted BigChange publishes no rate. Their pricing page lists what every plan includes and then asks you to request a price, and there is no free trial to look first: the route in is a demo. CleanFlo is £19.99 a month, unlimited staff, clients and locations, published on this site, and offers a 14-day free trial with no card. Whether that difference matters depends on what you are buying: an operation with a real fleet, telematics and several trades in it is buying something a flat per-company rate was never shaped for, and a quote is the honest way to price that. #### Where this lands BigChange is a serious UK platform whose centre of gravity is the vehicle. If the vans are how your cleaners reach site rather than the business itself, you are buying a fleet system to get a cleaning one. If cleaning is the whole business and you want RAMS, checklists and the cleaner app assuming that from day one, CleanFlo is built for that specifically, at a flat price you can check before you talk to anyone. Check BigChange's current pricing on their own site; most of it is quoted rather than published, and we do not repeat a figure that could be out of date the week we wrote it. **FAQs** Q: Is CleanFlo a good BigChange alternative for a cleaning company? A: Yes, if cleaning is the whole business rather than one trade among several, and if you do not need a hard block on starting a job. BigChange markets RAMS and COSHH to cleaning companies by name and will not let a cleaning job start until its risk assessment is done. CleanFlo scores the assessment instead, on a 5×5 with a residual score feeding a 0-100 compliance score, and puts its own gate on completion: a clean cannot be marked done while a checklist item is still missing a required photograph or reading, and finishing anyway takes a typed reason that is filed against the job. Q: Can CleanFlo sync with Xero or Sage the way BigChange does? A: No, and it is better you know that now than in week three. CleanFlo exports invoices, payments and revenue as CSV for your accountant to bring in. BigChange's live integrations with Xero, Sage, QuickBooks and SAP are a genuine advantage if a two-way sync is what you need most. Q: Does CleanFlo track vehicles like BigChange? A: No. BigChange's live vehicle tracking, geofencing and fleet management are a real strength and the reason many multi-trade businesses choose it. CleanFlo tracks nothing live, follows no van and draws no geofence, by design. The only location it holds is a fix taken when a clean is started and another when it is completed, checked against the property address, plus one on a vehicle walkaround check and one on a lone-worker alert. Q: Which is cheaper, CleanFlo or BigChange? A: Nobody can tell you from a web page, including us: BigChange publishes no rate, and their pricing page asks you to request one. The structural difference is that CleanFlo is a flat £19.99 a month, published, and offers a 14-day free trial with no card you can start without speaking to anybody, while BigChange is sold through a demo and a quote. URL: https://cleanflo.io/compare/cleanflo-vs-bigchange/ --- ### CleanFlo vs GetCleanFlow GetCleanFlow is cleaning business software covering scheduling, invoicing, quotes, client records, job timers and team management, sold to solo cleaners, teams and companies internationally. Two cleaning platforms with near-identical names, which is confusing enough that this page is worth writing. They are aimed at different ends of the same trade: GetCleanFlow at the solo cleaner and the small domestic round, CleanFlo at the team that has started taking commercial work. Here is where each one actually fits. **Comparison** Feature | CleanFlo | Them Scheduling and recurring jobs | Day, week and month, one-off and recurring | Yes, recurring patterns and calendar Invoicing and quotes | BACS with payment references, VAT if you are registered | Branded invoices and quotes Client records | Clients, sites, access notes and full history | Client notes, properties and history Checklists and job photos | Per clean type, photos against the job | Customisable checklists, before/after photos Health & safety and RAMS | 5×5 risk matrix, incidents, audits, compliance score | Not published as a feature Waste transfer notes | Carriers, consignment codes, retained two years | Not published as a feature Offline working | Offline by default, syncs on reconnect | Not published as a feature Languages in the cleaner app | 27, matched to the phone | Not published as a feature Client portal | Yes, no account needed | Not published as a feature Website for your business | Fourteen layouts, included | Not published as a feature Pricing model | Flat, unlimited staff, clients and sites; one rate for everybody | A founder rate capped at a number of sign-ups, a higher standard rate behind it, and a charge per extra team member on either Free trial | 14 days, no card | 14 days, no card Market | UK only, by design | International CleanFlo suits: - Teams of three or more, where a per-member charge starts compounding with every hire - Anyone bidding for commercial, office or letting-agent work who gets asked for RAMS and risk assessments - Businesses whose cleaners work in basements, plant rooms and stairwells where the signal fails - Teams where English is not every cleaner's first language - UK businesses that want VAT and BACS to be the assumption rather than a setting Common objections, answered: - A low per-member price can look cheaper on your own. On their founder rate it is, on your own, and it stays cheaper for the first couple of people you add. Two things move that line and both are on their own pricing page. The founder rate is capped at a fixed number of sign-ups, and once those are gone the standard rate takes over: it is the same monthly figure as ours before you have added anybody, and every person after that is a charge there and nothing here. So the crossover is not a fact about the two products, it is a fact about which of their two rates you were given. Work it out on the rate you were actually quoted and the headcount you want in two years, not today’s. - A small round may only need a calendar, a client list and invoices. All three are in here, and they are the part you will use on day one. The rest (RAMS, audits, the client portal, your own web page) costs nothing extra and sits switched off until the day somebody asks for it. - A compliance module can feel like noise if nobody has asked yet. Modules you are not using can be turned off, so the app stays the size of your business. The reason it is there at all is that the request never arrives early: an agent or an office asks for RAMS and insurance the week they are choosing, and a fortnight of building a safety file is a fortnight you do not have. #### The short version GetCleanFlow is built around the core admin of a cleaning round: the calendar, the client list, the invoice, the timer. Judged on that, it covers the ground and a solo cleaner would not obviously want for anything. CleanFlo covers the same ground and then keeps going into the things that only start to matter once you have staff and commercial clients: health and safety documentation, an offline multilingual app for the people holding the mop, waste transfer notes, a client portal, and a flat price that does not move when you hire. If you are one person cleaning houses, the extra is weight you are carrying for nothing, and you should buy on price. If you have three cleaners and a contract that asks for a risk assessment, it is the whole reason to switch. The one-person argument is written out in full on our price page, including where to look instead. #### Pricing: the models, not the prices We do not publish competitors' prices anywhere on this site. They change without notice, and GetCleanFlow's headline rate is explicitly an introductory one for a limited number of sign-ups with a higher standard rate published behind it, so any figure we printed would be wrong before long. Check their pricing page for what it costs today. The models are worth comparing, and they are genuinely different. GetCleanFlow charges a base fee for the account holder plus a further monthly charge for each additional team member. CleanFlo charges £19.99 a month for the company, with unlimited staff, clients and locations, and no per-seat charge of any kind. Which is cheaper depends on headcount and on which of their two rates you were given, because they publish two: a founder rate capped at a fixed number of sign-ups and locked for life to whoever claims one, and a standard rate that takes over once those are gone. On the founder rate there is a crossover a few people up, and below it their plan genuinely wins. On the standard rate the base is the same monthly figure as ours before you have added a single person, and each team member after that is a charge on their side and nothing on ours. Rather than assert where the line falls, we built a cost calculator that runs on the rate you have actually been quoted. The structural point is simple enough: on a per-member plan, hiring a cleaner is also a purchasing decision. On a flat one, it is not. Whether that matters is a question about your next two years rather than your next month. #### Health and safety, which is the real dividing line This is the largest single difference between the two products, and it is the one most likely to decide the question for anyone doing commercial work. UK cleaning contractors are routinely asked for site-specific risk assessments and method statements during a tender, for COSHH assessments covering the chemicals they use, and for evidence that incidents get logged and audits happen. Facilities managers and letting agents ask for this as a matter of course, and increasingly will not award work without it. CleanFlo holds all of that against the sites and jobs it relates to: risk assessments scored on a 5×5 hazard matrix, method statements you can attach to a bid, incidents logged by severity, scheduled audits, a live compliance score, and waste transfer notes with the carrier and consignment code retained for the statutory period. GetCleanFlow publishes no health and safety features on its site: not risk assessments, not RAMS, not COSHH, not incident logging. That is not a criticism of a product aimed at solo domestic cleaners, most of whom are never asked for any of it. It is a straightforward statement of fit: if you are bidding for offices, it is the thing you would have to solve elsewhere. #### The cleaner's phone, which nobody buys and everybody uses Both products give cleaners a mobile view of their jobs. Two differences are worth knowing about because they are invisible until the day they matter. Signal. Cleaning happens in basements, plant rooms, stairwells and back-of-house corridors, which is exactly where mobile signal fails. CleanFlo's cleaner app works offline by default: checklists, photographs, start and finish times all queue on the phone and sync when the signal returns. GetCleanFlow describes a mobile-friendly web app and does not publish offline capability. A web app with no signal is a blank screen, and the cleaner falls back to ringing you. Language. A substantial share of the UK cleaning workforce does not have English as a first language. CleanFlo's cleaner app ships in 27 languages and matches the phone's own setting, so nobody has to choose anything. GetCleanFlow does not publish multi-language support. Neither of these is what an owner is shopping for at 22:00, which is precisely why they are worth pointing at. They are the two things that decide whether the software survives contact with the people actually using it. #### Where GetCleanFlow is the better answer A comparison page that cannot name a single thing the other product does better is one you should not believe, so here is ours, and it is a real one. If you clean on your own and intend to keep doing so, and you can still claim their founder rate, it will cost you less than £19.99 a month, and everything above about compliance, offline sync and 27 languages is weight you would be carrying for no reason. Buy on price and spend the difference on advertising. Check which rate you are being offered first: the founder one is capped at a stated number of sign-ups, and the standard rate behind it starts level with ours and then charges for each person you add. GetCleanFlow also sells internationally. CleanFlo is UK-only and deliberately so: VAT at 20% or switched off entirely if you are not registered, BACS with payment references, UK health and safety practice and English-language support in UK hours. If you are cleaning in Dublin, Toronto or Sydney, we are not a candidate and GetCleanFlow is. #### Where this lands These are not really the same product competing on quality; they are two products aimed at different sizes of the same business. The dividing line is the first commercial contract, and a headcount that depends on which of their two rates you were given. A per-member price looks cheaper on your own and compounds with every hire, which is the direction most cleaning businesses are heading rather than away from. On their standard rate it compounds from the first hire, because the base is already level with ours. After it, the per-member charge starts compounding, somebody asks for a risk assessment, and a cleaner stands in a basement with no signal. Those three things arrive at roughly the same time in a cleaning business's life, and they are what CleanFlo is built for. CleanFlo offers a 14-day free trial with no card, and there is a read-only demo you can open now without signing up for anything. Put one real week of your actual schedule in and see how much of your Sunday it gives back. **FAQs** Q: What is the difference between CleanFlo and GetCleanFlow? A: They are separate, unrelated companies with near-identical names. GetCleanFlow covers the core admin of a cleaning round (scheduling, invoicing, quotes, client records and timers) and sells internationally to solo cleaners and small teams. CleanFlo is UK-only and adds health and safety documentation including RAMS, an offline cleaner app in 27 languages, waste transfer notes, a client portal and a website, on a flat price with no per-user charge. Q: Which is cheaper, CleanFlo or GetCleanFlow? A: It depends on your headcount and on which rate you are offered, and we deliberately do not publish their prices. They publish two: a founder rate capped at a fixed number of sign-ups and locked for life to whoever claims one, and a standard rate that replaces it afterwards. Both add a monthly charge for each extra team member. CleanFlo is £19.99 a month for unlimited staff, clients and locations. On their founder rate a small team is cheaper there and the crossover arrives a few people in; on their standard rate the base is level with ours before anybody is added and every person after that is a charge on their side only. Our cost calculator runs the sums on the rate you have actually been quoted. Q: Is CleanFlo a good GetCleanFlow alternative? A: If you have a team or take commercial work, yes: the per-member charge stops applying, and RAMS, COSHH, incident logging and audits are built in rather than something to solve separately. And if you are on your own right now, the flat price is what stops the software bill moving the month you take somebody on, so the decision does not have to be made twice. Q: Does GetCleanFlow do RAMS and risk assessments? A: Not that they publish. Their site lists scheduling, invoicing, quotes, CRM, timers, checklists, photo uploads, team management, stock and documents, with no health and safety module described. If you are bidding for commercial or facilities-management work where site-specific RAMS and COSHH assessments are asked for at tender, that is the gap to check before committing. Q: Do both work offline? A: CleanFlo's cleaner app works offline by default and syncs when the signal returns, which matters because cleaning happens in basements and plant rooms. GetCleanFlow describes a mobile-friendly web app and does not publish offline capability. Worth testing on a real site during both free trials rather than taking either description on trust. Q: Are CleanFlo and GetCleanFlow the same company? A: No. They are unrelated businesses with similar names. CleanFlo is at cleanflo.io, is operated by WhealBit from Cornwall, and has been running since 2025. GetCleanFlow is a separate company at a different domain. If you have a support question or a billing query, check which one you actually signed up with. URL: https://cleanflo.io/compare/cleanflo-vs-cleanflow/ --- ### CleanFlo vs Squeegee Squeegee is UK-built scheduling, invoicing and payments software for round-based and mobile services: window cleaning, domestic rounds, gardening and similar, with jobs grouped into rounds, planned on a map and collected automatically. Squeegee is a UK product built around the round: jobs grouped, planned on a map, collected by Direct Debit. CleanFlo is built around the cleaning company: the rota, the compliance file and the invoice. If you run a window round, read the second half of this page first. **Comparison** Feature | CleanFlo | Them Built specifically for cleaning | Yes: cleaning is the only trade | Round-based and mobile services generally, cleaning among them Rounds and route planning | Recurring jobs on a rota, and every site on one map; no round grouping and no route optimisation | Core strength: jobs grouped into rounds, planned on a map, with optimised route navigation Collecting from households | No mandate held: BACS details and a reference on the invoice, plus a pay-now link if you supply one | A saved card with Stripe, or a Direct Debit mandate through GoCardless, charged when the work is done Bookkeeping | One-click CSV for whoever does your books; no ledger and no reconciliation | Bank reconciliation, balance sheet, profit and loss, and VAT returns to HMRC Health & safety / RAMS | A scored 5×5 hazard matrix with residual scoring, incidents, audits and a 0-100 compliance score | Custom forms; no RAMS or COSHH module in their plan features Waste transfer notes | Carrier registration checked against the regulator, retained two years | Not in their plan features Cleaner app | Offline by default, 27 languages matched to the phone | Offline mode; per-cleaner language not in their plan features Client portal | Yes, with clean requests, no account needed | Portal website with quotes, appointments and live chat Pricing model | Flat £19.99/mo for the company, unlimited staff | Per user a month, plus VAT, across four plans Market | UK only, by design | UK-built, sold internationally CleanFlo suits: - Cleaning companies with staff, where a per-user price rises with every hire - Anyone asked for RAMS, COSHH or a risk assessment before a contract is signed - Teams whose cleaners work in basements and plant rooms, in more than one language - Commercial and contract work, where the job is a specification against a site rather than a stop on a round Common objections, answered: - Squeegee is built for rounds, and a round is what I run. Then this page has already told you to buy theirs, and it means it. What is worth knowing is where a round stops being the whole business: the first office contract, the first cleaner you employ rather than subcontract, and the first client who asks for a risk assessment before they will sign. Those three tend to arrive in the same year, and none of them is a routing problem. - Squeegee charges per user, which is fine while it is just me. It is, and it stays fine for a while. The arithmetic changes at the point most cleaning businesses are heading for: on a per-user plan, hiring a cleaner is also a purchasing decision, and on a flat one it is not. CleanFlo is £19.99 a month for the company however many people are on it. Work it out on the headcount you want in two years rather than today’s. - Squeegee does the bookkeeping too, so it replaces more things. It does, and if you want your ledger and your rota in one login that is a genuine reason to choose it. The trade is what fills the space instead here: a compliance file that produces evidence for a tender, waste transfer notes with the carrier checked against the regulator, stock and PPE, a vehicle register that chases its own MOT dates, and an offline cleaner app in 27 languages. Neither list is better in the abstract. One of them is what your next contract asks for. Buy Squeegee instead if: Three reasons, and all three are real. If any of them is your business, buy theirs. - You want your customers on Direct Debit. Squeegee invites a customer to set up a GoCardless mandate and charges them once the work is done. CleanFlo holds no mandate at all: it puts your sort code, account number and a payment reference on the invoice, and carries a pay-now link if you supply one. On a domestic round of a hundred houses, that difference is your Saturday. - You run a round rather than a rota. Grouping jobs into rounds, planning them on a map and getting an optimised route out the other end is the centre of their product and is not in ours at all. A window round or a fortnightly domestic round is the exact shape they were built for. - You want your books inside the software. Bank reconciliation, a balance sheet, profit and loss and VAT returns to HMRC are in their plans. CleanFlo raises the invoice, tracks the payment and exports the ledger as CSV for a bookkeeper, and stops there. #### The round and the rota are different shapes A round is a sequence: the same houses, in the same order, every four weeks, and the work is to get through it efficiently and collect the money without chasing. Squeegee is built on that sequence. Jobs group into rounds, the round plans on a map, the navigation optimises, and a completed job invoices and collects itself. A rota is an allocation: which cleaner is at which site, doing which specification, with which key, at which hour. That is what CleanFlo is built on, because that is the shape a cleaning company takes once it has staff and contracts rather than a list of houses. Plenty of businesses are both, and the honest answer for those is to look at which half is actually costing you evenings. If it is the sequence and the collection, that is Squeegee. If it is who is where and what the client is going to ask for, that is this one. #### Collection, said plainly This is the clearest thing Squeegee does that CleanFlo does not, and the page would not be worth reading if it were buried. Squeegee can hold a Direct Debit mandate for your customer through GoCardless and charge them when the work is completed, or keep a card on file with Stripe. CleanFlo holds no mandate. It raises a VAT invoice from the completed job with your sort code, account number and a unique payment reference on it, tracks whether it has been paid, chases it, and stops the moment it lands. If you supply a pay-now URL, that goes on the invoice too. What it will never do is take money from a household on its own. For a commercial book that is the right shape, because offices and letting agents pay by bank transfer on terms and would not sign a mandate if you asked. For a hundred domestic houses at forty pounds a visit, it is not, and that is the sentence a domestic round should act on. #### Compliance is the other direction Their plan feature list carries custom forms, which is a fair way to build a checklist and a poor way to hold a risk assessment. CleanFlo scores the assessment: a likelihood and a severity on a 5×5 for every hazard, a second pair for the residual risk once the controls are in, and a hazard nobody scored is printed as not scored rather than banded as though it were. Those scores roll into a compliance score out of 100 with every deduction named, dated and capped by category, so a facilities manager asking what your safety position is gets a position rather than a folder. Incidents log by severity, audits schedule themselves, and waste transfer notes carry a carrier registration checked against the regulator rather than typed in. On a domestic round none of that is asked for and it is weight. On the day you bid for a school, a surgery or an office block it is the thing being asked for, and building it afterwards takes the fortnight you do not have. #### Where this lands Squeegee is a good product and it beats this one at the two things a round-based business cares most about: planning the round and collecting the money automatically. It also does your books. If you clean windows or run a domestic round on your own or with one other person, that is the answer. CleanFlo is the answer at the point the business stops being a round: staff you employ, sites with specifications, clients who ask for paperwork, and a price that does not move when you hire. Both have a free trial. Put the same awkward week into each. **FAQs** Q: Is CleanFlo a good Squeegee alternative? A: For a cleaning company with staff and commercial clients, yes: the price is flat rather than per user, and RAMS, COSHH, incident logging, audits and waste transfer notes are built in. For a window round or a domestic round run by one or two people, probably not: Squeegee groups jobs into rounds, plans them on a map with optimised route navigation, and can collect by Direct Debit, and CleanFlo does none of those three. Q: Does CleanFlo collect Direct Debits like Squeegee? A: No. Squeegee can hold a GoCardless Direct Debit mandate for your customer and charge them once the work is completed. CleanFlo holds no mandate: it raises the VAT invoice from the completed job with your BACS details and a unique payment reference, tracks and chases it, and carries a pay-now link if you supply one. If automatic collection from households is the problem you are solving, that is a reason to choose theirs. Q: Does CleanFlo optimise routes? A: No. Every site sits on one map and jobs are scheduled onto a rota, but there is no round grouping and no route optimisation of any kind. Squeegee lists optimised route navigation in its plan features and it is a core part of what that product is for. Q: Which is cheaper, CleanFlo or Squeegee? A: It depends entirely on headcount, and we do not publish their prices because they change. Their plans are priced per user a month plus VAT; CleanFlo is £19.99 a month for the company with unlimited staff, clients and locations. On your own, theirs is cheaper. The line crosses somewhere in the first few hires and the gap widens after that. Our cost calculator runs the sums on the rate you were actually quoted. Q: Does Squeegee do RAMS and COSHH? A: Their plan features list custom forms rather than a health and safety module, and name neither RAMS nor COSHH. Check their own site before deciding, because a feature list is not a product tour. If site-specific risk assessments and COSHH records are asked for at tender in your work, that is the gap to test during both free trials. URL: https://cleanflo.io/compare/cleanflo-vs-squeegee/ --- ### CleanFlo vs ServiceM8 ServiceM8 is job management software for trades and service businesses: quoting, scheduling, forms, invoicing and card payments, with a free single-user plan and paid plans banded on how many jobs you create in a month. ServiceM8 is a mature job management product for trades and service businesses, with a free plan that is genuinely free and a live sync to Xero. Cleaning is one of the trades it serves. This page is about what that costs you and what it saves you. **Comparison** Feature | CleanFlo | Them Built specifically for cleaning | Yes: cleaning is the only trade | No: trades and service businesses generally A free plan | None: one plan, and a 14-day free trial with no card | Yes, and it is a product rather than a trial: one user, with a cap on jobs a month Pricing model | Flat £19.99/mo, no cap on jobs, staff, clients or sites | Banded on how many jobs you create a month; users unlimited on the paid bands Accounting integrations | One-click CSV export, no live sync | Live sync with Xero, QuickBooks Online and MYOB The cleaner’s phone | One app on any phone, offline by default, 27 languages matched to the device | Full app on iPhone and iPad; a lighter companion app for Android Health & safety / RAMS | A scored 5×5 hazard matrix with residual scoring, incidents, audits and a 0-100 compliance score | Electronic forms and certificates you build yourself UK VAT invoicing | Native at 20%, or off entirely if you are not registered | Yes; note their own subscription is invoiced to UK customers under the reverse charge Client portal | Yes, with clean requests | Online booking and client-facing job links Inventory, PPE and vehicles | Chemicals, PPE and equipment, and a vehicle register that chases its own expiry dates | Asset management; not stock or PPE for a cleaning round Market | UK only, by design | Global, with UK pricing published in GBP CleanFlo suits: - Cleaning companies whose job count grows faster than their headcount, where a band on jobs a month is the ceiling you hit first - Anyone asked for RAMS, COSHH or a compliance position before a contract is signed - Cleaners on Android phones, in more than one language, working where the signal fails - Businesses that want the risk assessment scored rather than a blank form to design Common objections, answered: - ServiceM8 has a free plan and CleanFlo does not. It does, it is a real product rather than a trial, and a solo cleaner doing a handful of jobs a month should be on it. The two limits worth reading before you build a business on it are the single user and the monthly job cap: the first stops at your first employee, and the second is the one a growing round walks into without hiring anybody. CleanFlo caps neither, at one flat price. - ServiceM8 syncs live with Xero. It does, and CleanFlo does not sync live with anything. It raises the invoice from the completed job with your BACS details on it, tracks the payment, and exports invoices, payments and revenue as CSV formatted for a bookkeeper to bring in. For most cleaning firms this size that is how the accountant already works, but if a two-way sync is what you want most, that is a real reason to buy theirs. - ServiceM8 is mature and has been doing this for years. It has, and breadth is what it bought with the time: many trades, asset management, forms you build for any purpose. The cost of breadth is that cleaning arrives as a configuration project. Here the checklist is a cleaning checklist, the risk assessment is a scored 5×5 an inspector recognises, the COSHH records have a home, and the cleaner app assumes cleaning. Nothing to shape first. - Most of my cleaners are on Android. Worth checking before you commit either way. Their own help says the full-featured app is optimised for iPhone and iPad, with a lighter companion app for Android technicians. CleanFlo’s cleaner app is one app on whatever phone the cleaner already owns, offline by default, in 27 languages matched to the device. The people holding the phone do not choose the software and rarely get asked about it. Buy ServiceM8 instead if: Three reasons, and the first one is free money. - You are one person doing a small number of jobs a month. Their free plan is one user with a monthly job cap and it costs nothing, permanently. If that describes your round, take it, and come back when it does not. Nothing on this site is worth paying for before you have staff to tell where to go. - Your books are in Xero and you want a live sync. Theirs syncs clients, items, invoices and payments both ways. CleanFlo exports a CSV formatted for a bookkeeper and has no live sync to anything, which is better known now than in week three. - Cleaning is not the whole business. If half your week is jet washing, gutter clearance or handyman work, a product built for trades generally covers all of it, and this one is built for one trade on purpose. #### The axis is jobs, not seats The usual sentence about software for cleaning companies is that it charges per seat. ServiceM8 does not: its paid bands carry unlimited users and are priced on how many jobs you create in a month, and the free plan is one user with a job cap on top. That matters because the two axes fail in opposite directions. A per-seat product punishes hiring. A per-job product punishes winning work, which is the other thing a growing cleaning company does constantly. A round that doubles its visits pays more without a single new cleaner, and a contract that turns one weekly visit into five daily ones can move you a band on its own. CleanFlo counts neither. £19.99 a month for the company, unlimited staff, clients, locations and jobs. That is the whole pricing argument and it is the reason the individual comparisons on this site keep the rows where the other product is cheaper. #### What "built for trades" costs a cleaning company ServiceM8 gives you electronic forms and certificates and lets you build whatever the job needs. That is the right answer for a product serving twenty trades, and it means the cleaning-specific parts are yours to design: what a COSHH record should hold, what a site-specific risk assessment looks like, how a hazard is scored, what a compliance position even is. CleanFlo assumes all of it because there is no other trade it serves. Every hazard carries a likelihood and a severity on a 5×5 and a second pair for the residual risk once the controls are in; those feed a score out of 100 with each deduction named and dated. Incidents log by severity, audits schedule, waste transfer notes carry a carrier registration checked against the regulator, and the cleaner app has checklists, photographs and readings built into the job. If nobody has ever asked you for a risk assessment, that is a paragraph about weight you are not carrying. The first facilities manager who asks changes which paragraph it is. #### Where this lands Take their free plan if you are on your own and under their job cap. It is the best free thing in this comparison set and no page that hides it deserves to be believed about anything else. Come to CleanFlo when the job count or the headcount stops fitting: when the band you are on has become a decision, when somebody wants a compliance file rather than a certificate, or when the people holding the phones need it in a language nobody in the office speaks. One flat price, nothing counted, and a trial you can put a real week into. **FAQs** Q: Is CleanFlo a good ServiceM8 alternative for a cleaning company? A: For a UK cleaning business with staff and commercial clients, yes: cleaning is the only trade it serves, the risk assessment is a scored 5×5 feeding a compliance score rather than a form you design, and the price is flat with no cap on jobs. If you are one person under their job cap, their free plan is the better answer today. Q: Does ServiceM8 have a free plan? A: Yes, and it is a product rather than a trial: one user, with a cap on how many jobs you can create in a month. Check the current limits on their own pricing page. The two things to know before building on it are that the single user stops at your first employee, and the job cap is one a growing round reaches without hiring anybody. Q: Can CleanFlo sync with Xero the way ServiceM8 does? A: No. ServiceM8 syncs clients, items, invoices and payments with Xero, QuickBooks Online and MYOB. CleanFlo has no live sync to any accounting package and exports invoices, payments and revenue as CSV for a bookkeeper. If a two-way sync is a requirement, ServiceM8 is the better fit and it is better to know that now. Q: Does ServiceM8 work on Android? A: Their own site says the full-featured app is optimised for iPhone and iPad and that there is a lighter companion app for Android technicians. Check the current position on their site. CleanFlo runs one cleaner app on whatever phone the cleaner already has, offline by default, in 27 languages matched to the device. URL: https://cleanflo.io/compare/cleanflo-vs-servicem8/ --- ### CleanFlo vs Cleenie Cleenie is UK cleaning business software for solo cleaners and small teams: scheduling, customer records with keys and lockbox codes, PDF quotes, team logins, and VAT invoicing as a paid step, all in the browser. Both are built in the UK for UK cleaners, so the usual argument about VAT and BACS does not separate them. What separates them is size. Cleenie is cheaper for a solo cleaner and says so plainly; this page says so too, and then says where the line is. **Comparison** Feature | CleanFlo | Them Built for UK cleaning | Yes, UK only | Yes, UK only Scheduling | Day, week and month; one-off and recurring jobs across sites | List and calendar views, repeat bookings, jobs assigned to team members Keys and access | Every key, fob and card, and who is carrying each one today, plus access codes on the site record | Keys, lockbox codes and access instructions held against each customer Quotes and invoicing | Quotes and VAT invoices with BACS and a payment reference, in the one price | PDF quotes on every band; invoicing on the bands that include it Health & safety / RAMS | A scored 5×5 hazard matrix with residual scoring, incidents, audits and a 0-100 compliance score | Not listed in their features Waste transfer notes | Carrier registration checked against the regulator, retained two years | Not listed in their features Offline working | Offline by default; checklists, photos and times queue and sync on reconnect | Runs in the browser; offline working not published Languages in the cleaner app | 27, matched to the phone | Not published Stock, equipment and vehicles | Chemicals, PPE and equipment, and a vehicle register that chases MOT, tax and insurance dates | Not listed in their features Pricing model | One flat price for the company with everything in it | Bands, split by solo or team and by whether you want invoicing Free trial | 14 days, no card | 14 days CleanFlo suits: - Cleaning businesses with employed staff, where invoicing and team access are not two separate decisions - Anyone bidding for offices, schools or letting agents who gets asked for RAMS and risk assessments - Cleaners working in basements, plant rooms and stairwells where the signal fails - Teams where English is not every cleaner’s first language - Anyone who wants stock, PPE, vehicles and waste paperwork in the same place as the rota Common objections, answered: - Cleenie is cheaper, and both of us are UK products. Both true. On their solo band they cost less than this does and there is no argument to make about VAT or BACS, because they handle those too. The question is not which is cheaper today, it is what you are buying the second cleaner and the first office contract with. Here that costs nothing extra: the price is flat and unlimited, and the compliance side is already in the account doing nothing until it is asked for. - Their invoicing is an optional band, so I only pay for it if I need it. Which is a fair way to price a product for solo cleaners, and it means the decision arrives twice: once when you start invoicing and again when you take somebody on. CleanFlo has one price with everything in it, so there is nothing to upgrade to and no band to notice at the wrong moment. Whether that is better depends on whether you would rather pay less now or decide less later. - Cleenie runs in the browser, with nothing to install. So does this. What is worth asking about either product is what happens when the signal goes, because cleaning happens in basements, plant rooms and back-of-house corridors. CleanFlo’s cleaner app works offline by default: checklists, photographs and start and finish times queue on the phone and sync when the signal returns. Cleenie does not publish offline working. A browser tab with no signal is a blank screen, and the cleaner rings you instead. - My cleaners all speak English. Today. A substantial share of the UK cleaning workforce does not, and the person holding the phone is never the person who chose the software. CleanFlo’s cleaner app ships in 27 languages and follows the phone’s own setting, so nobody has to pick anything. It is not something an owner shops for at ten at night, which is exactly why it is worth pointing at. Buy Cleenie instead if: One reason, and it is the strongest one on this page. - You clean on your own and you invoice somewhere else. Their solo band without invoicing is the cheapest product named anywhere on this site, ours included, and it carries the calendar, the customer list, the keys and lockbox codes and PDF quotes. If that is your whole business, buy it and spend the difference on advertising. - You want the smallest possible thing. Everything CleanFlo adds after that, the compliance file, the waste notes, the stock and PPE, the vehicle register, the offline app in 27 languages, is weight if nobody has asked you for any of it, and nobody asks a solo domestic cleaner for a risk assessment until the day somebody does. #### Two UK products, so the usual argument does not apply Most pages in this file spend their first section on the same thing: VAT at 20% or off entirely, BACS with a payment reference, UK practice rather than a regional setting. Against Cleenie that argument is void. They are a UK company building for UK cleaners, they invoice with VAT, and they say so on their own homepage. What is left is genuinely about size and about what a cleaning business needs on the day somebody asks it for something. That is a narrower argument than this site usually makes and it is the honest one here. #### Where the line actually falls Three things arrive at roughly the same point in a cleaning business, and they arrive together more often than anyone expects. The first employee you have to tell where to go and give a login to. The first client, usually an office, a letting agent or a block of flats, who asks for a risk assessment and proof of insurance before they will sign. And the first cleaner who stands in a basement with no signal and rings you because the app has gone blank. Before those, Cleenie is a smaller, cheaper, well-shaped tool and this page will not pretend otherwise. After them, the differences stop being features on a list: a compliance file that produces evidence for a tender, waste transfer notes with the carrier checked against the regulator, stock and PPE, a vehicle register that chases its own MOT dates, and a cleaner app that works with no signal in the language the cleaner reads. The flat price is what stops the decision having to be made twice. Hiring is not a purchasing decision here, and neither is starting to invoice. #### Where this lands If you are a solo cleaner who invoices elsewhere, buy theirs. It is cheaper, it is UK-built, and the keys and lockbox codes are the part you will actually use every day. If you have staff, or you are bidding for work that comes with paperwork, or your cleaners work where the signal fails, this is the product built for that, at one flat price with nothing counted. Both trials run 14 days. Put the same awkward week into each and see which one asks you to type the same client name twice. **FAQs** Q: Is CleanFlo a good Cleenie alternative? A: For a cleaning business with staff or commercial clients, yes: RAMS and risk assessments scored on a 5×5, incidents and audits, waste transfer notes, stock and PPE, vehicles, and an offline cleaner app in 27 languages, all inside one flat price with invoicing included. For a solo domestic cleaner who invoices elsewhere, Cleenie is cheaper and this page says so plainly. Q: Which is cheaper, CleanFlo or Cleenie? A: Cleenie, on their entry band, and by a clear margin: their solo plan without invoicing is the cheapest product named anywhere on this site. We do not print either of their figures because bands change. What does not change is the shape: theirs splits by whether you are solo or a team and by whether you want invoicing, and CleanFlo is one price with everything in it and no cap on staff, clients or sites. Q: Does Cleenie do RAMS and risk assessments? A: Not that they publish. Their site lists scheduling, customers, keys and lockbox codes, quotes, invoicing and team management, with no health and safety module described. If you are bidding for commercial, school or facilities-management work where site-specific RAMS and COSHH assessments are asked for at tender, that is the gap to check before committing. Q: Do both work offline? A: CleanFlo’s cleaner app works offline by default and syncs when the signal returns, which matters because cleaning happens in basements and plant rooms. Cleenie describes a browser-based app with nothing to install and does not publish offline working. Test it on a real site during both free trials rather than taking either description on trust. Q: Can I move from Cleenie to CleanFlo without retyping everything? A: Yes. A spreadsheet, a CSV, an export from whatever you use now: send it over and we put your clients, sites, services and staff into your account during the 14-day trial, at no charge. What we cannot do for you is the half that is actually yours: the keys, the alarm codes and the access notes against each site. Budget an evening for those. Most businesses run CleanFlo alongside their old system for a fortnight rather than switching in one go. URL: https://cleanflo.io/compare/cleanflo-vs-cleenie/ ## Guides, in full ### How to Start a Cleaning Business in the UK Registration, insurance, pricing, equipment and where the first ten clients actually come from: the practical version, with UK numbers. Cleaning is one of the cheapest businesses in the UK to start and one of the easiest to run unprofitably. This guide covers what you legally must do, what you should do, what you can safely skip, and the numbers that decide whether the business works. #### Decide what kind of cleaning business you are starting This is the decision everything else follows from, and it is the one most people skip. "A cleaning business" is four or five genuinely different businesses with different customers, different cash flow and different equipment. Type | Who pays you | Cash flow | Startup cost Domestic / regular | Households, weekly or fortnightly | Immediate, small, predictable | Low End of tenancy | Tenants and letting agents | Immediate, lumpy, one-off | Low–medium Commercial contract | Businesses on 30–60 day terms | Delayed, large, very predictable | Medium–high Specialist (carpet, oven, jet wash) | Mixed | Immediate, high value per job | Medium Facilities management sub-contract | FM providers | Delayed, contractual | High The honest recommendation for most people starting alone is domestic regular cleaning, adding end of tenancy work as capacity allows. It pays on the day, needs almost no equipment, and every client you win is recurring revenue rather than a job you have to replace next week. Commercial contract cleaning pays better at scale but requires you to fund wages for 30 to 60 days before the client pays. Starting there without capital is the most common way new cleaning businesses fail while fully booked. #### Register the business You have two realistic options in the UK: sole trader or limited company. Sole trader is free, takes ten minutes, and means registering for Self Assessment with HMRC. You and the business are legally the same, so you are personally liable for its debts. For a solo domestic cleaner with public liability insurance, this is usually the right starting point. Limited company costs a small incorporation fee at Companies House, separates your personal assets from the business, and is often required, or at least strongly preferred: by commercial clients and letting agents. It brings more admin: annual accounts, a confirmation statement, corporation tax and payroll if you take a salary. A reasonable path is to start as a sole trader, and incorporate when you either start employing people, start winning commercial work, or reach the point where an accountant tells you the tax position favours it. - Register for Self Assessment with HMRC if you are a sole trader - Or incorporate at Companies House if you are forming a limited company - Open a separate business bank account: mandatory for a limited company, and sanity-preserving either way - Register with the ICO if you hold client names, addresses and access details, which you will - Monitor your rolling 12-month turnover against the VAT registration threshold from day one #### Get insured before your first job Not after your first job. Before. The cost of the cover is trivial next to the cost of one incident, and most clients worth having will ask to see the certificate. - Public liability insurance: covers injury or property damage caused to third parties. Typically £60–£200 a year for a solo cleaner. Commercial clients and letting agents commonly require £2m or £5m of cover. - Employers' liability insurance: legally required in the UK as soon as you employ anyone, including part-time and casual staff, with substantial daily penalties for trading without it. - Treatment risk cover: covers damage to the item you are actually working on. Standard public liability often excludes this, which matters enormously when you have just marked a client's worktop. - Key cover: covers the cost of replacing locks if you lose a client's keys. Frequently excluded as standard and frequently needed. Read what is excluded, not just what is covered. Height restrictions, specific chemicals, and working in occupied commercial premises out of hours are common exclusions that catch cleaning businesses out. #### Work out what to charge before you quote anyone The most common pricing mistake in cleaning is picking a number that sounds reasonable, discovering it is too low eighteen months later, and then having to raise prices across a client base built on the wrong rate. Work backwards instead. Decide the income you want, be honest about how many hours you can actually bill, add your overheads, and solve for the rate. Our hourly rate calculator does exactly this in about a minute. Two adjustments matter more than any other. First, a 40-hour week is not 40 billable hours: most solo cleaners bill 25 to 30 once travel, quoting, buying supplies and admin are counted. Second, if you employ anyone, their true cost is roughly 1.25 to 1.32 times their wage once employer National Insurance, pension and holiday accrual are included. Work type | Typical UK rate 2026 | Notes Regular domestic | £18–£28 per hour | Higher in London and the South East One-off deep clean | £25–£40 per hour | Specialist kit, longer job End of tenancy | £165–£460 fixed | By property size, sold as a fixed price Office / commercial | £16–£26 per hour | Or £1.20–£3.20 per m² per month Carpet cleaning | £30–£60 per room | Equipment-led rate #### Buy the right equipment, and not the rest You need less than the internet suggests. A solo domestic cleaner can start genuinely well-equipped for £300 to £500. - Buy now: a decent vacuum, a caddy, colour-coded microfibre cloths, mop and bucket system, quality glass cleaner, degreaser, bathroom cleaner and a descaler, gloves and eye protection. - Buy soon: a second vacuum so one failure does not cancel a day of work, a steam cleaner, an extendable duster and a small stepladder. - Hire before you buy: carpet extraction machines, scrubber-driers, jet washers. If you hire the same machine more than twice a month, buy it. - Skip for now: a van, branded uniforms, vehicle wraps and premises. All good at month six. None of them win you a first client. Colour-coded cloths are not a nicety. Red for washrooms, blue for general surfaces, green for kitchens, yellow for glass and infrequent-touch surfaces is the standard UK system, and commercial clients will ask about it. #### Where the first ten clients actually come from Not from a website. A new cleaning business ranks nowhere for months, and paid search for cleaning terms is expensive. The first ten clients come from proximity and proof. - Google Business Profile. Free, and the single highest-return thing you can do. Local map results drive most domestic cleaning enquiries. Complete every field and get reviews from your first clients immediately. - Local Facebook groups. Community and "recommendations" groups in your target postcodes convert extremely well for domestic cleaning. Answer requests properly rather than posting adverts. - Letting agents. Walk into every independent letting agent within ten miles with a price list and your insurance certificate. They need reliable end of tenancy cleaners constantly and they will test you with one job. - Existing cleaners with full books. Established local cleaners turn work away every week. A referral arrangement costs you nothing and is the fastest source of pre-qualified clients. - Leaflets, but targeted. Blanket leafleting is close to worthless. Leafleting three streets you already clean on, where your van or car is visibly present weekly, is not. Aim for a tight geographic cluster rather than a scattered round. Ten clients in one postcode is a far better business than twenty spread across a county: travel is unpaid time, and it is the biggest hidden cost in domestic cleaning. #### The numbers that decide whether it works Three figures tell you almost everything about whether a cleaning business is going to succeed, and none of them are turnover. - Billable hours per week. If this is under 20, you do not have a business yet, you have a side income. Track it weekly. - Travel time as a share of paid time. Above 20% and your effective rate is collapsing regardless of what you charge. Fix it with geography, not price. - Annual client churn. Domestic cleaning runs at 25–40%. If you are above 45%, something operational is wrong: usually inconsistency of cleaner or missed visits, and no amount of new client acquisition will outrun it. Our client lifetime value calculator shows why the third one matters so much: cutting churn from 40% to 25% increases the value of your entire client base by around 60% without winning a single new client. #### When to hire your first cleaner The trigger is not "I am busy". It is "I am turning work away consistently and I have four to six weeks of wages in the bank". Employing someone changes the business fundamentally. You now need employers' liability insurance, PAYE payroll, an employment contract, holiday tracking and a way of maintaining quality when you are not the one cleaning. Your true cost per hour rises by 25–32% over the wage, which means your pricing has to have room for it. This is why quoting off your own sole-trader rate stops working the moment you have staff. The alternative many take: engaging cleaners as self-employed subcontractors, carries real risk. If you set the hours, supply the equipment, require a uniform and prevent substitution, HMRC is likely to treat that as employment whatever the contract says, and the unpaid PAYE and penalties land on you. Take advice before going down that route. #### The admin that will eat your evenings Every cleaning business owner underestimates this. At ten clients it is an hour a week. At forty clients with two staff it is ten hours a week, and it is all unpaid. The recurring work is: building next week's rota around availability and holidays, telling clients about changes, raising and sending invoices, chasing the ones that have not been paid, tracking who owes what, keeping COSHH and risk assessment documents current, and pulling numbers together for your accountant. You can run all of it on a spreadsheet and a shared calendar for a while: plenty do. The point at which that stops working is usually somewhere between fifteen and twenty-five recurring clients, and the symptom is almost always the same: a missed visit that nobody noticed until the client rang. That is the problem CleanFlo exists to solve: jobs, rotas, staff, invoices and compliance in one place, with the cleaning team on a mobile app that works offline. It is £19.99 a month with a 14-day free trial. But the general principle stands regardless of what you use: the admin needs a system before it needs your evenings. **FAQs** Q: How much does it cost to start a cleaning business in the UK? A: A solo domestic cleaner can start for £300–£800 covering insurance, basic equipment and initial marketing. With your own vehicle and full equipment, budget £2,000–£5,000. A small team needs £4,000–£9,000, and commercial contract cleaning £8,000–£20,000 once machinery and working capital are included. Q: Do I need any qualifications to start a cleaning business in the UK? A: No formal qualifications are legally required for general cleaning. You do need appropriate insurance, COSHH assessments for the chemicals your staff use, and enhanced DBS checks if you work in schools or care settings. Industry qualifications such as BICSc training are optional but help significantly when tendering for commercial contracts. Q: Should I be a sole trader or a limited company? A: Start as a sole trader if you are working alone on domestic cleaning. It is free, immediate and simple. Form a limited company when you begin employing staff, start winning commercial contracts, or when your accountant advises the tax position favours it. Many commercial clients and letting agents prefer or require a limited company. Q: How do I get my first cleaning clients? A: A completed Google Business Profile, local Facebook community groups, and walking into independent letting agents with a price list and insurance certificate are the three highest-return actions. Referral arrangements with established local cleaners who are turning work away are the fastest source of pre-qualified clients. A website matters later, not first. Q: Is a cleaning business profitable in the UK? A: Yes, but the margin depends entirely on the model. A sole trader doing the work themselves typically nets 45–60%. A small agency employing cleaners nets 10–18%. Commercial contract cleaning nets 5–12% at much higher volume. The businesses that fail usually quote against payslip wages rather than true employment cost, or ignore unpaid travel time. URL: https://cleanflo.io/guides/how-to-start-a-cleaning-business-uk/ --- ### How to Price Cleaning Jobs (Without Guessing) Hourly or fixed. Per room or per square metre. What to actually charge in 2026, and how to raise prices without losing the round. Every profitable cleaning quote is built the same way: estimate the hours, cost the hours, add margin. This guide covers how to do each step properly, what UK rates look like in 2026, and the four mistakes that quietly destroy margin. #### The only pricing formula you need Strip away every rule of thumb and cleaning pricing reduces to four steps: - 1. Estimate the hours. How long will this genuinely take, including travel and setup? - 2. Cost the hours. Your true cost per delivered hour, not the wage on a payslip. - 3. Add materials. Typically 3–5% of job value for domestic, more if washroom consumables are in scope. - 4. Divide by (1 − your target margin). Not "add 30%": dividing gets you the margin you actually asked for. That last point trips up more cleaning businesses than any other. If your cost is £100 and you add 30%, you charge £130 and make 23% margin, not 30%. Dividing £100 by 0.7 gives £143, which is a genuine 30% margin. Over a year of quotes, that gap is significant. The quote calculator runs this maths for you and shows each line, so you can see which assumption is driving the price. #### What UK cleaning businesses charge in 2026 London and the South East run £3–£6 an hour above these figures for labour-based work. Parts of the North East, Wales and Northern Ireland run below them. If you employ cleaners rather than doing the work yourself, your rate needs to sit £4–£7 an hour above a sole trader rate for the same job. That gap is not profit. It is employer National Insurance, pension, holiday accrual, absence cover and supervision. Service | Typical rate | Unit Regular domestic cleaning | £18–£28 | Per hour One-off deep clean | £25–£40 | Per hour End of tenancy | £165–£460 | Fixed by property size Office / contract cleaning | £16–£26 | Per hour Commercial by area | £1.20–£3.20 | Per m² per month Carpet cleaning | £30–£60 | Per room Oven deep clean | £55–£95 | Per oven Jet washing | £4–£9 | Per m² Window cleaning (domestic) | £15–£35 | Per visit #### Hourly or fixed price? Both are correct in different situations, and using the wrong one is expensive. Situation | Price it | Why Regular domestic round | Fixed per visit | Clients want certainty; you keep the gain as you get faster End of tenancy | Fixed | Competing against fixed quotes; agents need a number Property you have not seen | Banded fixed | Quote a range, confirm on arrival Builders clean / post-renovation | Hourly | Scope genuinely cannot be seen in advance Heavily neglected property | Hourly or day rate | Fixed pricing here is a bet you will lose Commercial contract | Fixed per visit, written spec | The specification protects you, not the rate Fixed pricing rewards efficiency. If better equipment and a tighter routine cut a four-hour job to three, that hour is yours. Hourly pricing quietly punishes you for getting better at your job. The exception is any job where the scope is unknown. Quoting fixed on a property you have not seen, without a band and without written exclusions, is the single most reliable way to lose money in cleaning. #### How to estimate hours you can defend Two methods, depending on the job. Room-based works for domestic. Roughly 15 minutes per bedroom, 21 per bathroom, 32 for a kitchen and 20 per reception room for a regular maintenance clean. Multiply by about 2.2 for a deep clean and 3 for an end of tenancy. Area-based works for commercial. Productivity is measured in square metres per cleaner-hour: roughly 250–350 for open-plan carpeted office, 180–250 for cellular offices, 100 for canteens and just 35–60 for washrooms. - Clutter is the biggest domestic variable: a busy property takes 25–50% longer for identical square metres. Ask about it when quoting. - The first clean takes 1.5–2.5× a regular visit. Quote it separately at your one-off rate, always. - Two cleaners deliver about 1.8× one, not 2×. Plan on the coordination overhead. - Travel is paid time. A two-hour job 25 minutes away is a three-hour job. The time estimator builds this room by room and shows both the cleaner-hours to cost and the on-site duration to schedule. #### The four mistakes that destroy margin - Costing the cleaner at their wage. Employer National Insurance, pension, holiday accrual and absence cover add 25–32% on top. A cleaner on £12.50 costs you around £16 per delivered hour. Quote against that figure: the true cost calculator works it out. - Ignoring travel. Unpaid to the client, very much paid by you. On a scattered domestic round this alone can be 20% of the working day. - Treating VAT as income. Cross the threshold and a £20/hour domestic price becomes £16.67/hour to you overnight unless you can raise prices. Watch your rolling 12-month turnover monthly, not annually. - Absorbing the first clean. A neglected property on its first visit takes double the time. Charging the regular rate for it means the client is unprofitable before the relationship starts. #### What to put in writing on every quote A quote is not a price, it is a scope. Most disputes in cleaning are about what was included, not about the number. - Exactly which rooms and areas are covered - What is explicitly excluded: oven interiors, carpets, exterior windows, inside cupboards - Whether the property must be empty or clear of belongings - How long you expect to be on site, and with how many cleaners - Whether the price is per visit, per month or fixed for the job - Whether VAT is included or will be added - How long the quote is valid for For end of tenancy work, add a re-clean guarantee: 48 to 72 hours is standard, and price 3–5% into every quote to cover it. It is the most common reason a tenant chooses one quote over a cheaper one. #### Raising prices without losing the round Every cleaning business needs to do this roughly annually, and almost every one puts it off. The businesses that handle it well do four things. - Give notice in writing, four to six weeks ahead. A dated email reads as a business decision. A mention on the doorstep reads as an opening offer. - Raise everybody on the same date. Staggering it means having the conversation eleven more times, and clients talk to each other. - Anchor it to something real. National Living Wage, insurance and fuel have all moved. You are not apologising, you are explaining arithmetic. - Expect to lose 5–10% of clients. If nobody leaves, the increase was too small. Losing one client in ten on a 12% rise leaves you better off with more capacity. One practical detail: raise the rate on your existing clients and your quoted rate for new enquiries at the same time. Businesses that only raise new-client pricing end up with a two-tier book that is impossible to manage and unfair to their most loyal customers. **FAQs** Q: How much should I charge for cleaning per hour in the UK? A: In 2026, regular domestic cleaning is typically £18–£28 per hour, deep cleaning £25–£40, and commercial contract cleaning £16–£26. London and the South East sit £3–£6 higher. If you employ cleaners rather than doing the work yourself, add £4–£7 per hour to cover employer National Insurance, pension, holiday and supervision. Q: Should cleaning be priced hourly or as a fixed price? A: Fixed price for regular domestic rounds, end of tenancy and commercial contracts: clients want certainty and you keep the benefit of getting faster. Hourly for builders cleans, heavily neglected properties and anything where the scope genuinely cannot be assessed in advance. For a property you have not seen, quote a band and confirm on arrival. Q: How do I add margin to a cleaning quote correctly? A: Divide your cost by one minus your target margin, do not add a percentage. A £100 cost with a 30% target margin is £100 ÷ 0.7 = £143. Adding 30% gives £130, which is only a 23% margin. Over a year of quotes that difference is substantial. Q: Should I charge more for the first clean? A: Yes, always. An initial clean on a property that has not been professionally cleaned takes 1.5 to 2.5 times as long as the regular visit that follows. Quote it separately at your one-off or deep clean rate, then start the regular schedule at the standard price. Q: How often should a cleaning business raise its prices? A: Annually is the practical rhythm, timed to when your own costs move. Give four to six weeks written notice, raise all clients on the same date, anchor the increase to real cost changes such as wages and insurance, and expect to lose 5–10% of clients. If nobody leaves, the increase was too small. URL: https://cleanflo.io/guides/how-to-price-cleaning-jobs/ --- ### How To Quote A Cleaning Job Pricing and quoting are two different jobs. One works out the number; the other decides whether the client says yes and whether the job stays the size you priced. Pricing tells you what a job should cost. Quoting is what you send, and it decides two separate things: whether they say yes, and whether the job you turn up to is the job you priced. This guide is about the second half. #### Survey before you quote, or say you have not Almost every underpriced cleaning job traces back to a number given before anybody looked at the property. A three-bedroom house is not a unit of work: the same address can be a four-hour clean or a nine-hour one depending on the oven, the limescale and whether the client has a dog. Where you can, survey. Ten minutes walking the property with a notepad will tell you more than any phone call, and it converts better as well, because the client has met you. Where you cannot, be explicit that the figure is an estimate rather than a quote. A quote is a fixed price that binds you once accepted; an estimate is an indication that may change. Using the words interchangeably is the single most common cause of a scope argument later, and the correct word costs nothing. #### The build-up, in the order it has to happen A defensible quote is built rather than guessed, and every line has to be there before the margin is applied. - Hours. From the specification, not the room count. Be honest about the first clean: a property with no regular cleaning almost always needs a deep clean first, and quoting it at regular-clean hours is where the money goes. - Labour cost. Not the wage. The wage plus employer National Insurance, pension, holiday accrual and absence cover, which together typically add 25–35%. - Travel. Time between jobs is generally working time, and fuel and vehicle costs are real. A cheap job forty minutes away is not cheap. - Materials and consumables. Chemicals, cloths, bin liners, machine consumables. - Equipment. Depreciation or hire on anything beyond a vacuum, plus servicing. - Overhead. Insurance, software, phone, accountancy, advertising, your own admin time. It has to be recovered across jobs or it is recovered from nowhere. - Margin. Applied last, on top of the true cost, not hidden inside an hourly rate you picked because a competitor charges it. The quote calculator runs this build-up, the time estimator sanity-checks the hours, and the true cost of a cleaner tool gives you the labour figure that most quotes get wrong. #### The exclusions are worth more than the inclusions Listing what is included reads as a description and protects nothing. Listing what is not included converts an assumption into a conversation before the work rather than an argument during it. Every one of these has been assumed to be in scope by a client at some point: external windows, carpet and upholstery washing, clearance and waste removal, moving heavy furniture, cleaning inside occupied wardrobes and drawers, work above safe reach from the floor, garages, lofts and outbuildings, and consumables like toilet roll and bin liners. Naming them does not make you look unhelpful. It makes you look like somebody who has done this before, which is exactly the impression that wins commercial work. The quote template carries the full list as a starting point. #### What actually converts - Speed. Quoting within 24 hours materially raises your hit rate, because most enquiries go to three or four companies and being first often matters more than being cheapest. - A real name and a real number. A quote from a person converts better than a quote from an inbox. - A scope the client can read. Somebody comparing three quotes will pick the one they understand, and price is only decisive when everything else is identical. - A validity date. Thirty days is standard, protects you against cost rises, and creates a legitimate reason to follow up. - One follow-up. A short message a few days later converts a meaningful share of quotes that would otherwise expire in silence. Most cleaning businesses never send it. - Options rather than one number. Weekly, fortnightly, and a one-off deep clean first. A client choosing between your options is no longer choosing between you and somebody else. #### When not to quote Some enquiries should be declined rather than priced low, and recognising them is worth as much as any pricing technique. Be wary of the client who leads with price before describing the work, the one who wants a fixed quote and will not let you see the property, the one whose previous three cleaners "were all unreliable", and the job whose travel time exceeds its cleaning time. Each of these has a predictable ending. The discipline that matters: never win work on a price you cannot deliver at. An underpriced contract does not become profitable through effort, it just occupies the capacity you needed for a better one, and it is far harder to raise a price than to set it correctly at the start. **FAQs** Q: What is the difference between a cleaning quote and an estimate? A: A quote is a fixed price that becomes binding once the client accepts it, so any overrun is yours. An estimate is an informed indication that may change. Quote what you have surveyed and estimate what you have not, and put the correct word on the document, because the difference decides who absorbs the overrun. Q: How quickly should I send a cleaning quote? A: Within 24 hours where possible. Most cleaning enquiries go to three or four companies, and being first to respond frequently matters more than being cheapest. A same-day quote with a clear scope beats a lower price that arrives on Thursday. Q: Should I quote a fixed price or an hourly rate? A: Domestic clients generally prefer a fixed price for a defined scope because they know what they will pay. Hourly works better where the scope is genuinely open-ended, such as a first deep clean on a neglected property. If you quote hourly, state the estimated hours, or the client will hear an open cheque. Q: How long should a cleaning quote be valid? A: Thirty days is standard for domestic and small commercial work, longer for tenders with extended evaluation periods. An open-ended quote leaves you bound to today's wage costs indefinitely, and a validity date also gives you a natural reason to follow up. Q: Should I show VAT on a cleaning quote? A: State clearly whether the figure includes or excludes VAT, and if you are not VAT registered say the price is not subject to it. Commercial clients normally expect prices excluding VAT since they reclaim it; a domestic client should be shown the price they will actually pay. URL: https://cleanflo.io/guides/how-to-quote-a-cleaning-job/ --- ### How to Win Commercial Cleaning Contracts Where commercial cleaning contracts actually come from, how to price a bid that wins and still pays, and the TUPE trap that catches first-time bidders. Commercial contracts are the difference between a cleaning round and a cleaning company: predictable revenue, larger values and clients who stay for years. They are also won on process rather than on price, which is good news for smaller contractors who prepare properly. #### Where commercial cleaning contracts actually come from Very few are won by cold calling. Most come through four channels, and they need different approaches. Channel | Typical contract size | How to access it Direct approach to local businesses | £3k–£25k/yr | Walk in, ask who handles cleaning, follow up Commercial property agents & landlords | £8k–£60k/yr | Relationship-led, multi-building potential Facilities management sub-contracting | £15k–£150k/yr | Register on FM supplier portals Public sector tenders | £25k–£500k/yr | Contracts Finder, Find a Tender, framework agreements Incumbent failure | Any | The largest single source: be visible when it happens That last row matters more than the others combined. Most commercial cleaning contracts change hands because the incumbent contractor let standards slip, not because a procurement exercise was run. Being the contractor a facilities manager already has the number of, on the week they have had enough, wins more work than any tender portal. Practically: introduce yourself to facilities managers in your area before there is a vacancy, and stay in occasional contact. It is a two-year sales cycle with a very high conversion rate at the end of it. #### Qualifying a contract before you spend time on it Bid writing is expensive in hours. Before starting, check five things. - Can you actually mobilise it? A contract needing six cleaners across three sites from a standing start will damage your existing work if you get it. - What are the payment terms? 60-day terms on a £60k contract means funding roughly £10,000 of wages before the first payment arrives. - Is TUPE in play? If there is an incumbent, you will likely inherit their staff on their existing terms. Request the employee liability information before pricing anything. - Who is the incumbent and why are they leaving? If the answer is "price", you are being invited to lose money. If it is "service", you have a genuine opportunity. - What is the evaluation split? A 90% price / 10% quality tender is a race to the bottom. A 60/40 split is winnable on merit. #### Pricing the bid Two sanity checks before you submit. If labour is under 55% of contract value, you have under-resourced the specification and will fail at audit within six months. If it is over 70%, there is nothing left to fund management and margin. Then check the resulting rate per square metre per month. For a standard office specification, £1.20 to £3.20 per m² per month is the normal UK band, roughly £0.07 to £0.22 per m² per visit. Outside it, your productivity assumption is probably wrong. The tender calculator builds all of this and flags both checks automatically. Cost line | Share of contract value | Notes Direct labour + on-costs | 55–70% | The dominant cost in every cleaning contract Materials and consumables | 3–6% | Higher if washroom supplies are in scope Equipment and machinery | 2–5% | Depreciation, servicing, transport Supervision | 4–8% | On-site supervisor hours Management and overhead | 8–14% | Area management, admin, insurance, compliance Net margin | 5–12% | What you keep #### What procurement teams actually score Price typically carries 40–60% of the evaluation. The rest is where contracts are genuinely won and lost, and where a well-prepared small contractor can beat a national one. - Mobilisation plan. Week by week, with named roles, TUPE consultation dates and a go-live date. Vague mobilisation answers lose more points than a slightly higher price. - Compliance evidence. COSHH assessments, RAMS, method statements, training records, insurance certificates, ICO registration. Attach them. Do not promise to produce them. - Named supervision. Procurement teams have been burned by contractors who win on price then vanish. A named supervisor with stated on-site hours is worth real marks. - KPIs and reporting. What you measure, how often, and what the client sees. If you can demonstrate live audit scores and a compliance dashboard, show a screenshot. - Social value. Real Living Wage commitment, local employment, training and progression. Increasingly weighted, especially on public sector work. - Business continuity. What happens when a cleaner calls in sick at 5am. A specific answer here scores; "we have cover arrangements" does not. #### TUPE: the thing that catches first-time bidders Where an incumbent contractor already provides the service, TUPE will usually apply when the contract changes hands. The existing cleaners transfer to you on their existing terms and conditions, with continuity of service preserved. You cannot assume you will staff the contract at your standard rates. You are entitled to the employee liability information: pay rates, hours, length of service, contractual entitlements, outstanding grievances and disciplinary matters, and you should request it before you price anything. - Transferring staff on historic above-market rates that your bid cannot support - Long service creating significant redundancy exposure if the contract shrinks - Accrued but untaken holiday that you inherit - Contractual entitlements: enhanced sick pay, bonuses. That your other staff do not have - Live grievances or disciplinary processes that transfer with the individual Price all of it into the bid. A contract won on the assumption of standard rates, then delivered with inherited staff on rates 15% higher, is a contract that loses money every month for its full term. Take employment law advice on your first TUPE transfer. It costs far less than getting it wrong. #### The first 90 days decide whether you keep it Most commercial cleaning contracts that are lost are lost in the first three months, and almost always for the same reasons: the mobilisation slipped, the specification was never agreed in writing, or nobody from the contractor visited the site after week two. - Agree the specification in writing before day one. Room by room, frequency by frequency. Ambiguity always resolves in the client's favour later. - Over-resource weeks one to three. A building being taken over is dirtier than the specification assumes, because the outgoing contractor stopped trying. - Audit weekly at first, then monthly. Document it. A client who receives audit scores does not go looking for a replacement. - Introduce the supervisor in person. A facilities manager who knows a name and a face will ring you before they ring a competitor. - Report on something. Completion rates, audit scores, incidents, consumable usage. The contractors who report are the ones who get renewed. This is the operational reason software matters at contract scale: proving you did the work is as commercially important as doing it. CleanFlo tracks compliance scores, audits and incidents per site, so the evidence exists without anyone having to assemble it the week before a review meeting. **FAQs** Q: How do I find commercial cleaning contracts in the UK? A: The four main channels are direct approaches to local businesses, relationships with commercial property agents and landlords, sub-contracting through facilities management providers, and public sector tenders via Contracts Finder and Find a Tender. In practice the largest single source is incumbent failure: being the contractor a facilities manager already knows when they decide to switch. Q: How do I price a commercial cleaning tender? A: Build it up line by line rather than guessing a rate. Convert the specification and floor area into cleaner-hours using realistic productivity figures, cost those hours at true employed cost, then add materials, machinery, supervision, overhead and margin. Check that labour lands at 55–70% of contract value and that the rate falls within £1.20–£3.20 per m² per month. Q: Does TUPE apply to cleaning contracts? A: Usually yes, where an incumbent contractor is already providing the service. Existing cleaning staff transfer to you on their existing terms with continuity of service. Request the employee liability information early: inherited staff on historic above-market rates are the most common reason a won contract loses money from day one. Q: What margin should I target on a commercial cleaning contract? A: Most UK contract cleaners target 5–12% net margin. Below 5% there is no capacity to absorb absence cover, a machinery failure or a specification dispute. Above about 15% you will typically be outbid unless you are winning on specialism or a genuine service differentiator rather than price. Q: How much does a commercial cleaning contract cost per square metre? A: For a standard five-nights-a-week office specification, £1.20 to £3.20 per square metre per month is the normal UK band, inclusive of labour, materials, supervision and margin: roughly £0.07 to £0.22 per m² per visit, or £16 to £40 per m² per year. Washroom-heavy, clinical and high-specification buildings sit higher; large open warehouse floors sit lower. Always confirm which basis a quoted rate uses. URL: https://cleanflo.io/guides/how-to-get-cleaning-contracts/ --- ### Marketing A Cleaning Business That Actually Works Cleaning is a local, recurring, trust-based purchase. That rules out most of what gets sold as marketing, and it makes two unglamorous channels dominant. Cleaning is bought locally, repeatedly, and on trust, usually from somebody within about fifteen minutes' drive. That single fact rules out most of what gets sold to cleaning businesses as marketing, and it makes two rather unglamorous channels dominant. #### The two channels that dominate, and why Across small UK cleaning businesses, the overwhelming majority of new domestic clients arrive through two routes: local search and word of mouth. Everything else is supplementary. Local search means Google Business Profile far more than a website. Somebody typing "cleaner near me" gets a map with three businesses in it, and being in that box is worth more than any amount of website copy. It is free, most cleaning businesses fill it in badly, and it is the single highest-return hour available to you. Word of mouth is the other, and it is not passive. Most cleaning businesses receive referrals and almost none ask for them, which leaves the largest available source of clients running at a fraction of its capacity. #### Google Business Profile, properly - Claim and verify it. Unverified profiles do not rank. - Set the service area, not a shop address, if clients do not come to you. Cover the towns you actually serve rather than a fifty-mile radius you cannot staff. - List services individually. "End of tenancy cleaning", "office cleaning", "oven cleaning" each match different searches. One entry saying "cleaning" matches fewer. - Photographs, regularly. Real jobs, real before-and-afters, your van, your team. Profiles with current photographs convert visibly better than those with a logo. - Reviews are the whole game. They drive both ranking and the click. Ask every satisfied client, ask at the right moment, and make it one tap. - Reply to every review, including the bad ones, briefly and without arguing. Prospects read the replies more carefully than the reviews. - Keep the hours accurate, including bank holidays. The timing of the review request matters more than the wording. Immediately after a first deep clean, or after you have fixed something that went wrong, are the two moments people actually write one. A month into a routine round, nobody feels anything worth writing down. #### Making referrals a system rather than an accident A referred client arrives pre-trusted, converts at a far higher rate, negotiates less and stays longer. They are the best clients you will ever get and most cleaning businesses do nothing whatsoever to generate them. - Ask at the right moment. After a first deep clean, after a compliment, or after you have put something right. Not at the point of invoicing. - Make the ask specific. "Do you know anyone else on your street who might want a cleaner?" gets an answer. "Recommend us to anyone" does not. - Reward both sides. A month at a discount for the referrer and something for the new client. Pay it after the new client's second clean rather than the first, so the incentive rewards a client who stays. - Ask your cleaners too. They are in twenty houses a week and hear about neighbours moving, letting agents changing and offices unhappy with their contractor. - Neighbours of existing clients are the highest-converting leaflet drop available, because your van is already on that street every week and they have seen it. #### What works after those two Channel | Best for | Realistic view Letting and estate agents | End of tenancy work | One relationship can be worth more than all your advertising. Slow to build, very durable Leaflets on target streets | Domestic rounds | Low response rate, but cheap and geographically precise. Works best around existing clients Local Facebook groups | Domestic | Effective and free. Be a member who helps, not an advert that posts Van livery | Domestic | One cost, years of local visibility, in the streets you already work Office managers direct | Small commercial | Email then a follow-up call. Slow, but contracts are worth years Facilities management firms | Larger commercial | Needs the compliance paperwork ready before you approach Paid search | Urgent one-offs | Expensive per lead and only worth it for high-value jobs like end of tenancy Instagram / TikTok | Brand and recruitment | Better for attracting cleaners than clients. Genuinely useful for that Lead-generation platforms | Filling gaps | Priced on volume, competing against everyone. Treat as filler, not foundation Letting agents deserve particular attention. Agents need reliable end-of-tenancy cleaners constantly and are chronically underserved by contractors who turn up late or fail an inventory check. Being the one who answers the phone and passes the check every time is worth more than any advertising budget, and our guide on winning contracts covers the approach. #### Measure the only two numbers that matter Almost no cleaning business knows what a client costs to acquire or what one is worth, which means marketing decisions get made on impressions rather than money. Ask every new client how they found you, and write it down. That one habit tells you within three months which channels to stop paying for. Then work out what a client is worth. A fortnightly £60 clean at 45% margin with average retention is worth well over £2,000 in gross profit, which means spending £50 to acquire one is obviously sensible and most operators would never consider it. The lifetime value calculator does the arithmetic, and it usually reframes the whole marketing budget. #### What not to spend money on - A big website before a Google Business Profile. The profile brings the calls; the site closes them. Doing it in the other order is the most common wasted spend in this trade. - Wide-radius paid search for routine domestic work. The lead cost rarely clears the margin on a weekly clean. - Directory listings that charge. The free ones are worth doing for consistency of your name, address and phone number. The paid ones rarely return. - Discounting to win. A client won on price leaves on price, and the discount is permanent in practice because raising it later is harder than setting it correctly. - Rebranding. Almost never the problem. A cleaning business is not usually losing work because of its logo. **FAQs** Q: How do I get my first cleaning clients? A: Set up and verify a Google Business Profile with your service area, individual services and real photographs, then tell everybody you know personally. Leaflet the streets you want to work in, join local community Facebook groups as a participant rather than an advertiser, and ask every early client for a review and a referral. The first ten clients are almost always personal rather than paid. Q: Is Google Business Profile worth it for a cleaning business? A: It is the single highest-return marketing action available, and it is free. Most people looking for a cleaner search locally and get a map with three businesses in it; being in that box beats any amount of website copy. Reviews drive both the ranking and the click, so asking for them consistently is the core of the work. Q: Do leaflets still work for cleaning businesses? A: Yes, with a low response rate that is still economic because the cost per leaflet is small and a domestic client is worth thousands over their lifetime. They work best delivered around streets where you already clean, because your van has been seen there and one recognisable name beats an unknown one. Q: How much should a cleaning business spend on marketing? A: Work backwards from client lifetime value rather than picking a percentage. If a domestic client is worth around £2,000 in gross profit over their life, spending £50 to £100 to acquire one is comfortably justified. The practical limit is cash flow rather than the ratio, since acquisition is paid now and the value arrives over years. Q: Should a cleaning business use social media? A: Local Facebook groups genuinely bring domestic clients if you participate rather than advertise. Instagram and TikTok are better for attracting cleaners than clients, which in a trade with this much turnover is a real benefit rather than a consolation. Neither should come before a properly maintained Google Business Profile. URL: https://cleanflo.io/guides/cleaning-business-marketing/ --- ### How To Get Holiday Let Cleaning Clients Changeover work pays well per hour and punishes you for being late. Hosts are not buying cleaning, they are buying the certainty that the property is ready at four. Holiday let owners are not really buying cleaning. They are buying the certainty that the property is guest-ready by four o'clock, because the alternative is a bad review that costs them bookings for a year. Understand that and the whole approach changes. #### Who actually books the cleaner There are three buyers and they behave completely differently, so approaching them the same way wastes most of the effort. - The individual owner with one or two properties. Often lives elsewhere, frequently anxious, wants somebody they can trust without supervising. Found through local Facebook groups, word of mouth and the properties themselves. Loyal once won. - Managing agents and holiday-let agencies. Handle dozens of properties and need reliable changeover cover across a whole portfolio. One relationship can fill a season. Slower to win, needs professionalism and insurance up front, and worth far more than any individual owner. - Portfolio owners with five to twenty units. The sweet spot: enough volume to route efficiently, direct decision-making with no agency in between. Agents are the highest-value target and the most commonly ignored. They are chronically underserved by cleaners who cancel in August, and being the contractor who does not is the entire pitch. #### What they are actually worried about Pitching on price or on cleaning quality misses what keeps a host awake. Address these five and you will convert far above the going rate. - Will it be ready at four? A late changeover means a guest standing outside. This is the fear underneath everything else. - What happens in August? Peak season is when they most need you and when cleaners most often cancel. Say explicitly how you cover it. - Will I be told about damage? Hosts have a limited window to raise a damage claim with a booking platform after checkout. A report that arrives two days late arrives too late to be actionable, and that is real money. - Will the linen be right? Presentation is what gets photographed and reviewed. Beds made badly undo a technically clean property. - Will I have to check? The entire value of a good changeover cleaner is that the host stops driving over to look. Photographs of every finished room, taken in the same order each time, are what buy that. #### How to approach them - Go where the properties are. Holiday lets cluster geographically. A round of eight in one village is profitable; eight spread across a county is not, because changeovers all happen in the same six-hour window on the same days. - Lead with the changeover window, not the price. "We cover 10 till 4 changeovers, including Fridays and Saturdays in August" is the sentence that gets a reply. - Approach agents in writing with the paperwork attached. Insurance certificates, a method statement, and a clear statement of capacity. Agents are assessing risk, not shopping for a bargain. - Offer a trial changeover. Low commitment, and your work will do the arguing. - Ask existing clients. Holiday let owners know other holiday let owners; the local networks are small and tightly connected. - Be findable in season. A host whose cleaner has just let them down in July is searching locally right now and will pay whatever is asked. #### Pricing changeovers so they still pay Changeovers are priced per turnaround, which means every minute of overrun comes straight out of margin. Three things break the price and none of them is cleaning. - Laundry. Decide and price it explicitly: laundering on site ties the cleaner to the property for the machine cycle, which is fine for one changeover and impossible across five. A linen swap service costs more per turnaround and frees you to do more properties in a day. - Late checkouts. They will happen. Agree in advance what occurs when a guest leaves at noon and the next arrives at four, and charge for it rather than absorbing it. - Damage reporting and restocking. Both take real time, neither is cleaning, and both stop being done properly if they are unpaid. Price the changeover itself as a fixed job with a stated inclusion list, then add laundry and consumables as separate lines. Use the time estimator for the clean and add the rest on top rather than hoping it fits. The changeover checklist sets out the full scope, ordered for a four-hour window. #### Surviving the season Holiday let work is brutally seasonal, and the two failure modes are opposite. In August you have more changeovers than cleaners; in February you have cleaners and no work. The businesses that handle it well do two things. They keep a domestic or commercial base that runs year-round, so the team has hours in the winter and does not leave for somebody who can offer them. And they are honest about capacity in summer rather than taking every property and then failing three of them in the same week, which loses the agent relationship permanently. Turning work down in July is difficult and it is usually the right call. A host who is let down does not come back, and agents talk to each other. **FAQs** Q: How much should I charge for a holiday let changeover? A: Changeovers are normally priced as a fixed fee per turnaround rather than hourly, and command a premium over standard domestic cleaning because of the fixed window, the linen handling and the presentation standard. Price the clean from a realistic hours estimate, then add laundry, consumables and damage reporting as separate lines rather than absorbing them. Q: How long does an Airbnb or holiday let changeover take? A: Roughly 1.5 to 2.5 hours for a one-bedroom property with one cleaner including linen, 2.5 to 3.5 for a two-bedroom and 3.5 to 5 for a three-bedroom house. Add time for laundry handling, hot tubs and outdoor space. The usual 10:00 to 16:00 window is comfortable for one property and tight for two. Q: How do I find holiday let owners to clean for? A: Target geographically, since changeovers all happen in the same window and a scattered round cannot be serviced. Approach managing agents and holiday-let agencies in writing with insurance and a method statement attached, join local host Facebook groups, and ask existing holiday let clients for introductions, because owners in a given area tend to know each other. Q: Who is responsible for reporting damage in a holiday let? A: The cleaner is normally the first person to see it and should report before cleaning, with photographs. Hosts have a limited window to raise a damage claim with the booking platform after checkout, so a report that arrives a day late may arrive too late to be actionable. Make it explicit in your terms that reporting is part of the service. Q: How do cleaning businesses cope with the summer peak? A: By keeping a year-round domestic or commercial base so the team has winter hours and does not leave, and by being honest about capacity in peak season. Taking on more properties than you can service and then failing several in one August week loses agent relationships permanently, which costs far more than the work turned down. URL: https://cleanflo.io/guides/how-to-get-holiday-let-cleaning-clients/ --- ### Cleaning Business Insurance: What You Actually Need One of these is a legal requirement with a daily fine attached. Two more decide whether you can bid for commercial work at all. The rest depend on what you actually clean. Cleaning is a trade where somebody else's property, keys and premises are in your hands every day, so the insurance question is not academic. This is what a UK cleaning business actually needs, in the order it matters, and the specific cover gaps that catch people out. #### The one that is a legal requirement Employers' liability insurance is compulsory from the day you employ anyone, and the minimum cover required by law is £5 million. Most policies are written at £10 million as standard because insurers price the difference at very little. The penalty for not holding it is a daily fine for every day you are uninsured, and it is enforced by the Health and Safety Executive rather than by an insurer noticing. You must also be able to produce the certificate when asked. The trap in cleaning is that it applies more widely than "employees" suggests. If you engage cleaners you control (you set the rota, provide the equipment and expect that specific person) you very likely need it even if everyone involved calls the arrangement self-employed. Our guide on employment status covers why that label does not settle it. #### The two that decide whether you can bid Neither of these is legally compulsory, and both are commercially compulsory. A tender document will ask for certificates before it asks for your price. - Public liability. Covers injury to a third party or damage to their property. £1 million is the usual floor, £2 million is common, and £5 million is routinely specified by commercial clients, NHS trusts, schools and local authorities. Check the level your target clients ask for before you buy, because increasing cover mid-tender is slower than it sounds. - Treatment risk, sometimes called damage to property worked upon. This is the one that catches cleaners, and it is the single most important paragraph on this page. Standard public liability often excludes damage to the very thing you were working on. Scratch a client's floor while cleaning it, mark a worktop with the wrong chemical, or ruin a carpet, and a policy without treatment risk cover may decline the claim, because the damage was to the item you were paid to clean. Ask your broker the treatment risk question explicitly and get the answer in writing. It is not always included, it is not always called the same thing, and it is exactly the claim a cleaning business is most likely to make. #### The rest, by what you actually do Cover | Who needs it | What it is for Employers' liability | Anyone with staff | Legally required. £5m minimum, £10m typical Public liability | Everyone | Injury or damage to third parties and their property Treatment risk | Everyone | Damage to the item you were cleaning. Often excluded as standard Loss of keys | Anyone holding client keys | Lock replacement, which on a commercial site can run to thousands Contents and equipment | Anyone with machines | Scrubber-driers, vacuums and stock, in the van and in store Business vehicle | Anyone driving to jobs | Social and commuting cover does not cover business use Professional indemnity | Consultancy or specification work | Advice given, rather than work done Personal accident | Owner-operators | Income if you cannot work. Nobody else covers a sole trader Cyber | Anyone holding client data | Increasingly asked for in larger tenders Loss of keys deserves more attention than it usually gets. A cleaning business commonly holds keys, fobs and alarm codes for dozens of properties, and a lost master key to a commercial building can mean re-keying an entire site. That claim is far larger than most operators expect and is not always included. #### The gaps that catch cleaning businesses out - Business use on the car policy. Social, domestic and pleasure plus commuting does not cover driving between clients. This is the most common uninsured exposure in the trade and it invalidates the whole policy in an accident. - Equipment left in a van overnight. Many policies exclude it, or require a locked and alarmed vehicle. Read the clause before you leave a scrubber-drier in a van on a driveway. - Working at height. Anything above ground level, including internal window cleaning from steps, is commonly restricted to a stated height. Exceeding it can void a claim. - Specialist work. Jet washing, carpet and upholstery cleaning, biohazard and trauma cleaning and using ladders externally are frequently excluded from a general cleaning policy and need adding. - Sub-contractors. If you use them, check whether your policy covers their work and whether you must verify their own cover. Most tenders require you to. - Construction sites. Builders cleans on live sites are excluded from some cleaning policies entirely. Tell your insurer if you do them. #### What commercial clients ask to see, and when For a domestic round, nobody will ever ask. The insurance is there for the day something goes wrong, not to win the work. Commercial is the opposite. Certificates are usually requested at pre-qualification, before your price is even opened, alongside your risk assessment, COSHH assessments and method statement. A contractor who can produce all of it within a day of being asked wins work that a cheaper competitor loses on paperwork alone. Keep the certificates somewhere you can reach them from a phone, and diarise the renewal dates. The most common failure is not being uninsured, it is being unable to find the certificate in the two days a tender allows. **FAQs** Q: Do cleaners legally need insurance in the UK? A: Employers' liability insurance is a legal requirement from the moment you employ anyone, with a minimum of £5 million cover and a daily fine for going without it. Public liability is not legally required but is commercially essential: most commercial clients, letting agents and any tender will require it before they will engage you. Q: How much public liability cover does a cleaning business need? A: £1 million is the usual minimum and £2 million is common for domestic and small commercial work. £5 million is routinely specified by larger commercial clients, schools, NHS trusts and local authorities. Check what your target clients ask for before buying, because upgrading mid-tender takes time you may not have. Q: What is treatment risk cover and do I need it? A: It covers damage to the item you were actually working on, which standard public liability often excludes. If you scratch a floor while cleaning it or ruin a carpet with the wrong chemical, that is precisely the claim a policy without treatment risk cover may decline. For a cleaning business it is close to essential, and you should confirm in writing that you have it. Q: Does my car insurance cover driving to cleaning jobs? A: Not unless it includes business use. Social, domestic and pleasure with commuting does not cover driving between client sites, and an accident on the way to a job could leave you uninsured entirely. Business use is usually a small addition to the premium and is one of the most commonly missed covers in the trade. Q: Do self-employed cleaners need insurance? A: You will not need employers' liability if you genuinely work alone with nobody engaged under your control, but public liability with treatment risk is still strongly advisable, and many agencies and clients require it before they will give you work. Personal accident cover is also worth considering, since nothing else replaces your income if you cannot work. URL: https://cleanflo.io/guides/cleaning-business-insurance-uk/ --- ### Health & Safety for Cleaning Businesses COSHH, RAMS, risk assessments and PPE: what the law actually requires of a UK cleaning business, and the paperwork clients will ask to see. Health and safety in cleaning is not a formality. Cleaners work with hazardous chemicals, at height, on wet floors and often alone in unfamiliar buildings. This guide covers what UK law requires, what commercial clients ask for, and how to keep it manageable. #### What the law actually requires If you employ anyone: including part-time and casual cleaners: UK health and safety law places specific duties on you. The main ones for a cleaning business are these. - Risk assessments. You must assess the risks your work creates. If you have five or more employees, the significant findings must be recorded in writing. - COSHH assessments. The Control of Substances Hazardous to Health Regulations require you to assess and control exposure to hazardous chemicals. Cleaning products are squarely in scope. - A health and safety policy. Required in writing once you have five or more employees. - Employers' liability insurance. Legally required from the moment you employ anyone, with substantial daily penalties for trading without it. - PPE. You must provide suitable personal protective equipment free of charge where the risk assessment requires it, and ensure it is used. - Training and information. Staff must be told about the risks and trained to work safely, in a way they actually understand. - RIDDOR reporting. Certain injuries, diseases and dangerous occurrences must be reported to the HSE. Below five employees the written requirements relax, but the duty to assess and control risk does not. And in practice, any commercial client will ask for documentation regardless of your headcount. #### COSHH: the one that matters most in cleaning Cleaning chemicals are the defining hazard of the trade. Bleach, acidic descalers, oven cleaners containing caustic soda and industrial degreasers all cause serious injuries in UK cleaning every year: most commonly chemical burns, respiratory damage and eye injuries. A COSHH assessment is not a form you fill in once. It is per product and per task: the same product used in a ventilated kitchen and in a windowless internal washroom carries different risk and may need different controls. - Hold a current safety data sheet for every product in use: suppliers must provide these free - Complete a COSHH assessment for each hazardous product and each task it is used for - Record the controls: ventilation, dilution, PPE, contact time, what to do if it goes wrong - Train every cleaner on the products they use, and record that you did - Label every decanted container with the product name and hazard information: unlabelled spray bottles are the most common failure found on audit - Never store chemicals where the public or children can reach them, including in an unlocked vehicle The single most important rule to train into staff: never mix products. Bleach combined with an acidic descaler releases chlorine gas. This injures cleaners in the UK every year and it happens because two products were used on the same surface minutes apart, not because anyone deliberately mixed them in a bucket. #### Risk assessments and RAMS explained Assess per site, not once for the business. The hazards in a ground-floor office are not the hazards in a warehouse with mezzanine access, a kitchen with hot surfaces, or a care home with vulnerable residents. Review a site assessment when anything material changes: new chemicals, new equipment, a layout change, or after any incident. Score | Rating | Action required 1–4 | Low | Monitor; existing controls adequate 5–9 | Medium | Additional controls where reasonably practicable 10–15 | High | Controls required before work proceeds 16–25 | Critical | Do not proceed until risk is reduced #### The hazards that actually injure cleaners Lone working deserves particular attention because it is so normal in cleaning and so rarely assessed. A cleaner alone in an empty commercial building at 6am has no one to raise the alarm. A documented check-in procedure: a message on arrival and departure, and a named person who notices when one does not arrive: costs nothing and is the control an auditor will look for. Hazard | Typical cause | Primary control Slips on wet floors | Mopping without signage | Wet floor signs, clean in sections, dry immediately Chemical burns | Wrong dilution, no gloves | Dosing systems, COSHH training, mandatory PPE Respiratory harm | Poor ventilation, mixed products | Ventilation, never mix, correct dilution Falls from height | Standing on chairs and desks | Provide steps, ban improvised access Manual handling | Carrying machines and stock | Trolleys, two-person lifts, training Lone working | Solo cleaning out of hours | Check-in procedure, mobile contact, escalation Needlestick / sharps | Public premises, healthcare | Sharps training, never reach into bins #### The documents commercial clients will ask for Before awarding a contract, most commercial clients and every facilities management provider will request a compliance pack. Having it ready is a genuine competitive advantage; assembling it in a panic during a tender is not. - Public liability insurance certificate: usually £2m or £5m - Employers' liability insurance certificate - Health and safety policy statement - Site-specific risk assessments and method statements (RAMS) - COSHH assessments and safety data sheets for every product in use - Staff training records, including COSHH and manual handling - Accident and incident log, and your RIDDOR reporting procedure - DBS check evidence where relevant to the site - ICO registration certificate - Waste carrier registration if you remove waste from site #### Keeping it manageable The reason health and safety documentation decays in cleaning businesses is not laziness. It is that it lives in a folder on one laptop, gets updated when a tender forces it, and is invisible to the people on site who actually need it. Three practical habits keep it alive. Store assessments where the cleaner working that site can read them from their phone. Log incidents at the time, in one place, with a severity rating: not in a WhatsApp message that disappears. And schedule audits so they happen on a date rather than when someone remembers. This is what CleanFlo's compliance engine was built to do: site risk assessments on a 5×5 matrix, incident logging by severity, scheduled audits, and a live compliance score visible on the dashboard so a gap is obvious before a client finds it. The important part is not the software though. It is that the documents are current, accessible on site, and someone owns them. **FAQs** Q: Do cleaning businesses need COSHH assessments? A: Yes, if you employ anyone. UK COSHH Regulations require employers to assess and control exposure to hazardous substances, and cleaning chemicals are squarely in scope. You need a safety data sheet for every product, an assessment for each hazardous product and task, staff training, appropriate PPE and correct labelling of all decanted containers. Q: What is RAMS in cleaning? A: RAMS stands for Risk Assessment and Method Statement. The risk assessment identifies hazards and the controls in place; the method statement describes step by step how the work will be carried out safely. Commercial clients and facilities management providers routinely request site-specific RAMS before awarding a cleaning contract. Q: Do I need a written health and safety policy for my cleaning business? A: A written health and safety policy is legally required once you have five or more employees, as is recording the significant findings of your risk assessments. Below that threshold the duty to assess and control risk still applies, and in practice commercial clients will ask for written documentation regardless of your headcount. Q: What PPE do cleaners need? A: It depends on the risk assessment, but at minimum chemical-resistant gloves suited to the products in use, and eye protection wherever there is a splash risk: particularly with oven cleaners, descalers and any decanted concentrate. Respiratory protection may be needed in poorly ventilated areas. Employers must provide required PPE free of charge and ensure it is actually used. Q: How often should cleaning risk assessments be reviewed? A: Review whenever something material changes: new chemicals, new equipment, a change to the site layout or the cleaning specification, and always after an incident. In the absence of changes, an annual review per site is the standard practice, and it is what a commercial client or auditor will expect to see dated. URL: https://cleanflo.io/guides/cleaning-business-health-and-safety/ --- ### How To Hire Cleaners Who Stay Finding cleaners is not usually the hard part. Finding ones still there in three months is, and most of that is decided before they start. Cleaning has one of the highest staff turnover rates of any UK sector, and the losses cluster heavily in the first fortnight. This guide covers where to find people, how to check them properly, what employing them actually costs, and the onboarding that decides whether they stay. #### Where cleaners are actually found Job boards work least well in this trade and are where most operators start. The channels that reliably produce candidates are local and personal. - Referrals from your existing cleaners. Consistently the best source, by a wide margin: the referrer has already screened for reliability because their own reputation is attached. A modest referral bonus paid after the new starter passes probation is the cheapest recruitment you will ever do. - Local Facebook groups for the town rather than for cleaning. Community and jobs groups reach people who are not actively searching a job board. - Existing clients. Householders and office managers often know somebody looking for hours. - Indeed and local classifieds, which produce volume of variable quality. Expect to filter heavily. - School-hours advertising. A substantial part of the available workforce needs work between drop-off and pick-up, and very few employers advertise those hours explicitly. Saying "9:30 to 14:30, term time friendly" in the advert itself will out-perform a higher hourly rate. Write the advert around the two things candidates actually decide on: the hours and the travel. "Part-time cleaner wanted, competitive rates" tells them neither. "Tuesdays and Thursdays, 9:30–14:30, three houses in Truro, all within ten minutes of each other" tells them whether they can take the job. #### What to ask, and what to ignore Experience matters much less than people assume. Cleaning to a standard is teachable in a fortnight; reliability and honesty are not teachable at all. Interview for the second pair. - "How would you get here on a Tuesday?" Travel is the most common reason a new cleaner leaves in month one. Establish it concretely rather than accepting "I'll manage". - "What hours do you actually need?" Somebody who needs 20 hours and takes 12 will leave when they find 20 elsewhere. Better to know now. - "Tell me about a time you couldn't finish a job." You are listening for whether they told anyone. A cleaner who says nothing when something goes wrong is the expensive kind. - "A client says something is missing. What do you do?" Tests judgement and honesty in the situation that actually damages a cleaning business. - A working trial, paid. Two hours alongside an existing cleaner tells you more than any interview. Pay for it: an unpaid trial is both poor practice and, where real work is done, likely unlawful. #### The checks you must do before the first shift Three of these carry real consequences and all three are routinely skipped in small cleaning businesses. - Right to work. Must be completed before employment begins, verified against the original document or via an approved digital check, and the dated evidence retained. Done correctly it gives you a statutory excuse against a civil penalty. Done late, it does not. - Employment status, decided and documented. Calling a cleaner self-employed does not make them so, and the liability for getting it wrong is back tax, National Insurance, holiday pay and potentially minimum wage. See the status guide. - Written statement of particulars, issued on or before day one rather than within two months. - DBS where the work requires it. Not automatic, but commonly needed for schools, care settings, healthcare premises and homes where vulnerable people live, and often specified in commercial contracts regardless. - References, actually taken up. Two, and phone them rather than accepting a letter. The onboarding checklist covers all of this as a printable form, including the health and safety induction and training that must also be done before anybody works alone. #### What a cleaner actually costs The hourly wage is roughly two thirds of what employing somebody costs, and quoting from the wage alone is the most common reason a cleaning business is busy and unprofitable. Cost on top of the wage | Roughly | Notes Employer National Insurance | Significant | Above the secondary threshold; check the current rate Pension auto-enrolment | Employer contribution | On qualifying earnings, for eligible staff Holiday pay | ~12.07% | 5.6 weeks statutory, accrued on all hours worked Sickness and absence cover | Variable | Somebody still has to do the round Travel time between jobs | Often overlooked | Paid travel between assignments counts towards minimum wage Training, PPE and equipment | Per head | Front-loaded in the first month Recruitment and induction | Per hire | Repeated in full every time somebody leaves Run your own numbers through the true cost of a cleaner calculator before setting a price. The gap between the wage and the real cost is usually 25–35%, and it is the difference between a job that pays and one that does not. Note the travel point specifically: time spent travelling between assignments during the working day is generally working time, and paying only for time on site can push effective pay below the National Minimum Wage without anybody intending it. #### The first fortnight decides whether they stay Most cleaners who leave in the first month leave for one of four reasons: the work was not what was described, nobody showed them the site, the first pay was wrong, or they could not reach anybody when something went wrong. All four are cheap to fix and none of them is about pay. Accompany every new cleaner on their first visit to each site rather than sending them with a postcode and a key. Call them at the end of week one. Check the first payslip yourself before it goes out. And make it unambiguous who they ring, and that ringing is welcome. The economics justify it easily: replacing a cleaner costs advertising, interviewing, checks, induction, training, the productivity gap while they learn the round, and frequently a client complaint. Our guide on reducing staff turnover covers what moves the number over a longer horizon. **FAQs** Q: How much should I pay a cleaner in the UK? A: Above the National Living Wage as a floor, with commercial and specialist work typically paying more than domestic. Rates vary substantially by region. What matters more than the headline rate is the total cost to you: employer National Insurance, pension, holiday accrual and paid travel time typically add 25–35% on top of the wage, and that is the figure your pricing has to cover. Q: Do I need to DBS check my cleaners? A: Not automatically. It depends on where they work: cleaning in schools, care homes, healthcare settings or private homes where vulnerable people live commonly requires one, and many commercial contracts specify it regardless of the setting. Confirm the client's requirement before the first visit rather than after. Q: Can I hire cleaners as self-employed? A: Only if the arrangement genuinely is self-employment, judged on the facts rather than the label. If you set the rota, provide the equipment, expect that specific person and require them to follow your specification, they are very likely an employee or worker whatever the contract says. Misclassification creates liability for back tax, National Insurance and holiday pay. Q: Do I have to pay cleaners for travel between jobs? A: Time spent travelling between assignments during the working day is generally working time and counts towards National Minimum Wage calculations. Ordinary commuting from home to the first job and back from the last is generally not. Paying only for time on site is a common way businesses fall below minimum wage without intending to. Q: What is the best way to find cleaners? A: Referrals from your existing cleaners, consistently. The referrer screens for reliability because their own standing is attached, and a bonus paid after probation is far cheaper than advertising. After that, local community Facebook groups and adverts that state the actual hours and locations rather than "competitive rates". URL: https://cleanflo.io/guides/how-to-hire-cleaners/ --- ### How to Reduce Cleaning Staff Turnover The reasons a cleaner leaves are rarely a mystery to the cleaner leaving. They are just rarely asked. What actually drives it, and the fixes that work. Cleaning employs 1.51 million people in the UK, about 5% of the workforce, across nearly 79,000 businesses. It is also a trade where losing a cleaner costs more than most owners price in: the round they knew, the client who trusted them, and the weeks it takes to get a replacement to the same standard. This guide is about why people actually leave, and what changes it. #### What losing a cleaner actually costs Nobody publishes a clean turnover figure for UK cleaning specifically, so this guide is not going to invent one. What is measurable is the British Cleaning Council's own 2026 research: the sector is worth close to £72 billion, employs 1.51 million people, and runs through 78,915 businesses, up from 77,535 the year before. A trade that size, that dependent on people turning up, has a real cost baked into every departure. That cost is concrete even without a percentage attached to it. Re-advertising and re-vetting a role. Covering the round yourself, or paying overtime, while you do. A new cleaner learning access notes, alarm codes and a client's particular preferences that the last one already knew. A commercial client who sees a different face every few weeks and starts asking why. #### Why cleaners actually leave Ask people who have left cleaning jobs why, and the answers are rarely about the cleaning. They are almost always about how the work was managed. - A schedule that moves without warning. A shift changed, added or cancelled with little or no notice, especially when it arrives as an afterthought rather than a heads-up. - Travel time that goes unpaid. Two jobs twenty-five minutes apart, with only the on-site time counted, quietly turns a full day into an underpaid one. - Pay that does not reflect the actual job. A heavily soiled property, a house with three dogs, or a job that always runs over, priced and paid the same as an easy one. - No fast way to raise a problem. Out of blue roll, unclear about what a client wants, or dealing with an access issue, with no quick route to tell anyone and get an answer. - Being replaceable. A different site every week, no client who knows their name, and no sense that leaving would actually be noticed. - A complaint handled one-sided. A client's account taken as fact with no chance to give their own, especially when the client was the one who moved the goalposts. #### The legal minimums worth getting right Some of the above is about culture. Some of it is about entitlements that are easy to get wrong by accident, and that an employee tends to notice being got wrong immediately. Entitlement | The rule | Where it bites Paid holiday | 5.6 weeks (28 days) a year for a full-time employee, pro-rata for part-time | Miscalculating pro-rata for someone on irregular hours is the most common dispute Rest breaks | 20 minutes after 6 hours on a single shift, under the Working Time Regulations | Back-to-back bookings with no gap between them is the same problem wearing a different shape Travel between jobs | Counts as working time for National Minimum Wage once the working day has started; home-to-first-job and last-job-to-home do not | Paying only site time while scheduling jobs back to back can put average pay below NMW without anyone intending it Statutory Sick Pay | Payable from the fourth consecutive qualifying day of sickness, once earnings meet the lower limit, at the current statutory weekly rate | Handled ad hoc, or not at all, in businesses without a system that tracks it None of these are optional once someone is an employee rather than genuinely self-employed. Getting them right the first time costs nothing extra over getting them wrong; getting them wrong costs a HMRC or tribunal conversation later, and in the meantime, it reads to the person on the other end of it as the business simply not caring. #### The fixes that actually work - Give the schedule further ahead, and flag changes the moment you know. A cleaner who hears about a cancelled job an hour before it was due to start has just lost paid time they were counting on. Hearing it the evening before is a different experience entirely, even though nothing else about the cancellation changed. - Keep the same cleaner on a client where you can. Familiarity cuts both ways: the cleaner knows the property and the client's preferences without being told twice, and a client who has a cleaner they know is less likely to raise a vague complaint about "the cleaning" rather than a specific, fixable one. - Make swapping a shift a real process, not a favour someone has to beg for. A cleaner who cannot get Saturday off without personally finding and persuading a colleague, then hoping the manager notices, will eventually stop asking and start not showing up instead. - Price the difficult jobs differently, and say so. A property with three dogs, six years of buildup, or a client who always adds "just five more minutes" of extra work is not the same job as the one next door. Pay reflecting that is the difference between a cleaner who avoids that client and one who resents them. - Give a fast, specific way to flag a problem. Out of supplies, an access issue, or something that needs reporting: the businesses that keep staff are the ones where this reaches somebody the same day, not the ones where it waits for the next in-person conversation. #### What this looks like month to month None of the above is a one-off fix. It is a set of habits: the schedule goes out consistently early, holiday requests get a real answer rather than a maybe, and a cleaner who raises a problem sees something change because of it. The businesses that struggle most with turnover are not usually the ones paying the least. They are the ones where nobody can predict next week, and where raising a problem feels like more trouble than it is worth. Both of those are fixable without spending more, which is the part worth taking seriously. **FAQs** Q: Why do cleaners leave a company? A: Most commonly: a schedule that changes without warning, travel time between jobs that goes unpaid, pay that does not reflect a genuinely harder job, no fast way to flag a problem, and feeling replaceable rather than known by a client. Very rarely is it simply about the cleaning itself. Q: Do I have to pay a cleaner for travel time between jobs? A: Yes, once the working day has started. Travel between two jobs counts as working time for National Minimum Wage purposes; only the commute from home to the first job and from the last job back home is excluded. Scheduling jobs back to back while paying only site time can put average pay below NMW without anyone intending it. Q: How much holiday is a part-time cleaner entitled to? A: The statutory minimum is 5.6 weeks a year, pro-rata for part-time hours. Someone working three days a week is entitled to 5.6 × 3 = 16.8 days. Miscalculating pro-rata for irregular hours is the single most common holiday dispute in small cleaning businesses. Q: Does keeping the same cleaner on a client actually reduce turnover? A: Yes, in both directions. The cleaner already knows the property, the access notes and the client's preferences rather than relearning them each visit, and a client who knows their cleaner by name raises specific, fixable complaints rather than vague ones about "the cleaning" in general. Q: What is the single biggest fix for cleaning staff turnover? A: A schedule people can predict, changes communicated the moment you know about them, and a fast, real answer when someone raises a problem. Almost every other driver of turnover in cleaning traces back to one of those three being missing, not to pay alone. URL: https://cleanflo.io/guides/how-to-reduce-cleaning-staff-turnover/ --- ### Are Your Cleaners Employed or Self-Employed? Calling a cleaner self-employed does not make them one. The test is about control and substitution, not the label on the arrangement, and getting it wrong is expensive. A large number of UK cleaning businesses call their cleaners self-employed, and a meaningful share of those arrangements would not survive an HMRC or employment tribunal review. This guide is about the actual test, not the label on the paperwork. #### The label on the arrangement does not decide it Calling someone self-employed, having them invoice monthly, or both sides agreeing to it in writing does not settle the question. HMRC and employment tribunals look at what actually happens day to day, not what the contract calls it. HMRC publishes a genuine tool for this, Check Employment Status for Tax (CEST), and it is a reasonable starting point. It also has known limits on less clear-cut cases, and it does not remove the need to look honestly at how a specific arrangement actually works. #### The tests that actually decide it - Control. Who decides how, when and in what order the work is done. Setting the schedule, dictating the exact method and handing over a checklist to follow all argue employed; someone genuinely free to clean in their own way and order argues self-employed. - Personal service and substitution. Can they send someone else to do the job without your approval? A genuine, unfettered right of substitution is one of the strongest indicators of self-employment; needing it to always be that specific person argues employed. - Mutuality of obligation. Are you obliged to offer work and are they obliged to accept it? An ongoing rota with regular expected hours looks like an obligation on both sides even when nothing is written down. - Equipment and financial risk. Who provides the vacuum, the chemicals and the van? Genuine self-employment usually carries some financial risk and some of the worker’s own equipment. - Integration. Do they wear your uniform, use a branded van, and would a client reasonably assume they work for your company rather than alongside it as an independent contractor? #### Where cleaning businesses most often get it wrong The profile that most often fails a review is specific and common: a cleaner on a fixed weekly rota, using the company’s equipment and chemicals, following a checklist the company wrote, always the same person on the same client’s account, invoicing monthly and called "self-employed" on that basis alone. None of those facts individually is disqualifying. Together, they describe a working relationship that looks like employment regardless of what the arrangement is called, and that is exactly the combination HMRC and tribunals have found against repeatedly. #### A quick honest check Factor | Genuinely self-employed | Looks employed in practice Substitution | Can send someone else, no approval needed | Must always be the same named person Schedule | Sets their own hours and order of jobs | A fixed rota the business sets and changes Equipment | Brings their own kit and chemicals | Uses equipment the business provides Risk | Invoices per job, no guaranteed work | On a regular rota, effectively guaranteed hours Other clients | Genuinely works for other businesses too | Works exclusively for one company One column matching does not settle it either way. This is a balance of factors, weighed together, which is exactly why a genuinely borderline case is worth a proper check rather than a guess. #### What getting it wrong actually costs - Back-dated holiday pay, potentially several years of it, at 5.6 weeks a year - Back-dated National Minimum Wage if hours worked exceeded what was effectively paid - Employer's National Insurance contributions, which HMRC can pursue retrospectively - Pension auto-enrolment obligations backdated to when they should have applied - Penalties on top of the arrears, in cases HMRC treats as a clear misclassification rather than a genuine grey area #### What to do about it Review each arrangement honestly against the factors above rather than against what the contract says. Run CEST as a starting point. For anything genuinely borderline, an accountant or employment status specialist is worth the fee before it becomes an HMRC or tribunal question instead of a planning one. A cleaner correctly engaged as self-employed, with a real right of substitution, their own equipment and other clients, needs nothing changed. The risk sits specifically with arrangements that have drifted into looking like employment while still being called something else. **FAQs** Q: Can I just call my cleaners self-employed to avoid running payroll? A: No. Status is decided by the actual working arrangement, not the label in a contract. HMRC and employment tribunals apply their own tests regardless of what the paperwork says, and a written agreement calling someone self-employed carries little weight if the day-to-day reality looks like employment. Q: What is the CEST tool? A: HMRC's own Check Employment Status for Tax tool, a genuine starting point for assessing a working relationship. It does not handle every case well, particularly genuinely borderline ones, and using it does not remove the need to look honestly at control, substitution and risk. Q: What does misclassifying a cleaner as self-employed actually cost? A: Potentially several years of back-dated holiday pay, back National Minimum Wage if applicable, employer National Insurance contributions HMRC can pursue retrospectively, backdated pension auto-enrolment, and penalties on top where HMRC treats it as a clear-cut misclassification. Q: Can a cleaner be self-employed if they only ever work for one company? A: Working exclusively for one business is a warning sign rather than an automatic disqualifier on its own. Combined with a fixed rota, company-provided equipment, and no real right to send a substitute, it is exactly the combination that most often fails a review. Q: Does IR35 apply to a cleaning business? A: Rarely directly. IR35 specifically concerns someone providing services through their own limited company or personal service company. Most individual cleaners are engaged directly rather than through an intermediary, so the more relevant question for most cleaning businesses is general employment status, not IR35 itself. URL: https://cleanflo.io/guides/are-your-cleaners-employed-or-self-employed/ --- ### Choosing Software For A Cleaning Business We sell some. So this is written to be useful even if you buy something else: what to test, what to ignore, and the point at which a spreadsheet stops working. We sell cleaning software, so treat this accordingly. It is written to be useful to somebody who ends up buying something else, because a buying guide that cannot say when we are the wrong answer is not a buying guide. Here is what actually separates these products. #### When a spreadsheet is still the right answer For a solo cleaner with fifteen regular clients, a spreadsheet and a phone calendar genuinely work, cost nothing, and never go down. Anybody telling you otherwise is selling something. The point at which it stops working is reasonably well defined, and it is not about client numbers. It is about the number of people who need to know the same thing. One person holding the schedule in their head is a working system. Three cleaners, a WhatsApp group, a paper rota and a spreadsheet is four versions of the truth, and the cost is not admin time, it is the missed job that nobody knew was unassigned. The honest triggers for buying software: you have staff who need to be told where to go, you are invoicing enough that reconstructing what was done takes an evening, or somebody has started asking you for compliance paperwork. Before any of those, save your money. #### The four categories, and what each is actually for Category | Built for | Where it struggles for cleaning Generic CRM (HubSpot, Zoho, Salesforce) | Sales pipelines and contacts | No concept of a recurring job, a rota or a site. You configure for months Field service platforms (e.g. Jobber) | Many home-service trades | Mature and broad; cleaning specifics like RAMS and per-site specs are configured rather than assumed Workforce and time-clock apps | Shift tracking and comms | Excellent at hours, not a system for quoting, invoicing or clients Cleaning-specific platforms | One trade | Narrower integration ecosystems; smaller companies behind them None of these is the right answer in general, and the category matters less than the fit. A business running cleaning alongside gardening and handyman work is genuinely better served by a broad field-service platform than by anything cleaning-specific, and we would rather say that than have you unhappy with us. Our comparison pages set out where each named product is the better choice. #### The shortlist, product by product Every product a UK cleaning business is realistically choosing between, and the spreadsheet it is choosing against. Every statement below was read off that company’s own site on 6 September 2026 and nothing here is a price, a rating or a customer count: prices change, and a rating is a number somebody else measured. Each entry ends with the sentence that matters most, which is when to buy that one instead of this one. They are grouped by what each was built for rather than ranked, because a rank would be ours and the fit is yours. The comparison table puts the same list on one screen, with the same questions asked of each and the full set of places we are the wrong answer under it. #### Built for cleaning, and built for the UK The shortest list, and the one most UK cleaning companies should start from. A product built for one trade in one country does not need a tax setting, a currency setting or a form you design yourself before it produces an invoice a UK client recognises. - CleanFlo. Ours, so weigh it accordingly. Cleaning is the only trade and the UK is the only country: VAT at 20% or off entirely if you are not registered, BACS with a unique payment reference on every invoice, risk assessments scored on a 5×5 with a residual score feeding a compliance position, waste transfer notes with the carrier checked against the regulator, and a cleaner app that works offline in 27 languages. One flat price for the company with no cap on staff, clients, locations or jobs. Buy this instead if you have staff to tell where to go and any commercial work at all, and you would rather the software bill did not move when you hire. - ProCleanerUK. A UK product for UK cleaning companies, priced in bands by team size with the same features on every band. Their site refused our request on 6 September 2026, from a browser as well as from the command line, so unlike every other entry here this one describes only what their public listing states rather than what we read on their page. Buy this instead if you want one price per headcount band and you have opened their pricing page yourself, which we could not. - Cleenie. UK-built for solo cleaners and small teams, in the browser, with the calendar, the customer list, keys and lockbox codes against each customer, PDF quotes and VAT invoicing. Priced in bands split twice: solo or team, and with invoicing or without. Their entry band is the cheapest product named in this guide. They publish no health and safety module and no offline working. Buy this instead if you clean on your own and invoice somewhere else. It will cost you less than we do and the key codes are the part you will use every day. - Squeegee. UK-built and aimed at the round rather than the rota: jobs grouped into rounds, planned on a map, with optimised route navigation. It can hold a Direct Debit mandate for your customer through GoCardless and charge them when the work is done, or keep a card on file with Stripe, and it does bank reconciliation, a balance sheet and VAT returns to HMRC. Priced per user a month plus VAT across four plans. Their plan features list custom forms rather than a RAMS or COSHH module. Buy this instead if you run a window round or a domestic round and want the collection to happen without you. We hold no mandate, group no rounds and optimise no routes. - GetCleanFlow. The near-name, one letter from ours, sold to solo cleaners, teams and companies internationally from a UK domain. Scheduling, invoicing, quotes, client records, job timers, checklists, photo uploads and team management. Two rates are published: a founder rate capped at a fixed number of sign-ups and locked for life to whoever claims one, and a standard rate behind it, both with a charge for each extra team member. No health and safety, offline working or multi-language app is published. Buy this instead if you are on your own and can still claim the founder rate. #### Built for cleaning, built somewhere else Cleaning-specific products from other markets. The workflows are often excellent and the assumptions underneath them are somebody else’s: sales tax rather than VAT, card rails rather than BACS, and health and safety practice written for a different inspector. - ZenMaid. Built for US residential maid services and mature at it: recurring domestic schedules, dispatch, customer communication, booking forms. Tiered, with the entry plan capping how many appointments you can book in a month and the plans above it lifting that cap. US sales tax and US payment rails throughout. Buy this instead if you run a residential maid service in the United States, or a purely domestic UK round where the invoice format genuinely does not matter to your clients. - Swept. Canadian, built for janitorial and commercial cleaning teams, and strong exactly where a big contract cleaner hurts: inspections, quality scoring, supply usage and job costing, with cleaner checklists translated. It has no client records, no quoting and no invoicing at all, and it is priced on how many locations you clean, in USD, from a minimum number of them. Buy this instead if you are a North American janitorial contractor with many sites and an accounts system you are happy with. - CleanManager. Danish, built for cleaning companies, with a base module covering scheduling, cleaning plans, keys and codes and a client portal, then add-on modules for the time-tracking app, audits, invoice calculation, wage calculation and quote calculation. Priced per user a month by user type in Danish kroner, so an administrator, a supervisor, a cleaner with a login and a client with a login each cost a different amount. Buy this instead if you are a Scandinavian cleaning contractor, or a UK one content to price in kroner and to buy invoicing as a module. #### Built for trades, and cleaning is one of them Field service platforms. These are usually the most mature products on any shortlist, and the cost of that maturity is breadth: cleaning arrives as a configuration project rather than an assumption, and the cleaning-specific paperwork is a form you design. The honest case for one of these is a business that is not only cleaning. If half your week is jet washing, gutters or handyman work, a single-trade product is a liability and one of these is the right answer. - BigChange. UK-built, multi-trade, and centred on the vehicle: live tracking, geofencing, fleet management, with live sync to Xero, Sage, QuickBooks and SAP. Their cleaning page names RAMS and COSHH to cleaning companies and says a cleaning job cannot be started until its risk assessment has been completed, which is a harder line than ours. No rate is published and there is no free trial: the route in is a demo and a quote. Buy this instead if you run a real fleet across several trades, or your contract demands a hard block on starting a job. - Joblogic. UK-built for field service and maintenance contractors, including facilities management: planned maintenance contracts, asset management, engineer tracking, audits, a customer portal and a marketplace of modules. Priced per user a month on the entry plan, with the two plans above it quoted rather than published. Their RAMS module is one of the marketplace add-ons rather than part of the base plan. Buy this instead if you are an FM or maintenance contractor running PPM contracts across sites and assets rather than cleaning rounds. - ServiceM8. Australian, for trades and service businesses, with UK pricing published in GBP. It has a free plan that is a product rather than a trial: one user, with a cap on how many jobs you can create in a month. The paid bands are priced on that same job count and carry unlimited users, and it syncs live with Xero, QuickBooks Online and MYOB. Their full-featured app is optimised for iPhone and iPad, with a lighter companion app for Android. Buy this instead if you are on your own under their job cap, or a live Xero sync is the thing you want most. - Jobber. The most-used product on most of these lists, built for home service trades generally, with mature quoting, scheduling and payments and a large third-party directory. Its tiers each include a number of users and charge a monthly rate for every extra one. In the UK its payments are cards plus Apple Pay and Google Pay, with no bank rail named on their own UK help page. Buy this instead if you run several trades and want the most mature product with the biggest integration list. - Commusoft. UK-built for plumbing, heating, gas, electrical and renewables, with three tiers of per-user licences in contracted, rolling and daily forms so seasonal and subcontract labour can be paid for by the day. Cleaning is not among the trades they name. Buy this instead if you are a heating or electrical contractor with commercial contracts and a fluctuating engineer count. - Tradify. From New Zealand, for trade contractors: electrical, plumbing, gas, HVAC and property maintenance. Priced per user a month across three plans plus a custom one, in USD, with Xero and QuickBooks Online sync. Cleaning is not among the trades they list. Buy this instead if your work is one of the trades it names, in which case it is a well-made product and this guide is not about you. #### Built for the workforce, not for the business The category that causes the most confusion on a shortlist. These are excellent at hours, shifts and reaching everybody, and they are not a system for running a cleaning company: no clients, no quotes, no invoices. A business that buys one usually runs it alongside accounting software and a spreadsheet of clients, which works, and means the schedule and the invoice never know about each other. - Connecteam. Deskless workforce software across many industries: time clock, job scheduling, forms, chat, training and HR, sold as separate hubs. Their small-team plan is free for life under a headcount, which makes it the best free product on this list, and above that line each hub is a flat band covering a first block of users plus a rate for every extra one. Buy this instead if your hard problem is hours, shifts and reaching forty people, and your invoicing already lives somewhere you are happy with. - Deputy. Australian, for shift-based workforces across many industries, with UK pricing published in GBP: rotas, timesheets, time clocking, labour law compliance, leave accruals and payroll integrations, priced per user per month across three plans. It holds no clients, quotes nothing and raises no invoice. Buy this instead if the whole problem is the rota, the timesheet and the wage bill, and somebody else already handles the money. - A spreadsheet and a WhatsApp group. Free, familiar, never down, and what nearly everybody reading this is actually using. It stops working at the point where more than one person needs to know the same thing, and the cost is not admin time, it is the missed visit nobody knew about until the client rang. Buy this instead if you are one person with about fifteen regular clients. Genuinely. #### How this shortlist was checked, and what is missing from it Every entry above was read off that company’s own site on 6 September 2026, from their pricing page wherever they publish one, and each links back to it so you can check whether anything has moved. No figure is quoted on purpose: prices change without notice, there are a lot of them here, and a stale number would be worse than none. Two absences are deliberate. No rating and no review count, because those are numbers somebody else measured. And no rank order, because a ranking would be our opinion of your business dressed up as a fact about the software. One entry is weaker than the rest and says so: ProCleanerUK’s site refused our request that day, so theirs describes only what their public listing states. #### Where CleanFlo is the wrong answer We sell one of the products above, so this is the section that decides whether the rest of the guide is worth anything. Each line names the product to buy instead. - You want a Direct Debit mandate held for you, and the round planned on a map with an optimised route. Squeegee does both. CleanFlo holds no mandate, groups no rounds and optimises no routes. - You want a live two-way sync with Xero or Sage. ServiceM8, Joblogic and Tradify sync. CleanFlo exports invoices, payments and revenue as CSV for a bookkeeper and has no live sync to anything. - The work is not cleaning. Jobber, ServiceM8, Tradify, Commusoft and Joblogic serve trades generally, and a product built for one trade is a liability if half your week is jet washing or gutters. If none of those describes your business, the argument for this one is on the pricing page and set against each named product on the comparison table. Put a real, awkward week into two of them during the free trials and buy the one that asked you to type the client name once. #### What to actually test during a trial Most software trials are spent looking at dashboards. The things that decide whether a tool survives contact with a Tuesday are rarely on the marketing site, and all of these can be tested in an afternoon. - Put one real week in. Not a demo company: your actual rota, with the awkward client and the split shift. Software that handles the tidy case and not the messy one fails in week three. - Move a job because somebody rang in sick. How many taps, and does the cleaner get told automatically? This is the most frequent operation in a cleaning business and it is often the worst-designed screen in the product. - Hand a phone to your least technical cleaner. Say nothing and watch. If they need training to see today's jobs, adoption will fail and you will end up running the software and the WhatsApp group. - Turn the phone to aeroplane mode and try to complete a job. Cleaning happens in basements and plant rooms. A web app with no signal is a blank screen and the cleaner rings you instead. - Raise an invoice from a completed job and check it carries everything a UK VAT invoice legally needs, plus bank details and a payment reference. - Export everything to CSV. Do this on day one, not on the day you leave. If you cannot get your data out easily, do not put a year of job history in. - Import your existing clients. If the only route in is typing 120 clients by hand, the switching cost is an evening you will never spend and the trial will lapse. #### Pricing models matter more than prices Most cleaning software is priced per user, which is standard for the industry and a poor fit for this trade specifically. A cleaning business grows by adding cleaners, each of whom needs a login for a few minutes a day, so the metered cost lands on the cheapest users and lands exactly when you are trying to grow. The practical consequence is that hiring becomes a purchasing decision. Taking a contract that needs four more cleaners should be a margin question, not a licensing one. That does not make per-seat wrong. Below roughly three users a low base fee with no extra seats is usually the cheaper buy, and if you are solo with no plans to hire you should take it. Above that the models cross over. Rather than assert where, the cost calculator runs it against the rate you have actually been quoted. We do not publish competitors' prices, because they change and a stale figure on our site would be worse than none. #### The cleaning-specific things a generic tool will not have - Recurring jobs across multiple sites that rebuild themselves, rather than calendar events somebody copies forward. - A per-site specification, so the checklist for the medical centre differs from the one for the office, and the cleaner sees the right one. - RAMS, COSHH and incident logging held against the site they belong to. This is the one that decides commercial tenders, and almost nothing outside cleaning-specific software has it. - Access notes, alarm codes and key holding as structured data on the property rather than a comment in a chat. - UK VAT and BACS invoicing as the default rather than a tax configuration. - An offline, multilingual cleaner app, reflecting where cleaning is done and who does it. - Waste transfer notes, if you remove controlled waste yourself. How much of this matters depends almost entirely on whether you do commercial work. For a purely domestic round, most of it is weight. For anybody bidding for offices, the compliance half is the difference between winning contracts and not being allowed to tender. #### Questions worth asking any vendor - Can I export everything, and how? A vendor who is vague about this is telling you something. - What happens to my data if I cancel? Deleted, or retained and accessible for a period? - Is there a contract or minimum term? - Where is the data hosted, and are you GDPR compliant? Ask for the sub-processor list. - Do cleaners count as billable users? - What does support actually mean: a person, a chatbot, or a forum? And in which time zone? - How often does it change? A product that has not shipped anything in a year is a product being wound down. **FAQs** Q: What is the best CRM for a cleaning business? A: It depends on the shape of the business rather than a ranking. A generic CRM built for sales pipelines fits cleaning badly because it has no concept of a recurring job, a site or a rota. A broad field-service platform suits a business running several trades. A cleaning-specific platform suits a business where cleaning is all of it, particularly one doing commercial work that requires RAMS and COSHH documentation. Q: Do I need software for a small cleaning business? A: Not necessarily. A solo cleaner with fifteen regular clients is genuinely well served by a spreadsheet and a phone calendar. The point at which it stops working is when other people need to know the same thing: once you have staff to dispatch, invoicing that takes an evening to reconstruct, or clients asking for compliance paperwork. Q: Should cleaning software charge per user? A: It is the standard model and a poor fit for this trade, because cleaning businesses grow by adding cleaners who each use a fraction of what an office administrator does. Below roughly three users a metered plan is usually cheaper; above that a flat plan is, and the gap widens with each hire. Work it out at the headcount you expect in two years rather than today's. Q: What should I test during a cleaning software free trial? A: Put one real week of your actual rota in, move a job as though somebody had rung in sick, hand a phone to your least technical cleaner and watch without helping, put the phone in aeroplane mode and try to complete a job, raise an invoice and check it carries everything a UK VAT invoice needs, and export everything to CSV on day one rather than on the day you leave. Q: Can I import my existing clients into cleaning software? A: Check before committing, because it decides whether you ever actually switch. A CSV import for clients, sites, services and staff turns a migration from an evening of typing into minutes. Most businesses run the old and new systems in parallel for a week or two during the trial rather than switching in one go. URL: https://cleanflo.io/guides/best-software-for-a-cleaning-business/ --- ### How To Grow A Cleaning Business Past Yourself Growth in cleaning is not gradual. It stalls at three specific ceilings, and each one needs a different thing fixed. Cleaning businesses do not grow smoothly. They stall at three fairly predictable ceilings, and at each one the thing that has to change is different. Recognising which ceiling you are at is most of the work. #### Ceiling one: you are the capacity The first ceiling is the calendar. A solo cleaner has perhaps 25 to 30 chargeable hours a week once travel and admin are taken out, and no amount of effort creates a thirty-first. Turnover is capped at your rate times those hours. There are only two ways through, and they are genuinely different businesses. Raise the rate and specialise: end of tenancy, builders cleans and holiday changeovers all pay materially more per hour than regular domestic work, and moving up-market means fewer clients rather than more. Or hire, and accept that you are becoming a manager who sometimes cleans rather than a cleaner with help. Most people try to do both at once and do neither. If you are unsure, raise the rate first: it costs nothing, tests demand, and a business that cannot sustain a rate rise with fifteen clients will not survive employing somebody. #### Ceiling two: the first three hires, where profit usually falls This is where most cleaning businesses get stuck, and the symptom is distinctive: turnover doubles and the money in the bank does not move, or gets worse. The arithmetic explains it. A solo cleaner keeps most of what they charge. Employing somebody at a wage that costs you 25–35% more than the wage itself, on jobs priced when you were doing them yourself, leaves a margin that was never designed to carry a wage. You have converted an hourly income into a business with none of the pricing that a business needs. - Reprice before you hire, not after. Every job must carry the fully loaded cost of the cleaner doing it, plus overhead, plus margin. Run three jobs through the margin calculator and the loss-makers are usually obvious and usually few. - Stop cleaning the rounds yourself as fast as you can afford to. Your time is worth more finding work and fixing problems than doing a house, and a business where the owner is on the rota has no capacity to grow. - Accept that quality drops before it recovers. Nobody cleans a house the way you do in month one. Systems and specifications close that gap; supervising every job personally does not scale. - Build density, not coverage. Eight clients in one town is profitable; eight across a county is not, because travel time is unpaid and unbillable. Turn down the distant job. #### Ceiling three: you become the bottleneck Somewhere around six to ten cleaners, the constraint stops being money or clients and becomes you. Every question routes through one person, every rota change is a phone call, and every quote waits for the evening. The business runs at the speed of the owner's inbox. The fix is unglamorous: write things down and give things away. Job specifications so a cleaner knows the standard without asking. A supervisor who can move a job without you. A quoting process somebody else can follow. Onboarding that does not need you in the room. This is also the point where the informal systems break for good. A WhatsApp group and a paper rota work at three cleaners and actively lose jobs at ten, because there is no single version of the truth and nothing records what was agreed. That is the honest trigger for software rather than the client count. #### Growing the right kind of work Not all growth is worth having, and this is where many cleaning businesses go wrong while doing everything else right. Work type | Margin | Why it matters to growth Regular domestic round | Moderate | Predictable, dense, and the base that funds everything else Commercial contracts | Moderate to good | Recurring, multi-year, but demands compliance paperwork End of tenancy | Good | High rate, unpredictable volume, agent relationships are durable Holiday changeovers | Good | High rate, brutally seasonal, needs a year-round base underneath it Builders cleans | Good | High rate and high compliance overhead; excludes unprepared competitors One-off domestic deep cleans | Variable | Easy to underprice and does not recur The strategically important line is commercial. It is where the ceiling on business size actually lifts, because contracts are recurring, multi-site and worth years rather than months. The barrier is not cleaning skill, it is documentation: risk assessments, COSHH, method statements and insurance produced on request. That barrier is precisely why the work is worth having, because it excludes every competitor who cannot produce them. Our guide on winning contracts covers the approach and the free templates cover the paperwork. #### The numbers to watch while growing - Gross margin per job, not turnover. Turnover growing while margin falls is the standard failure and it is invisible until the cash runs out. - Cost per chargeable hour, fully loaded. Wage plus on-costs plus travel plus overhead. Most owners underestimate this by a third. - Staff turnover. Replacing a cleaner costs recruitment, induction, training, the productivity gap and often a client complaint. At high turnover you are running a recruitment business that also cleans. - Client churn. Cutting annual churn from 40% to 25% raises average client life from 2.5 years to 4, which is a 60% lift in lifetime value across the whole book with no extra marketing. See the lifetime value calculator. - Revenue per cleaner per week. The single cleanest measure of whether the round is dense enough and priced properly. - Days to get paid. Growth consumes cash: you pay wages weekly and get paid on 30 days. This is what kills profitable cleaning businesses. #### The thing that actually kills growing cleaning businesses It is not competition and it is rarely quality. It is cash. Wages go out weekly, commercial clients pay on thirty to sixty days, and every new contract widens that gap before it closes it. A business can be profitable on paper and unable to make payroll in the same month, and taking on a large contract is the most dangerous moment rather than the safest. Three things reduce the risk materially. Invoice the day the work is done rather than at month end. Agree payment terms before starting, in writing, and state a date rather than a duration. And chase on a schedule at seven, fourteen and thirty days rather than when you notice, because most non-payment is a processing failure rather than a refusal. Model the cash before signing anything that needs four new cleaners. The contract that grows you is also the one that can break you, and the difference is usually thirty days. **FAQs** Q: Why is my cleaning business turnover growing but not profit? A: Almost always because jobs were priced when you were doing them yourself and were never repriced to carry a cleaner's fully loaded cost. Wage plus employer National Insurance, pension, holiday accrual and paid travel typically costs 25–35% more than the wage, and a price built around your own labour does not cover it. Run your three biggest jobs through a margin calculator; the loss-makers are usually few and obvious. Q: When should a solo cleaner hire their first employee? A: When you are consistently turning work away at a rate you are happy with, and you have repriced so the work carries a cleaner's full cost plus overhead plus margin. Hiring to fix an income problem caused by underpricing makes it worse. Raising your rate first is the cheaper test: a business that cannot sustain a rate rise with fifteen clients will struggle to carry a wage. Q: How many clients can one cleaner handle? A: Around 25 to 30 chargeable hours a week once travel and admin are removed, which is roughly 12 to 18 regular domestic clients depending on job length and how tightly the round is clustered. Density matters more than the count: eight clients in one town is more profitable than twelve spread across a county, because travel is unpaid. Q: Is commercial cleaning more profitable than domestic? A: Margins are broadly comparable per hour, but commercial contracts are recurring, multi-year and multi-site, which is what actually lifts the ceiling on business size. The barrier is documentation rather than cleaning: risk assessments, COSHH, method statements and insurance produced on request. That barrier is why the work is worth having, since it excludes competitors who cannot produce them. Q: What is the biggest risk when growing a cleaning business? A: Cash flow. Wages go out weekly while commercial clients pay on thirty to sixty days, so every new contract widens the gap before it closes it. A cleaning business can be profitable on paper and unable to make payroll in the same month. Invoice on completion, agree terms in writing before starting, and chase on a fixed schedule rather than when you notice. URL: https://cleanflo.io/guides/how-to-grow-a-cleaning-business/ ## Free tools and calculators, in full ### Pricing & Quoting #### Cleaning Quote Calculator Price a domestic or commercial clean in under a minute. Enter the property details and this calculator gives you a defensible quote in seconds: labour hours, a suggested price, the VAT position and the margin you keep. Built on UK cleaning industry rates for 2026. **Method** 1. Pick the job type: Regular clean, deep clean, end of tenancy, after builders or office and commercial. Each carries its own hours assumption, and the difference between them is bigger than the difference between two properties. 2. Enter the property size: Give the floor area in square metres, or the number of bedrooms and bathrooms for a home. 3. Set the condition and frequency: Neglected properties take longer; weekly contracts justify a lower unit price than one-off jobs. 4. Check the labour hours: The calculator converts area into cleaner-hours. Sanity-check this against a job you have actually done. 5. Add your margin and VAT: Set your target margin and whether you are VAT registered. The quote updates instantly. ##### How cleaning quotes are actually calculated Almost every profitable cleaning quote in the UK is built the same way: estimate the hours, cost the hours, then add margin. Everything else: square metre rates, per-room prices, "£18 an hour" rules of thumb: is a shortcut back to that same sum. The reason quoting feels hard is that the hours estimate is the part people guess at. A 90m² office with hard floors and six desks is a very different job to a 90m² office with carpet, a kitchen and twenty desks, even though the square metre figure is identical. This calculator makes the hours visible so you can adjust them rather than adjusting a mystery price. ##### Typical UK cleaning rates in 2026 These are the ranges most UK cleaning businesses are quoting. Rates are higher in London and the South East, and lower in parts of the North East, Wales and Northern Ireland: treat them as a starting point, not gospel. Job type | Typical charge-out | Common unit Regular domestic cleaning | £18–£28 per hour | Per hour One-off deep clean | £25–£40 per hour | Per hour End of tenancy | £180–£450 per property | Fixed price Office / contract cleaning | £16–£26 per hour | Per hour or per m² Commercial by area | £1.20–£3.20 per m² | Per m² per month Carpet cleaning | £30–£60 per room | Per room ##### The three mistakes that kill margin on a quote - Quoting the visit, not the round trip. Travel between sites, key collection, unloading and restocking are all paid time. A 2-hour clean 25 minutes away is a 3-hour job. - Costing the cleaner at their hourly wage. Employer National Insurance, pension, holiday pay and sick cover add roughly 25–30% on top of gross pay. Quote off the true cost, not the payslip figure. - Forgetting that VAT is not your money. If you cross the VAT threshold mid-contract, a price that felt comfortable at £20/hour becomes £16.67/hour to you overnight unless the contract lets you add VAT. ##### Pricing an after builders clean After builders is the slowest kind of cleaning there is, and quoting it as a deep clean is the most expensive mistake on this page. The preset in the calculator prices it at 3.4 times the hours of a regular clean, or 40 m² per cleaner-hour by floor area, which is slower than an end of tenancy. Those two numbers are not a market survey. They are derived from CleanFlo’s own starter catalogue, where an after builders clean of a one, two and three-bed property is priced at 4, 5 and 6.5 hours against 3.5, 4.5 and 5.5 hours for the end of tenancy clean of the same property: about 14% longer, and both figures here are the end-of-tenancy ones moved by that. Three things are charged separately in that catalogue rather than folded into the price, and they are the three most often given away: fine dust and debris removal at £30, a post-build window and frame clean at £25 to get paint spots and stickers off the glass, and taking a load of builders’ waste away at £35. - Quote a first pass and a second visit, not one clean. Fine dust settles for days after the trades leave. A single clean before snagging is finished is a clean you will be asked to do again for nothing. - Agree in writing that the site is finished. No trades on site, no materials stored, power and water on, and protective film off the windows before you arrive. Every one of those turns a fixed price into an hourly job. - Do not take the waste away casually. Carrying somebody else’s waste is a duty-of-care matter with a transfer note and a registered carrier behind it, not a favour. CleanFlo raises the transfer note and checks the carrier’s registration against the regulator rather than taking it on trust. - Cost the vacuum you actually need. An M-class vacuum is the minimum for construction dust and a domestic machine will blow the fine stuff back into the room. The builders clean checklist is the room-by-room version of this job. ##### Should you quote hourly or fixed price? Fixed price wins on domestic and end of tenancy work. Clients want certainty, and it rewards you for getting faster: if you cut a 4-hour job to 3 hours through better kit and routine, the extra hour is yours. Hourly wins on neglected properties, builders cleans and anything where the scope genuinely cannot be seen in advance. If you must quote fixed on an unknown property, quote a band ("£280–£340 depending on condition on the day") and confirm on arrival. For commercial contracts, price per visit but show the client the specification. What protects your margin over a three-year contract is a written scope, not the rate. **FAQs** Q: How much should I charge for cleaning per hour in the UK? A: Most UK cleaning businesses charge £18–£28 per hour for regular domestic cleaning and £16–£26 per hour for commercial contract cleaning in 2026. Deep cleans and one-off work command £25–£40 per hour. Your floor is your true cleaner cost (wage plus roughly 25–30% for National Insurance, pension and holiday) divided by one minus your target margin. Q: How do I quote a cleaning job I have never seen? A: Ask for the floor area or bedroom and bathroom count, the last time it was professionally cleaned, and whether there are pets, smokers or hard water. Then quote a band rather than a single figure and confirm on arrival. Quoting blind on a fixed price is the single most common way cleaning businesses lose money. Q: Do I charge VAT on cleaning services? A: Only if you are VAT registered. Registration is compulsory once your taxable turnover exceeds the UK VAT threshold in any rolling 12-month period. Cleaning services are standard rated at 20%. If most of your clients are households who cannot reclaim VAT, crossing the threshold is effectively a 20% price rise or a 16.7% pay cut: plan for it before you get there. Q: How many square metres can one cleaner do per hour? A: As a planning figure, a cleaner covers roughly 200–300 m² per hour on open office space, 100–150 m² per hour on a domestic property with a normal amount of clutter, and 50–80 m² per hour on a deep clean or end of tenancy. Washrooms are much slower: budget 15–20 minutes per WC regardless of area. Q: How much should I charge for an after builders clean? A: Price it by the hours rather than by the property, because the variation between two identical houses is enormous once dust and paint are involved. As a starting point, CleanFlo’s own catalogue prices an after builders clean of a one-bed at about 4 hours, a two-bed at 5 and a three-bed or larger at 6.5, roughly 14% longer than the end of tenancy clean of the same property, and it charges dust and debris removal, the post-build window clean and waste removal separately. Quote a first pass and a return visit after snagging rather than one clean, and put in writing that the site must be finished and empty of trades. Q: Should my cleaning quote include materials? A: For domestic work, most UK cleaners include consumables in the hourly rate. It is typically 3–5% of the job value and clients dislike itemised chemicals. For commercial contracts, list consumables separately (washroom supplies especially), because usage varies with headcount and you do not want to absorb it when the client doubles their staff. URL: https://cleanflo.io/tools/cleaning-quote-calculator/ --- #### Cleaning Price Per Square Metre Calculator Commercial cleaning priced properly, by floor area. Commercial cleaning is bought by the square metre and delivered by the hour. This calculator converts between the two so you can quote a per-m² rate that still pays your cleaners properly. **Method** 1. Measure the cleanable area: Use net internal area, not gross. Exclude plant rooms, lift shafts and anything you are not contracted to touch. 2. Set the productivity rate: How many m² one cleaner covers per hour for this specification. Open office is fast; washrooms and kitchens are slow. 3. Choose the visit frequency: Five nights a week, three nights, or daily including weekends. This drives the annual contract value. 4. Enter your true labour cost: Cleaner pay plus employer on-costs, not the headline wage. 5. Read the per-m² rate: The calculator shows the rate per m² per visit, per month and per year: check which basis the tender uses before comparing. ##### What is a normal cleaning rate per square metre in the UK? Commercial cleaning is normally benchmarked per square metre per month, and for a standard five-nights-a-week office contract most UK contractors land between £1.20 and £3.20 per m² per month once labour, materials, management and margin are included. That works out at roughly £0.07 to £0.22 per m² per visit, or £16 to £40 per m² per year. Below the band you are almost certainly under-resourcing the specification; above it you are either in central London, cleaning something specialised, or you will lose the tender. The number moves with the surface mix far more than with the building. A 1,000 m² floor that is 90% open-plan carpet is a fundamentally cheaper job per square metre than a 1,000 m² floor with a canteen, four washroom blocks and a reception atrium. ##### Productivity rates by area type Productivity: square metres cleaned per cleaner-hour: is the number that decides whether a contract makes money. These are the planning figures used across UK contract cleaning. Area type | m² per cleaner-hour | Notes Open-plan office, carpet | 250–350 | Vacuum, bins, spot clean Cellular offices | 180–250 | More doors, more bins Corridors and circulation | 350–500 | Fast if uncluttered Reception and atrium | 150–250 | Glass and high-visibility detail Canteen / kitchen | 80–120 | Grease, tables, floor scrubbing Washrooms | 35–60 | Or budget 15–20 min per WC Warehouse floor | 400–800 | Machine dependent Medical / clinical | 60–120 | Two-stage clean, colour coding ##### Converting between square metres and square feet UK tenders are usually in square metres; American software and some landlord documents use square feet. One square metre is 10.764 square feet. To convert a rate, divide your per-m² price by 10.764, so £1.20 per m² is roughly £0.11 per ft². Watch for gross versus net internal area. Landlord schedules often quote gross, which includes structure and risers you will never clean. Quoting off gross area quietly inflates your hours and makes you uncompetitive. ##### Why per-m² pricing loses money on small sites Per-m² rates assume you can spread fixed costs: travel, setup, supervision, machine transport: across a large area. On a 120 m² shop unit those fixed costs dominate, and a "market rate" of £1.50/m² gives you £180 a month for a job that needs three hours a week. Below roughly 300 m², price the hours and quote a fixed monthly figure. Reserve per-m² pricing for sites where the area genuinely drives the workload. **FAQs** Q: How much is commercial cleaning per square metre in the UK? A: For a standard five-nights-a-week office specification in 2026, typically £1.20–£3.20 per square metre per month, inclusive of labour, materials, supervision and margin. That is roughly £0.07–£0.22 per m² per visit, or £16–£40 per m² per year. Rates rise for washroom-heavy, clinical or high-specification buildings and fall for large open warehouse floors. Always check which basis a quoted rate uses: per visit, per month and per year differ by more than an order of magnitude. Q: How do I convert cleaning price per square foot to per square metre? A: Multiply the per-square-foot price by 10.764. A rate of £0.12 per ft² is £1.29 per m². To go the other way, divide the per-m² rate by 10.764. Q: Should I quote gross or net internal area? A: Always net internal cleanable area. Gross internal area includes stairwells, risers, plant rooms and structural elements that are usually outside the cleaning specification. Quoting off gross area inflates your hour estimate and makes your tender uncompetitive without adding any margin. Q: What productivity rate should I use for offices? A: For open-plan carpeted office space with a standard nightly specification: bins, vacuum, spot clean, wipe surfaces: 250 to 350 m² per cleaner-hour is realistic. Drop to 180–250 for cellular offices and 35–60 for washrooms. Blended across a typical office building you will usually land around 200–260 m² per hour. URL: https://cleanflo.io/tools/cleaning-price-per-square-metre-calculator/ --- #### Cleaning Hourly Rate Calculator What you actually need to charge to hit your target income. Most cleaners set their rate by asking what the person down the road charges. This calculator works the other way round: start from the income you need, subtract the reality of unbillable time and overheads, and see the rate that actually gets you there. **Method** 1. Set your target take-home: The annual profit or salary you want the business to produce. 2. Be honest about billable hours: A 40-hour week is rarely 40 billable hours. Travel, quoting, admin and gaps between jobs are unpaid. 3. Subtract holidays and sickness: You do not work 52 weeks. Five weeks off plus bank holidays leaves about 45 working weeks. 4. Add your overheads: Insurance, vehicle, fuel, chemicals, equipment, phone, software, accountant. 5. Read your break-even and target rates: The calculator shows the rate that covers costs and the rate that hits your income goal. ##### Why "£15 an hour" is not £15 an hour A self-employed cleaner charging £15 an hour and working what feels like a full week rarely ends the year with anything close to £15 × 40 × 52. The gap comes from four places, and all four are predictable. First, billable hours. Between driving to jobs, buying supplies, answering messages, quoting new clients and chasing invoices, most solo cleaners bill 25–30 hours in a 40-hour week. Second, weeks worked: take a fortnight off, add bank holidays and a couple of sick days and you are at 45 weeks, not 52. Third, overheads: insurance, fuel, chemicals and equipment come out before you get paid. Fourth, tax and National Insurance. Run those four adjustments and a £15 headline rate is often £7–£9 an hour of genuine take-home. That is the number worth comparing against a job. ##### What UK cleaners charge in 2026 London and the South East typically sit £3–£6 an hour above these ranges. If you are supplying staff rather than doing the work yourself, your rate has to carry the employed cost of a cleaner plus supervision: usually £4–£7 an hour above a sole trader rate for the same job. Type of work | Typical hourly rate | Who charges it Self-employed domestic cleaner | £15–£22 | Sole trader, own clients Agency domestic cleaning | £20–£28 | Includes agency margin and cover Deep clean / one-off | £25–£40 | Specialist kit and chemicals Commercial contract cleaning | £16–£26 | Priced per visit or per m² End of tenancy | £22–£35 | Usually sold as a fixed price Specialist (carpet, jet wash, oven) | £35–£70 | Equipment-led rates ##### Raising your rate without losing clients - Give notice in writing, 4–6 weeks ahead. A dated letter or email reads as a business decision. A verbal mention on the doorstep reads as negotiable. - Raise everyone at once, on a fixed date. Staggered increases mean you have this conversation eleven more times and clients compare notes. - Anchor to something real. National Living Wage, insurance and fuel all moved. You do not need to apologise for arithmetic. - Expect to lose 5–10%. If nobody leaves, your rate was too low. Losing one client in ten on a 12% increase leaves you better off and with more capacity. **FAQs** Q: What is a good hourly rate for a cleaner in the UK? A: In 2026, self-employed domestic cleaners typically charge £15–£22 per hour, agencies £20–£28, and deep or one-off cleaning £25–£40. London and the South East sit £3–£6 higher. If you employ staff rather than cleaning yourself, add £4–£7 per hour to cover employer National Insurance, pension, holiday pay and supervision. Q: How many billable hours can a cleaner realistically work per week? A: Most solo cleaners bill 25–30 hours in a 40-hour working week. The rest goes on travel between jobs, buying and restocking supplies, quoting, admin and invoicing. Cleaners with tightly clustered rounds and back-to-back bookings reach 32–35, but planning on 38+ is how businesses end up working full weeks for part-time money. Q: Should I charge more for the first clean? A: Yes. A first or initial clean on a property that has not been professionally cleaned takes 1.5 to 2.5 times as long as the regular visit that follows. Quote it separately as an initial deep clean at your one-off rate, then start the regular schedule at the standard rate. Absorbing it into the first regular visit is one of the fastest ways to make a new client unprofitable. Q: How do I work out my break-even hourly rate? A: Add your annual overheads: insurance, vehicle, fuel, chemicals, equipment, phone, software, accountancy, plus the cost of any staff. Divide that total by the number of billable hours you genuinely expect to work in a year. That is the rate at which you make nothing. Everything you charge above it is profit before tax. URL: https://cleanflo.io/tools/cleaning-hourly-rate-calculator/ --- #### End of Tenancy Cleaning Price Calculator Fixed-price move-out cleans that still make money. End of tenancy work is sold as a fixed price and delivered against a checklist a letting agent will inspect. Price it from the hours, not the postcode. This calculator shows both. **Method** 1. Count bedrooms and bathrooms: These drive the base hours more than total floor area does. 2. Set the condition: Well-kept, average, or heavily soiled. Condition can double the hours. 3. Add the extras: Oven deep clean, carpet cleaning, interior windows, appliance pull-out, balcony or garage. 4. Decide furnished or unfurnished: Furnished properties add roughly 20–30% to the time. 5. Check the crew size and duration: The calculator converts total hours into a realistic crew and on-site time so you can book it properly. ##### Typical UK end of tenancy prices in 2026 London and the South East run 15–25% above these figures. Prices normally include oven cleaning and interior windows but exclude carpet steam cleaning, which is usually £25–£40 per room on top. Property | Unfurnished | Furnished | Typical hours Studio | £140–£190 | £165–£220 | 4–5 1 bed flat | £165–£225 | £195–£265 | 5–6.5 2 bed flat / house | £210–£290 | £245–£340 | 6.5–8.5 3 bed house | £265–£370 | £310–£430 | 8.5–11 4 bed house | £330–£460 | £385–£540 | 11–14 5+ bed house | £420–£650 | £490–£760 | 14–20 ##### What the deposit actually depends on Tenants buy end of tenancy cleaning to protect a deposit, which means your real deliverable is passing the letting agent's check-out inspection: not a subjective standard of "clean". That changes how you should price and how you should protect yourself. Three things account for most deposit disputes over cleaning: the oven, limescale in bathrooms, and inside kitchen cupboards and appliances. If your quote excludes any of them, say so in writing on the quote itself, not in a phone call. Offer a re-clean guarantee: typically 48 to 72 hours, and price it in. It costs you a small amount of capacity across the year and it is the single strongest reason a tenant picks you over a cheaper quote. ##### Where end of tenancy jobs lose money - Ovens quoted blind. A neglected oven is a 90–150 minute job with dip tanks and caustic. Quote it as a named extra with a price, never "included". - Properties not fully vacated. Cleaning around boxes doubles the time. Put "property must be empty of all belongings" on the quote and charge a waiting or return fee. - Carpets sold as included. Steam cleaning is a separate machine, separate drying time and separate liability. Always price it per room. - Same-day turnarounds. Agents will ask. Charge for it: 20–30% premium is normal and nobody blinks. **FAQs** Q: How much does end of tenancy cleaning cost in the UK? A: In 2026, typical UK prices are £140–£190 for a studio, £165–£225 for a one-bed flat, £210–£290 for a two-bed, £265–£370 for a three-bed house and £330–£460 for a four-bed, all unfurnished. Furnished properties add roughly 20–30%. London and the South East run 15–25% above these figures. Q: How long does an end of tenancy clean take? A: Budget around 5–6.5 cleaner-hours for a one-bed flat, 6.5–8.5 for a two-bed, 8.5–11 for a three-bed house and 11–14 for a four-bed. A two-person team therefore does a typical three-bed in about four to five hours on site. Heavily soiled properties can take 1.5 to 2 times these figures. Q: Is carpet cleaning included in end of tenancy cleaning? A: Usually not. Standard end of tenancy cleaning includes vacuuming carpets, but professional steam or hot water extraction cleaning is a separate service at roughly £25–£40 per room. Many tenancy agreements require professional carpet cleaning with a receipt, so always ask the tenant to check their agreement and quote it as a clearly named extra. Q: Should I offer an end of tenancy re-clean guarantee? A: Yes: a 48 to 72 hour re-clean guarantee is now standard in the UK market and is the main reason tenants choose one quote over a cheaper one. In practice it is called on for a small share of jobs, usually the oven or bathroom limescale. Price roughly 3–5% into every quote to cover it and state the conditions in writing, including that the property must be empty. URL: https://cleanflo.io/tools/end-of-tenancy-cleaning-price-calculator/ --- #### Window Round Pricing Calculator What the round is worth a cycle, a year, and an hour worked. A window round is not a list of jobs, it is a cycle that has to keep happening. Put the customers you have against the cycle you work and this shows what the round is worth a cycle and a year, how many days it takes to get round it, and what an hour on it turns over. **Method** 1. Set the cycle: Four, six or eight weeks. The cycle decides how many times a year every price on the round is charged, which is where the annual figure comes from. 2. Count the round by property type: Terraced and semi, detached, and flats. Count what is on the book now rather than what you hope to have. 3. Put your own prices in: The calculator opens on the starting prices in CleanFlo’s own services catalogue. Overwrite them with what you actually charge. 4. Add the driving: Minutes between two stops, door to door, including getting the pole off the van. On a tight estate this is two minutes; on a rural round it is fifteen. 5. Read the days a week: If holding the cycle needs more days a week than you work, the round does not fit and will slip in the first bad week of weather. ##### A round is priced per visit and earned per year Every window cleaner knows what they charge for a house. Far fewer can say what the round is worth, because the number that matters is not the price on the door, it is that price multiplied by how many times a year you go back. That is the whole arithmetic here. A terraced house at £18 on a four-week cycle is £234 a year. The same house on an eight-week cycle is £117. Two businesses can charge the identical price per visit and be twice the size of each other. It is also why the cycle is the first question on this page rather than the last. Lengthening a round from four weeks to six is a 33% cut in turnover, and it happens by accident, one slipped week at a time, to businesses that never decided to do it. ##### Where the opening prices come from The calculator opens on CleanFlo’s own Window Cleaning shelf: the starting prices and times a new account is offered in the services catalogue, which you edit before anything is added. They are a starting guide rather than a market survey, and the file they live in says so of itself. They agree with the only range this site publishes for the trade, £15 to £35 a visit for domestic window cleaning depending on property size and frequency. Nothing here is a survey of what your town pays, and the fields exist because the round is priced by the person who drives it. What is being cleaned | Starting price | Starting time Terraced or semi, exterior glass | £18 | 30 min Detached house, exterior glass | £28 | 45 min Flat or apartment, exterior glass | £15 | 25 min Conservatory roof | £35 | 45 min Frames and sills, alongside the glass | £8 | On the visit High-level reach above the ground floor | £15 | On the visit The two extras at the bottom are the ones most often given away. Frames and sills are the difference between a job that looks finished and one that does not, and on a round of sixty they are worth more than a new customer a month. ##### Four weekly, six weekly, eight weekly The cycle is the single biggest lever on a window cleaning business and it is usually set by habit rather than by decision. These are the visits a year each one produces, and what one £18 house is worth on each. Cycle | Visits a year | One £18 house, a year | 60 houses at £18, a year Four weeks | 13 | £234 | £14,040 Six weeks | 8.7 | £156 | £9,360 Eight weeks | 6.5 | £117 | £7,020 Four-weekly is thirteen visits a year rather than twelve, which is the difference between a four-week cycle and a monthly one, and it is worth knowing because most software, this one included, repeats monthly rather than every four weeks. The argument for a longer cycle is that the glass does not need it and the customer will not pay for it. The argument against is that the longer the gap, the more the customer thinks about whether they want the service at all, and the dirtier the first pass is when you get there. ##### The round has to fit in the week The number this calculator gives that most round sheets do not is days a week. It is the hours the cycle takes divided by the hours you work in a day, divided again by the weeks in the cycle. If that comes out above five, the round does not fit, and the arithmetic does not care how organised you are. Leave slack in it deliberately. A four-week cycle worked at five days a week has no room for rain, a broken pole, a funeral or a customer who wants moving. Rounds are lost in the fortnight after a bad spell of weather, when the catching up never quite happens and two cycles quietly become three. The other reason to know the number is hiring. The point at which a second person pays for themselves is not a feeling, it is the day the days-a-week figure passes what one person can work, and that day arrives one customer at a time. ##### What software does about a round, and what it does not A repeat booking in CleanFlo is weekly, fortnightly or monthly, set once, and every visit is written onto the rota the moment you book the first one, for as many visits as you set or until a date you pick. The day’s round appears on the cleaner’s phone with the access notes attached to the property, and it works with no signal, which matters more on a round than on any other kind of cleaning. There is no four-weekly or six-weekly setting, so a four-weekly round is either run as monthly, which is twelve visits a year rather than thirteen, or booked as dated visits. There is no route optimisation either: nothing orders your day by drive time or re-sequences the round when somebody cancels. The window cleaning software page lists all five of the things it does not do, before you buy rather than in week three. What it does do about a slipping cycle is flag the customer who has gone quiet, judged against their own rhythm rather than a fixed number of days, so an eight-weekly customer is not reported as overdue for six weeks of every eight. **FAQs** Q: How much should I charge for window cleaning in the UK? A: Domestic window cleaning generally runs £15 to £35 a visit depending on property size and frequency, and this site opens its calculator on £18 for a terraced or semi, £28 for a detached house and £15 for a flat, which are the starting prices in CleanFlo’s own services catalogue. They are a starting guide rather than a survey of your town. Price the round on what it costs you to get round it, not on what the last cleaner charged. Q: What is a window round worth a year? A: Multiply the price a visit by the visits a year the cycle produces: 13 on a four-week cycle, about 8.7 on six weeks and 6.5 on eight. Sixty terraced houses at £18 on a four-week cycle is £14,040 a year; the same round on eight weeks is £7,020. The cycle is worth more to the business than the price is. Q: How many houses can one window cleaner do in a day? A: On the starting times in CleanFlo’s catalogue, a terraced or semi is 30 minutes and a detached house 45. Add the driving, which is the part most people leave out: at 6 minutes between stops, a 7 hour day is about 11 terraced houses or 8 detached. A tight estate beats a rural round by a third on the same hours. Q: Does CleanFlo support four-weekly window rounds? A: Not as a repeat setting. Repeats are weekly, fortnightly or monthly, so a four-weekly round is either booked as monthly, which gives twelve visits a year rather than thirteen, or entered as dated visits. It is a real limitation on this trade and the window cleaning software page states it rather than leaving you to find it. Q: Should I charge more for the first clean? A: Yes, on any property that has not been cleaned for a while. The first pass on neglected glass takes two or three times as long as the maintenance visit that follows it, and a first clean priced at the round rate is an hour of unpaid work followed by a customer who thinks your price is the higher one. Quote the first clean separately and say so on the doorstep. Q: Do window cleaners charge VAT? A: Only if they are VAT registered. Registration is compulsory once taxable turnover passes the UK VAT threshold in any rolling 12-month period, and window cleaning is standard rated at 20%. Most domestic customers cannot reclaim it, so crossing the threshold on a domestic round is either a 20% price rise or a 16.7% pay cut. Work out which before you get there. URL: https://cleanflo.io/tools/window-round-pricing-calculator/ --- #### Carpet Cleaning Price Calculator Rooms, stairs, sofas and mattresses, priced as one job. Carpet and upholstery work is priced by the piece and lost on the driving. Count the rooms, the stairs and the furniture, add what it takes to get there and set the hoses up, and this gives you the job price, the time it holds and what the hour is really worth. **Method** 1. Count the rooms and the stairs: Rooms of carpet and full staircase runs. A landing is a room if it is carpeted and cleaned; a stair run is one piece however many flights it has. 2. Add the upholstery: Two-seaters, three-seaters, mattresses and rugs. Upholstery is where the margin is, and it is usually asked about once the machine is already in the house. 3. Decide on the protection: Stain protection is applied after the clean, per room, and it is sold on the doorstep rather than on the phone. 4. Put the driving in: The round trip and the time it takes to run the hoses in and out. It is the whole difference between a job that pays and one that does not. 5. Check the rate against your minimum: If the listed work comes to less than your minimum charge, the minimum is what you quote, and the calculator says so. ##### A carpet job is priced by the piece, not by the property Every other kind of cleaning on this site is priced by the property: bedrooms, floor area, condition. Carpet and upholstery is not. It is priced by what is actually being cleaned, because a four-bedroom house with laminate downstairs and one carpeted bedroom is a smaller job than a two-bedroom flat that is carpeted throughout with two sofas in it. That is why this calculator counts pieces. Rooms, staircases, two-seaters, three-seaters, mattresses and rugs, each with its own price and its own time, added into one job. It is also why the quote has to be given after somebody has seen the rooms or been told exactly how many there are. A price given down the phone for "the downstairs" is the classic way to arrive at a job that turns out to be a through-lounge, a hall, a landing and a set of stairs. ##### The prices this calculator opens on These are CleanFlo’s own Carpet & Upholstery shelf: the starting prices and times a new account is offered in the services catalogue, editable before anything is added to it. They are a starting guide rather than a survey of your area, and the file they come from says so of itself. They also sit inside the two ranges this site already publishes for the work: £30 to £60 a room on the quote calculator, and £25 to £40 a room where carpet cleaning is sold as an extra on an end of tenancy. The piece | Starting price | Starting time A room of carpet, hot water extraction | £30 | 40 min A staircase run | £20 | 30 min Whole house, every carpeted room | £90 | 2 hrs Two-seater sofa | £45 | 1 hr Three-seater sofa | £55 | 1 hr 15 Mattress, single or double | £35 | 45 min Rug, collected and returned | £25 | 30 min Stain protection, after the clean | £15 a room | On the visit The whole-house price is worth reading beside the room price rather than instead of it: at £90 it is three rooms, so anything above three rooms is where the bundle earns its place, and anything below it is where quoting room by room does. ##### Three things decide whether a carpet job pays - The driving and the setting up. A single room at £30 is 40 minutes of cleaning and can easily be 40 minutes of everything else: getting there, parking, running the hose through the house, waiting for the machine, packing up. Two jobs in the same postcode on the same morning are worth more than two jobs on opposite sides of town at a higher price. - The minimum charge. Almost every carpet cleaner who lasts has one, because the arithmetic above is unavoidable. Set it at what half a day is worth to you, put it on the website, and stop quoting under it. - The upsell that happens in the house. Stain protection, a sofa, the mattress in the spare room. It is offered to somebody who has just watched their carpet come clean, which is the easiest sale in cleaning, and it carries almost no extra travel. ##### Domestic, letting agent and commercial are three different books Domestic customers book one job, pay on the day and choose you on the strength of a photograph of somebody else’s stairs. The work is one-off, the margin is good, and the whole business problem is being found again next year. Letting agents book against a check-out and want a receipt naming the property, because the tenancy agreement often requires professional carpet cleaning with proof. They pay on account and on their own terms, so the price includes waiting for the money. Commercial contract work is priced by the square metre and is a different job again: it happens at night, it is bought against a specification, and it will be asked for with a risk assessment and a safety data sheet for whatever you are spraying. If most of your book is commercial, the price per square metre calculator is the one to use. ##### What CleanFlo does with this, and what it does not The prices above go into the services catalogue once, and a quote is then built by picking the rooms and the pieces off that list rather than adding them up again on the back of an envelope. The quote converts to an invoice when the customer says yes, with VAT on it only if you are registered. On the job itself the cleaner’s photographs carry a before or after label against the job, which is the evidence a letting agent asks for and the picture a domestic customer shares. The machine goes on the equipment register with its serial number and condition, and the safety data sheet for the chemistry you use sits in the health and safety document vault where a commercial client can be shown it. What there is not is anything carpet-specific. No fibre or stain lookup, no dilution chart per product, and no stock deducted from a bottle when a job is done: the dilution calculator on this site is the nearest thing and it is a page, not a module. Anybody buying software for a fibre database should know that before they start rather than in week three. **FAQs** Q: How much should I charge for carpet cleaning per room in the UK? A: This site publishes two ranges for the work: £30 to £60 a room for carpet cleaning generally, and £25 to £40 a room where it is sold as an extra on an end of tenancy clean. The calculator opens on £30 a room and £20 a staircase, the starting prices in CleanFlo’s own services catalogue. Whatever you settle on, price the driving and the setting up into it rather than pretending the job is only the 40 minutes the machine is running. Q: What should a minimum charge for carpet cleaning be? A: Work it out rather than copying one. Take the time the job really holds, the cleaning plus the round trip plus setting up and packing down, multiply it by the hourly rate you need to earn, and that is the floor for any job at all. This calculator shows the effective rate door to door for exactly that reason: a single room at a full price can still be a poor morning. Q: How long does it take to clean a carpet? A: On the starting times in CleanFlo’s catalogue, a room of carpet is about 40 minutes with hot water extraction, a staircase run 30 minutes, a three-seater sofa an hour and a quarter and a mattress 45 minutes. Add the round trip and the time to run the hoses in and out, which is often as long again on a one-room job. Drying is separate: tell the customer the carpet will be damp for several hours. Q: Should I sell stain protection? A: It is the highest-margin line on the sheet and it is sold to somebody who has just watched their carpet come clean, so yes, if you can do it honestly. CleanFlo’s starter catalogue prices it at £15 a room applied after the clean. Say what it does and what it does not: it buys time to blot a spill, it does not make a carpet spill-proof, and a customer who was told the second thing will not call you back. Q: Do I charge VAT on carpet cleaning? A: Only if you are VAT registered. Cleaning services are standard rated at 20%, and registration is compulsory once taxable turnover passes the UK VAT threshold in any rolling 12-month period. Carpet work sold mostly to households is the case where it hurts most, because a household cannot reclaim it, so crossing the threshold is either a 20% price rise or a 16.7% pay cut. Q: How do I price upholstery cleaning? A: By the piece, the same way as the carpet: a two-seater, a three-seater, an armchair, a mattress, each with its own price and its own time. It is worth pricing generously relative to carpet because it is slower per pound of turnover and it almost always happens on a visit that has already been paid for by the rooms. URL: https://cleanflo.io/tools/carpet-cleaning-price-calculator/ ### Money & Admin #### UK VAT Calculator Add or remove 20% VAT, and see the threshold maths. Add VAT to a quote, strip it back out of a payment you have received, and see what the Flat Rate Scheme would mean for a cleaning business. All at the current 20% standard rate. **Method** 1. Choose a direction: Adding VAT to a net price, or removing VAT from a gross figure you have already been paid. 2. Enter the amount: Type the figure you have. The calculator handles the rest. 3. Read net, VAT and gross: All three are shown so you can copy the right one onto an invoice or into your bookkeeping. 4. Compare the Flat Rate Scheme: See what you would keep under the standard scheme versus the flat rate for cleaning services. ##### The VAT maths, in one line each - Adding VAT: multiply the net price by 1.2. £250 net becomes £300 gross. - Removing VAT: divide the gross figure by 1.2. £300 gross is £250 net and £50 VAT. - Finding the VAT in a gross figure: divide by 6. £300 ÷ 6 = £50. This shortcut only works at 20%. - Never take 20% off a gross figure to find the net. £300 minus 20% is £240, which is wrong by £10. ##### When a cleaning business has to register for VAT Registration becomes compulsory once your VAT-taxable turnover crosses the UK registration threshold in any rolling 12-month period, not your accounting year, any 12 consecutive months. You must also register if you expect to cross it within the next 30 days alone. Cleaning services are standard rated at 20%. There is no special reduced rate for domestic cleaning, and no exemption for sole traders. Check the current threshold on GOV.UK before you act on any figure. It is reviewed at Budgets and changes without much warning. Monitor your rolling 12-month total monthly, not annually. Businesses that only look at year-end accounts routinely discover they crossed the threshold months earlier and owe VAT on invoices they never charged it on. ##### Why VAT registration hurts domestic cleaners more than commercial ones A VAT-registered client: an office, a landlord company, a facilities manager: reclaims the VAT you charge. Your price effectively does not change for them, so crossing the threshold is close to neutral on a commercial round. A household cannot reclaim anything. If you add 20% to a domestic client's bill, they feel every penny. If you absorb it instead, your £20 an hour becomes £16.67 an hour overnight, a 16.7% pay cut across your entire domestic book. This is why so many domestic-heavy cleaning businesses stall just under the threshold. The realistic options are to plan a deliberate jump: grow fast enough that volume covers the hit, or to restructure toward commercial and landlord work where VAT is neutral. ##### The Flat Rate Scheme for cleaning businesses Under the Flat Rate Scheme you still charge clients 20%, but you pay HMRC a lower flat percentage of your gross turnover and generally cannot reclaim VAT on purchases. HMRC publishes a specific rate for general building or construction cleaning and another for other business services: the applicable percentage depends on how your business is categorised, so confirm yours with HMRC or your accountant. The scheme tends to favour labour-heavy cleaning businesses with low input VAT, because you have little to reclaim anyway. It works badly if you are buying vehicles, machinery or large volumes of consumables. Watch the "limited cost business" test. If your spend on relevant goods is very low as a share of turnover, which is common for a cleaning firm whose main cost is wages. You may be pushed onto a higher flat rate that wipes out the benefit. This calculator gives you a comparison to take to your accountant; it is not tax advice. **FAQs** Q: How do I remove VAT from a gross amount? A: Divide the gross figure by 1.2. A £300 gross payment is £250 net plus £50 VAT. To find just the VAT in a gross figure at the 20% rate, divide by 6. Never subtract 20% from the gross amount. That gives the wrong answer. Q: Do cleaning services have VAT in the UK? A: Yes. Cleaning services are standard rated at 20% VAT. There is no reduced rate or exemption for domestic cleaning. You only charge VAT if you are VAT registered, which becomes compulsory once your taxable turnover exceeds the registration threshold in any rolling 12-month period. Q: Should a cleaning business register for VAT voluntarily? A: It can make sense if most of your clients are VAT-registered businesses who reclaim the VAT, because you then recover VAT on your own vehicle, equipment and consumables at no cost to your clients. It rarely makes sense for a domestic-heavy round, where households cannot reclaim and a 20% price rise is a real price rise. Talk to your accountant before registering voluntarily. Q: Is the Flat Rate Scheme worth it for a cleaning company? A: Often yes for labour-heavy cleaning firms with little input VAT to reclaim, and often no once you are buying vehicles, machinery or large volumes of stock. The limited cost business rules can push a wage-dominated cleaning business onto a higher flat percentage that removes the advantage entirely. Use the comparison here as a starting point and confirm your applicable rate with HMRC or your accountant. URL: https://cleanflo.io/tools/vat-calculator/ --- #### Cleaning Profit Margin Calculator See what you keep from every job, contract and hour. Revenue is vanity. This calculator strips a cleaning job back to what you actually keep: after wages, on-costs, materials, travel and your share of overheads. **Method** 1. Enter what you charge: The price the client pays for the job or the monthly contract value, excluding VAT. 2. Enter cleaner hours and pay: Total hours on site including travel, and the hourly wage you pay. 3. Add employer on-costs: National Insurance, pension and holiday pay. Around 25–30% on top of gross wage is typical. 4. Add materials and travel: Chemicals, consumables, mileage and any equipment hire attributable to the job. 5. Apply your overhead share: The percentage of turnover that goes on insurance, admin, software, vehicles and management. ##### What margin should a cleaning business make? Gross margin here means price minus the direct cost of delivering the job: cleaner wages including on-costs, materials and travel. Net margin is what survives after your overheads: insurance, vehicles, office, software, supervision and your own time managing the business. A commercial cleaning contract running at 5–12% net is normal and healthy. The reason contract cleaners chase volume is that the margin percentage is thin but reliable, and overheads scale slowly. Business type | Gross margin | Net margin Sole trader, own labour | 70–85% | 45–60% Small domestic agency | 35–50% | 10–18% Commercial contract cleaning | 25–40% | 5–12% Specialist (carpet, jet wash) | 50–70% | 20–35% Franchise operation | 30–45% | 8–15% ##### The on-cost multiplier nobody applies If you pay a cleaner £12.50 an hour, that job does not cost you £12.50 an hour. Employer National Insurance, auto-enrolment pension contributions, statutory holiday pay accrual, and the cost of covering sickness and no-shows all sit on top. Across UK cleaning businesses the realistic multiplier is 1.25 to 1.32. So £12.50 gross pay is roughly £15.60 to £16.50 of genuine cost per delivered hour, before you have made a penny. Quote against the multiplied figure. Businesses that quote against the payslip figure are usually running 10–15 percentage points below the margin they think they have. ##### Which cleaning work carries the best margin - Recurring domestic rounds: high gross margin, low acquisition cost once established, but capped by how many hours exist in a week. - Specialist services: carpet, oven, jet washing and window cleaning carry equipment-led rates and the best net margins per hour worked. - Multi-site commercial contracts: thin percentage margins but large absolute profit and predictable cash flow. - One-off deep cleans and end of tenancy: strong headline rates, but acquisition cost is paid again every single job. ##### Fixing a low-margin contract The instinct is to cut hours. That usually fails: the specification stays the same, the cleaner rushes, complaints arrive, and you lose the contract in month nine having damaged your reputation. The three levers that actually work are specification, frequency and equipment. Renegotiate the scope so what you are paid for matches what you do. Move a five-night contract to three nights with a deeper spec on each. Or invest in machinery that raises productivity per hour: a scrubber-drier can halve floor time on a large site and pays back inside a year. If none of those are available and the contract sits below your overhead recovery rate, it is not a contract, it is a subsidy. Give notice and put the hours into work that pays. **FAQs** Q: What is a good profit margin for a cleaning business? A: A sole trader doing the work themselves typically nets 45–60%. A small domestic agency employing cleaners nets 10–18%. Commercial contract cleaning usually nets 5–12% but at much higher volumes. Specialist services like carpet cleaning and jet washing sit at 20–35% because the rates are equipment-led rather than labour-led. Q: How much does it really cost to employ a cleaner per hour? A: Multiply the gross hourly wage by roughly 1.25 to 1.32. That covers employer National Insurance, auto-enrolment pension contributions, statutory holiday pay accrual, and cover for sickness and no-shows. A cleaner on £12.50 an hour costs you around £15.60–£16.50 per delivered hour before overheads. Q: Why is my cleaning business turning over well but making no money? A: The three usual causes are quoting against payslip wages instead of true employment cost, unpaid travel time between jobs, and overheads that grew with headcount but were never added back into pricing. Run three of your biggest contracts through a margin calculation with on-costs and travel included: the loss-makers are usually obvious and usually a small number of jobs. Q: Should I drop a cleaning contract that has low margin? A: Only after you have tried renegotiating specification, frequency or equipment. A contract making a thin but positive contribution to overheads is still worth keeping if you have spare capacity. A contract that does not cover its own direct costs plus a share of overheads is losing you money every visit, and the hours are worth more elsewhere. URL: https://cleanflo.io/tools/cleaning-profit-margin-calculator/ --- #### Free Cleaning Invoice Generator A compliant UK cleaning invoice you can print or save as PDF. Fill in the fields, add your line items, and download a clean, professional invoice as a PDF. VAT-ready, BACS-ready, and everything stays in your browser. Nothing is uploaded or stored. **Method** 1. Add your business details: Trading name, address, contact email and VAT number if you are registered. 2. Add the client: Their name and billing address. For commercial clients use the registered company name. 3. Set the invoice number and dates: Invoice numbers must be sequential and unique. Set an issue date and payment terms. 4. Add your line items: Describe each service, quantity and unit price. Be specific: "Weekly office clean, 4 visits, March 2026" beats "Cleaning". 5. Add payment details and download: Enter your BACS sort code and account number, then download the PDF or print it. ##### What a UK cleaning invoice must contain A non-VAT invoice needs relatively little: your business name and address, the client's name and address, a unique sequential invoice number, the date, a clear description of what was supplied, and the amount due. A VAT invoice needs more. HMRC requires your VAT registration number, the tax point (supply date), the net amount per line, the VAT rate applied, the total VAT charged, and the gross total. Getting any of these wrong can invalidate your client's ability to reclaim, which is how invoicing disputes start. - Unique, sequential invoice number: gaps and duplicates are an audit flag - Your trading name, address and contact details - Client name and billing address - Invoice date and supply date - Clear line-item description of the cleaning services provided - Net amount, VAT rate and VAT amount if registered - Total due and payment terms - BACS sort code, account number and a payment reference ##### Getting cleaning invoices paid faster - Invoice the day the job completes. Every day between the work and the invoice is a day added to your payment cycle for free. - Put a unique payment reference on it. Unreferenced BACS payments are the main cause of "we paid that" disputes and take hours to reconcile. - Use 14 days, not 30. Commercial clients often pay on their own cycle regardless, but domestic and small business clients respond to the number on the page. - State your late payment position. UK businesses have a statutory right to claim interest and a fixed recovery charge on overdue commercial invoices. Say so on the invoice. - Send a statement monthly. One document showing everything outstanding is more effective than chasing individual invoices. ##### When a template stops being enough A generator like this is perfect for a handful of invoices a month. Past roughly twenty, the admin compounds: you are re-typing the same client details, tracking which invoices are paid in a spreadsheet, manually chasing overdue accounts, and rebuilding the same numbers again at VAT return time. That is the point where invoicing should come off the back of the work itself: jobs complete, invoices generate from them automatically, payment status tracks itself, and the export for your accountant is one click. CleanFlo does exactly that, but the honest answer is that any system beats a folder of PDFs once you are past twenty a month. **FAQs** Q: What should a cleaning invoice include in the UK? A: Your trading name and address, the client name and billing address, a unique sequential invoice number, the invoice date and supply date, a clear description of the cleaning services, the amount due, and your payment details. If you are VAT registered you must also show your VAT number, the net amount, the VAT rate, and the VAT charged. Q: Is this cleaning invoice generator really free? A: Yes, completely: no signup, no watermark, no limit. Everything runs in your browser and nothing you type is sent to a server or stored. Download the PDF, print it, or save it and send it on. Q: What payment terms should a cleaning business use? A: 14 days is the practical standard for cleaning services. Domestic clients often pay on completion or within a week. Larger commercial clients will impose their own terms, frequently 30 or 60 days, so factor that delay into your cash flow when you take on a big contract. Always state the terms on the invoice itself. Q: Can I charge interest on late cleaning invoices? A: For commercial clients, yes. UK legislation gives businesses a statutory right to claim interest and a fixed sum for debt recovery costs on overdue commercial invoices. Stating this on your invoice makes the position clear from the outset and in practice speeds up payment more often than it results in you actually claiming it. URL: https://cleanflo.io/tools/cleaning-invoice-generator/ --- #### Cleaning Business Startup Cost Calculator What it really costs to start a UK cleaning business. Cleaning is one of the cheapest businesses in the UK to start and one of the easiest to under-capitalise. This calculator totals your setup costs and shows how many clients you need before the business pays for itself. **Method** 1. Choose your scale: Solo domestic round, small team, or commercial contract cleaning. Each has a different equipment floor. 2. Tick the setup items you need: Insurance, DBS, equipment, vehicle, branding, website and software. 3. Set your monthly running costs: Fuel, consumables, insurance instalments, phone and software. 4. Enter your expected pricing: Average job value and how many jobs a week you expect in month one. 5. Read the break-even: The calculator shows total setup cost, monthly overhead and how many weeks until you are in profit. ##### What it costs to start, by business type The single biggest variable is the vehicle. A solo domestic cleaner working a tight local round can genuinely start for a few hundred pounds. Add a van and you have added several thousand pounds and a monthly finance payment before you have a single client. Setup | Realistic startup cost | Monthly overhead Solo domestic, using client supplies | £300–£800 | £80–£180 Solo domestic, own kit and van | £2,000–£5,000 | £350–£650 Small team (2–4 cleaners) | £4,000–£9,000 | £700–£1,400 Commercial contract cleaning | £8,000–£20,000 | £1,200–£3,000 Specialist (carpet / jet wash) | £5,000–£15,000 | £500–£1,100 ##### The non-negotiables - Public liability insurance: typically £60–£200 a year for a solo cleaner. Most commercial clients and letting agents will not engage you without it, and many require £2m or £5m cover. - Employers' liability insurance: legally required in the UK as soon as you employ anyone, with substantial daily penalties for not having it. Budget £150–£400 a year. - Treatment risk / key cover, covers damage you cause while cleaning and loss of client keys. Standard public liability often excludes both. - DBS check: not legally mandatory for general cleaning, but a basic DBS is effectively expected for domestic work and lettings, and costs very little. - ICO registration: if you hold client names, addresses and access details, you are processing personal data. Registration is an annual fee and is frequently overlooked. ##### What you can safely delay A van. Most solo domestic cleaners start with a car and a boot organiser and it is genuinely fine. You are carrying a vacuum, a caddy and cloths, not scaffolding. Branded uniforms and vehicle wraps. Worth doing, but at month six when you know the business works, not week one. A commercial-grade scrubber-drier or truck-mounted carpet system. Hire before you buy. If you are hiring the same machine more than twice a month, then buy it. An office. Cleaning businesses do not need premises until they need storage for stock and machinery, which is usually around six to eight staff. ##### The cost most people forget: working capital Commercial clients pay on 30 or 60 day terms. Your cleaners are paid weekly or monthly regardless. That gap is real money you have to fund. A cleaning business with £4,000 a month of commercial wages and 45-day average payment terms needs roughly £6,000 of working capital just to exist: separate from every setup cost above. This is the most common reason profitable young cleaning businesses run into trouble. Plan for it before you take the contract, not in the month the wages are due. **FAQs** Q: How much does it cost to start a cleaning business in the UK? A: A solo domestic cleaner using client-supplied products can start for £300–£800, covering insurance, basic equipment and initial marketing. With your own equipment and a vehicle, budget £2,000–£5,000. A small team of two to four cleaners typically needs £4,000–£9,000, and commercial contract cleaning £8,000–£20,000 because of machinery and working capital. Q: What insurance do I need for a cleaning business? A: Public liability insurance is essential and most commercial clients require £2m or £5m of cover. Employers' liability insurance is legally required in the UK the moment you employ anyone. Add treatment risk cover for damage caused while cleaning, and key cover for lost client keys. Both are commonly excluded from standard public liability. Q: Do I need a DBS check to start a cleaning business? A: It is not a legal requirement for general cleaning work. In practice, a basic DBS check is expected by most domestic clients and letting agents, costs very little, and is a straightforward competitive advantage when quoting. Enhanced checks are required if you clean in schools or care settings. Q: How long before a cleaning business breaks even? A: A solo domestic cleaner with low setup costs often breaks even within four to eight weeks, because the startup cost is small and each client contributes immediately. A team-based or commercial operation typically takes four to nine months, as you are carrying wages and working capital before contracts mature. The deciding factor is almost always how quickly you fill the round, not how much you spent on equipment. URL: https://cleanflo.io/tools/cleaning-business-startup-cost-calculator/ ### Team & Operations #### True Cost of a Cleaner Calculator What an employed cleaner actually costs you per delivered hour. The wage on the payslip is not what an hour of cleaning costs you. Add employer National Insurance, pension, holiday accrual, sick cover and the hours you pay for but cannot bill, then quote against that number. **Method** 1. Enter the gross hourly wage: What appears on the payslip before deductions. 2. Add employer National Insurance: The employer contribution on earnings above the secondary threshold. 3. Add the pension contribution: Auto-enrolment minimum employer contribution on qualifying earnings. 4. Add holiday accrual: UK statutory holiday is 5.6 weeks, which is 12.07% of hours worked. 5. Add sick, training and non-productive time: Hours you pay for but cannot invoice: travel, briefings, absence cover. ##### Where the extra 25–30% comes from Every employed hour of cleaning carries a stack of costs on top of the wage. None of them are optional and all of them are predictable, which means they belong in your quote. Cost | Typical addition | Why Employer National Insurance | ~10–15% of pay | Payable on earnings above the secondary threshold Auto-enrolment pension | ~3% of qualifying earnings | Statutory minimum employer contribution Holiday pay accrual | 12.07% of hours worked | 5.6 weeks statutory leave ÷ 46.4 working weeks Sickness and absence cover | 2–4% | Paying twice for one delivered hour Training, briefings, induction | 1–3% | Paid time that is not on a client site Uniform, PPE, DBS | ~£150–£350 per head per year | Spread across delivered hours Stack those and a cleaner on £12.50 an hour costs roughly £15.60 to £16.50 per delivered hour. If you quote at £18 believing your cost is £12.50, you think you are making 30% and you are actually making around 10%. ##### The 12.07% holiday rule UK workers are entitled to 5.6 weeks of paid statutory holiday a year. For staff on irregular hours, the long-standing planning figure is 12.07% of hours worked: derived from 5.6 weeks of leave divided by the 46.4 weeks actually worked. Holiday pay law for irregular-hours and part-year workers has changed in recent years, including how rolled-up holiday pay may be used for leave years starting on or after 1 April 2024. If you employ term-time, zero-hours or variable-hours cleaners, check the current position on GOV.UK or with your payroll provider rather than relying on a percentage alone. For costing purposes, 12.07% remains the right figure to build into your hourly rate. For paying people correctly, follow current legislation. ##### Non-productive hours: the invisible margin killer A cleaner paid for eight hours does not deliver eight billable hours. Travel between sites, collecting keys, loading and unloading, restocking the van, team briefings and waiting for site access all consume paid time that no client pays for. On a domestic round with jobs 15–20 minutes apart, 15–20% of the paid day is typically non-productive. On a single-site commercial contract it can be under 5%. This is why domestic rounds need higher hourly rates than commercial contracts to produce the same margin, the delivered hour costs more. The practical fix is geography. Clustering a cleaner's day into one postcode area is worth more to your margin than a 50p an hour rate increase, and it is free. ##### Employed versus self-employed cleaners Engaging cleaners as self-employed subcontractors removes employer National Insurance, pension and holiday accrual from your cost base. It also removes your control over how, when and by whom the work is done, and that is the point HMRC tests. If you set the hours, provide the equipment and chemicals, require a uniform, prevent substitution and the person works only for you, HMRC is likely to view that as employment regardless of what the contract says. The liability for unpaid PAYE, National Insurance and penalties falls on you, not the worker. Genuine self-employment in cleaning exists: specialists with their own kit, insurance and client base who work for several firms. Treat the distinction seriously and take advice; the cost of getting it wrong dwarfs the on-costs you were trying to avoid. **FAQs** Q: How much does it cost to employ a cleaner in the UK? A: Budget 25–32% on top of the gross hourly wage. That covers employer National Insurance, the auto-enrolment pension contribution, 12.07% holiday pay accrual, sickness and absence cover, and paid non-productive time. A cleaner on £12.50 an hour typically costs £15.60–£16.50 per delivered hour before any overheads. Q: What is the 12.07% holiday pay rule? A: UK statutory holiday entitlement is 5.6 weeks a year. For workers on irregular hours, dividing 5.6 weeks of leave by the 46.4 weeks actually worked gives 12.07%, which is the long-standing figure used to accrue holiday pay per hour worked. Rules for irregular-hours and part-year workers changed for leave years starting on or after 1 April 2024, so check the current GOV.UK guidance for payroll purposes. Q: Can cleaners be self-employed? A: Genuinely self-employed cleaners exist, typically specialists with their own equipment, insurance and multiple clients. But if you control the hours, supply the equipment and chemicals, require a uniform, prevent substitution and are effectively their only client, HMRC is likely to treat the relationship as employment regardless of the contract wording. The unpaid PAYE, National Insurance and penalties fall on your business. Q: What percentage of a cleaner's paid hours are actually billable? A: On a domestic round with jobs spread across a town, typically 80–85%: the rest goes on travel, key collection and restocking. On a single-site commercial contract it can exceed 95%. Clustering a cleaner's day into one geographic area is usually worth more to your margin than a rate increase. URL: https://cleanflo.io/tools/cleaner-hourly-cost-calculator/ --- #### Staff Holiday Entitlement Calculator UK statutory holiday for full-time, part-time and irregular hours. Work out statutory holiday for any cleaner: full-time, part-time, zero-hours or a mid-year starter. Shows entitlement in both days and hours, plus the accrual rate to build into your costing. **Method** 1. Choose the working pattern: Fixed days per week, fixed hours per week, or irregular hours. 2. Enter the pattern details: Days or hours worked each week, and hours per day for fixed patterns. 3. Set the start date if mid-year: Starters part way through a leave year accrue pro rata. 4. Decide on bank holidays: Bank holidays can be included within the 5.6 weeks or given on top. Your contract decides. 5. Read entitlement in days and hours: Plus the 12.07% accrual figure for irregular-hours staff. ##### The rule: 5.6 weeks, whoever they are Almost all UK workers are entitled to 5.6 weeks of paid holiday per leave year. That is the floor, and it applies to part-time and zero-hours staff exactly as it does to full-timers. It is 5.6 of their weeks, not 28 days for everybody. A cleaner working five days a week gets 28 days. A cleaner working three days a week gets 16.8 days. A cleaner working two days a week gets 11.2 days. Statutory entitlement is capped at 28 days, so someone working six days a week still gets 28, not 33.6. Days worked per week | Statutory entitlement | In hours (7.5h day) 5 days | 28 days | 210 hours 4 days | 22.4 days | 168 hours 3 days | 16.8 days | 126 hours 2 days | 11.2 days | 84 hours 1 day | 5.6 days | 42 hours ##### Bank holidays are not automatically extra There is no legal right to paid time off on a bank holiday in the UK. Employers may include the eight bank holidays within the 5.6 weeks, or grant them in addition: what matters is what the contract says. Including them means a full-time cleaner gets 28 days total, of which eight are fixed bank holidays and 20 are chosen. Granting them on top means 36 days. For cleaning businesses this matters commercially. Commercial sites often close on bank holidays while domestic clients still expect a visit. Whichever policy you adopt, write it into the contract clearly. This is one of the most common sources of holiday disputes in the sector. ##### Irregular hours and the 12.07% accrual For cleaners whose hours vary week to week, holiday is normally accrued as a percentage of hours worked rather than as a fixed number of days. The established figure is 12.07%: 5.6 weeks of leave divided by 46.4 working weeks. A cleaner who works 100 hours in a month accrues 12.07 hours of paid holiday. The rules for irregular-hours and part-year workers were reformed for leave years beginning on or after 1 April 2024, including the reintroduction of rolled-up holiday pay for those workers. If you employ variable-hours cleaners, confirm the current position on GOV.UK or with your payroll provider. This calculator is a planning tool, not legal advice. ##### Practical holiday management for cleaning rounds - Book cover before you approve leave. A domestic client whose regular cleaner disappears for a fortnight with no cover is a client you are about to lose. - Cap simultaneous absence. Two cleaners off at once on a five-person team is 40% of your capacity gone. - Watch August and the fortnight after Christmas. Demand does not fall as much as staffing does. - Track accrual continuously, not annually. Discovering in February that half the team has three weeks of untaken leave is an operational crisis, not an admin task. **FAQs** Q: How much holiday is a part-time cleaner entitled to? A: 5.6 weeks of their normal working week, the same multiplier as full-time staff. A cleaner working three days a week is entitled to 16.8 days a year; two days a week gives 11.2 days. Statutory entitlement is capped at 28 days, so working more than five days a week does not increase it. Q: Do bank holidays count as part of holiday entitlement? A: They can. There is no statutory right to paid leave on bank holidays in the UK. Employers may count the eight bank holidays within the 5.6 week entitlement, or grant them in addition. The contract of employment determines which applies, so make the policy explicit in writing. Q: How do I calculate holiday for zero-hours cleaning staff? A: Accrue holiday at 12.07% of hours actually worked. That is 5.6 weeks of leave divided by 46.4 working weeks. A cleaner who works 100 hours accrues 12.07 hours of paid leave. Note that holiday pay rules for irregular-hours and part-year workers changed for leave years starting on or after 1 April 2024, so check current GOV.UK guidance for payroll. Q: Can I pay a cleaner instead of giving them holiday? A: Not for statutory leave while they are still employed: the 5.6 week entitlement must be taken as time off. Untaken statutory holiday can only be paid in lieu when employment ends. Rolled-up holiday pay is permitted for irregular-hours and part-year workers for leave years beginning on or after 1 April 2024, subject to specific conditions. URL: https://cleanflo.io/tools/holiday-entitlement-calculator/ --- #### Cleaning Time Estimator How long a job will actually take, room by room. Build a job time from the rooms, not from a hunch. Enter the property, pick the clean type and condition, and get a realistic duration you can schedule and quote against. **Method** 1. Pick the clean type: Regular maintenance, deep clean, or move-out. Timings differ by a factor of two or more. 2. Enter the rooms: Bedrooms, bathrooms, kitchens, reception rooms and any extras. 3. Set the condition and clutter level: Clutter is the biggest single multiplier on domestic cleaning time. 4. Choose the crew size: Two cleaners are faster than one but not twice as fast. There is a coordination overhead. 5. Add travel and setup: The total shows both cleaner-hours to cost and on-site duration to schedule. ##### Room-by-room timings for a regular clean These are single-cleaner times for a property in average condition. Add 30–50% for heavy soiling, pets or long-term neglect, and 20–30% for a furnished property with a lot of surfaces and ornaments. Room | Regular clean | Deep clean | End of tenancy Bedroom | 12–18 min | 25–40 min | 35–55 min Bathroom | 18–25 min | 40–60 min | 55–90 min Kitchen | 25–40 min | 60–90 min | 90–150 min Living / reception room | 15–25 min | 35–55 min | 45–70 min Hallway / stairs | 8–15 min | 20–30 min | 25–40 min WC / cloakroom | 8–12 min | 15–25 min | 20–35 min Oven (interior) | – | 45–90 min | 60–150 min ##### Why two cleaners is not twice as fast Putting a second cleaner on a job typically delivers 1.7 to 1.8 times the output, not 2.0. Time goes on dividing up the work, sharing equipment, moving around each other in small spaces, and coordinating the finish so nobody re-cleans a room. The efficiency improves with property size. On a studio flat a second cleaner adds very little. On a four-bed house or a large office floor, a pair working a planned split can approach 1.9. Where a second cleaner genuinely pays is on-site duration rather than cost. Domestic clients and letting agents care about how long you are in the property, and halving a seven-hour job to four hours on site is often what wins the booking. ##### The clutter multiplier Clutter is the single largest and least-predicted variable in domestic cleaning. Cleaning a clear worktop takes seconds. Cleaning a worktop with fourteen items on it means moving fourteen items, cleaning under them, and putting them back. That is four to six times longer for the same square metre. When quoting a property you have not seen, ask directly: "Will surfaces be clear, or should we plan to work around things?" The answer moves your estimate by 20–40% and costs you nothing to ask. For recurring clients, the first clean is always the slowest. Time falls by 15–25% by the third visit as the cleaner learns the property and the property stabilises at a maintained standard. **FAQs** Q: How long does it take to clean a 3 bedroom house? A: For a regular maintenance clean, budget 2.5 to 3.5 cleaner-hours for a typical three-bed house in average condition. A deep clean takes 5 to 7 hours, and an end of tenancy clean 8.5 to 11 hours. Heavy soiling, pets or significant clutter can add 30–50% to any of these. Q: How long should an office clean take? A: For a standard nightly office specification: bins, vacuum, spot clean, wipe surfaces: plan 250 to 350 m² per cleaner-hour for open-plan carpeted space. Washrooms are far slower at 35 to 60 m² per hour, or 15 to 20 minutes per WC. A 500 m² office with two washroom blocks is typically a 2.5 to 3 hour nightly job. Q: Is it faster to send two cleaners instead of one? A: Two cleaners typically deliver 1.7 to 1.8 times the output of one, not double, because of coordination and equipment sharing. The real advantage is on-site duration rather than total cost: halving the time you are in a client's property is often what wins domestic and end of tenancy bookings even though the labour cost is similar. Q: How much longer does a first clean take? A: A first or initial clean on a property that has not been professionally cleaned takes 1.5 to 2.5 times the regular visit time. Time then falls by 15–25% between the first and third regular visit as the cleaner learns the property and the standard stabilises. Always quote the initial clean separately at your one-off rate. URL: https://cleanflo.io/tools/cleaning-time-estimator/ --- #### Cleaning Chemical Dilution Calculator Get the ratio right, and stop pouring money down the drain. Turn any dilution ratio into the exact millilitres of concentrate for your bottle or bucket, plus what each filled bottle actually costs you. **Method** 1. Find the ratio on the label: Manufacturers state it as 1:10, 1:50, 1:256 or as a percentage. 2. Enter your container size: A 750ml trigger spray, a 5 litre bucket, or a 10 litre machine tank. 3. Read the concentrate volume: The calculator shows exactly how much concentrate and how much water. 4. Add water first, then concentrate: This avoids foaming and, with acids, dangerous splashing. 5. Check the cost per bottle: Enter the concentrate price to see what each filled bottle costs you. ##### What dilution ratios actually mean A ratio of 1:10 means one part concentrate to ten parts water: eleven parts total. In a 750ml spray bottle that is about 68ml of concentrate and 682ml of water. Some manufacturers write ratios as one part in a total volume rather than one part to water. 1:10 read that way means 75ml concentrate in a 750ml bottle. The difference is around 10%, which matters for cost and for effectiveness on regulated products. Read the label carefully and, if in doubt, follow the manufacturer's stated millilitres rather than interpreting the ratio yourself. Ratio | Percentage | Per 750ml bottle | Per 5L bucket 1:5 | 16.7% | 125 ml | 833 ml 1:10 | 9.1% | 68 ml | 455 ml 1:20 | 4.8% | 36 ml | 238 ml 1:50 | 2.0% | 15 ml | 98 ml 1:100 | 1.0% | 7.4 ml | 50 ml 1:256 | 0.4% | 2.9 ml | 19 ml ##### Over-dilution and under-dilution both cost you Under-diluting: using too much concentrate: is the more common error and the more expensive one. It does not clean better. Excess surfactant leaves residue that attracts soil, so surfaces get dirty faster and floors go dull. On a busy round, habitual under-dilution can double your chemical spend. Over-diluting is worse where it matters most. A disinfectant below its stated concentration may not achieve its claimed kill rate, which is a genuine problem in kitchens, washrooms, care settings and food premises. If a product has a validated contact time and dilution, that is the tested condition: anything weaker is unverified. The practical fix is dosing equipment: wall-mounted dilution systems, dosing caps, or pre-measured sachets. They pay for themselves quickly on any team of more than two or three cleaners, purely on chemical savings. ##### COSHH: your legal obligations Under the Control of Substances Hazardous to Health Regulations, UK employers must assess the risks of the cleaning chemicals their staff use and put controls in place. For a cleaning business this is not optional paperwork. It is one of the first things an HSE inspector or a commercial client's auditor will ask for. - Hold a current safety data sheet for every chemical in use - Complete a COSHH assessment for each hazardous product and each task - Train staff on safe use, correct dilution and what to do if something goes wrong - Provide and enforce the PPE the assessment requires: gloves, eye protection, ventilation - Never decant into unlabelled bottles; every secondary container needs the product name and hazard information - Never mix products: bleach with acidic descaler releases chlorine gas, and this injures cleaners in the UK every year **FAQs** Q: How much concentrate do I need for a 1:10 dilution in a 750ml bottle? A: Approximately 68ml of concentrate to 682ml of water, treating 1:10 as one part concentrate to ten parts water. If your manufacturer defines 1:10 as one part in ten parts of finished solution, use 75ml instead. Always follow the millilitre figure on the product label where one is given. Q: What happens if I use too much cleaning chemical? A: It does not clean better and it costs you significantly more. Excess surfactant leaves a residue that attracts soil, so surfaces re-soil faster and hard floors lose their finish. On a busy round, habitual under-dilution can double your chemical spend while making the result worse. Q: Do I need COSHH assessments for cleaning chemicals? A: Yes, if you employ anyone. UK COSHH Regulations require employers to assess the risks from hazardous substances and control exposure. In practice that means holding a safety data sheet for every product, completing an assessment for each hazardous product and task, training staff, providing the required PPE, and labelling every decanted container. Commercial clients routinely ask to see this documentation before awarding a contract. Q: Why should I add water before concentrate? A: Adding concentrate to water rather than water to concentrate reduces foaming and, with acidic products, prevents a violent reaction that can splash chemical toward your face. It also gives a more accurate final volume. Fill the container with most of the water first, add the measured concentrate, then top up. URL: https://cleanflo.io/tools/chemical-dilution-calculator/ ### Growth & Strategy #### Cleaning Software Cost Calculator What per-seat pricing costs you by the time you have hired. Most cleaning software charges per user, so the bill grows every time you hire. Put in the rate you have been quoted and see what it costs you at today's headcount, and at the one you are aiming for. **Method** 1. Count the team: Every person who needs a login, including you and any part-time cleaners. 2. Find the base fee: The monthly price on their pricing page before any extra users are added. 3. Find the per-user charge: What each additional cleaner costs per month, and how many users the base fee already covers. 4. Add your hiring plan: How many cleaners you expect to take on in a year. This is where the two models separate. 5. Read the crossover: The headcount at which the metered plan costs more than a flat one. Compare that against where you expect to be. ##### Why per-seat pricing bites cleaning businesses hardest Per-user pricing is the standard SaaS model and it is a reasonable one for most industries, where headcount grows slowly and every seat is a desk. Cleaning is not that shape. A cleaning business grows by adding cleaners, each of whom needs a login for perhaps ten minutes a day to see their jobs, tick a checklist and take a photograph. That means the metered cost lands on the cheapest, lightest users in the business, and it lands exactly when the owner is trying to grow. A model that charges more the moment you hire is a model that quietly prices your ambition. It also makes the bill unpredictable at the worst time. Taking on a contract that needs four more cleaners should be a margin question, not a software-licensing question. ##### Where the two models cross A metered plan is genuinely cheaper below a certain headcount, and it is worth being straight about that: if you are a solo cleaner with no plans to hire, a low base fee with no extra seats will usually beat a flat rate, and you should take it. We argue both halves of that on our own one-person page section, cheaper places to look included. The crossover point is the headcount where the base fee plus the per-seat charges passes the flat price. Below it, metered wins. Above it, flat wins and keeps winning, because one line of the comparison stops moving. If your team is | A metered plan is | Because One person, staying that way | usually cheaper | You are paying for one seat and nothing else Two or three, stable | roughly level | The base fee plus a seat or two lands near a flat rate Growing past three or four | more expensive, widening | Every hire adds a line to the bill Seasonal or high-turnover | unpredictable | The bill moves with a headcount that moves The calculator above does this arithmetic against the rate you have actually been quoted rather than a figure we have published, which is deliberate: launch pricing and founder rates change, and a number printed on our site would be out of date before you read it. ##### The costs that are not on either pricing page - Cleaners who need a login but barely use it. Ask whether a cleaner who only sees their own jobs is charged the same as an office administrator. On most metered plans they are. - Seasonal staff. If you take on cover for a busy quarter, a per-seat plan bills for it. Check whether you can remove a seat mid-month and whether you are refunded. - Locations and clients. Some plans meter these as well as users. A second site or a client-count ceiling is the other place a bill grows without you choosing. - The tier jump. Metered plans usually also gate features by tier, so the feature you need may move you up a band regardless of headcount. - Getting your data back out. Whatever you choose, check that a CSV export exists before you put a year of job history in. ##### What to do with the number Work it out at the headcount you expect in two years, not the one you have this morning. Software is a switching cost as well as a monthly cost, and the plan that is £4 cheaper today is the one you will be migrating off in eighteen months. Then compare the two products on what they actually do. Price is the easiest thing to compare and rarely the thing that decides whether a tool survives contact with a Tuesday. Our comparison pages set out where other tools are the better answer, including where they beat us. **FAQs** Q: Is per-seat or flat-rate cleaning software cheaper? A: It depends entirely on headcount. Below roughly three users a metered plan with a low base fee is usually cheaper, and if you are a solo cleaner with no plans to hire it is the better buy. Above that the two cross over and the metered plan keeps growing while a flat one does not. Work it out at the team size you expect in two years rather than today. Q: How much does CleanFlo cost per user? A: Nothing. CleanFlo is £19.99 a month with unlimited staff, clients and locations, so there is no per-user, per-seat or per-site charge at all. The bill on your fortieth cleaner is the same as the bill on your first. Q: Why does this calculator ask me to type in the competitor's price? A: Because publishing someone else's prices on our own site is a promise we cannot keep. Rates change, launch and founder pricing expires, and a stale figure would be worse than no figure. Your own quote is accurate today and it is a number you already believe. Q: Do cleaners need their own paid login? A: In CleanFlo every cleaner gets their own login on the cleaner app, in their own language, working offline, and none of them adds anything to the bill. On metered plans a cleaner usually counts as a billable user even though they use a fraction of what an office administrator does, which is worth checking before you commit. Q: What happens to my bill if I take on seasonal staff? A: On a flat plan, nothing: add them and remove them freely. On a metered plan, seasonal cover is billed like any other seat, so check whether you can remove a user mid-month and whether the unused portion is refunded or absorbed. URL: https://cleanflo.io/tools/cleaning-software-cost-calculator/ --- #### Cleaning Contract Tender Calculator Build a commercial cleaning bid that wins and still pays. Commercial tenders are won on a build-up, not a guess. Enter the site, the specification and your costs, and get a full annual contract value with every cost line shown: the way a procurement team expects to see it. **Method** 1. Establish the productive hours: Convert the specification and area into cleaner-hours per visit using realistic productivity rates. 2. Cost the labour properly: Gross wage plus employer National Insurance, pension, holiday accrual and absence cover. 3. Add materials and consumables: Chemicals, cloths, bin liners and: separately: washroom consumables if in scope. 4. Add equipment and machinery: Depreciation or hire, servicing, and transport for scrubber-driers and rotary machines. 5. Add supervision and management: Site supervision hours, area manager time, auditing and reporting. 6. Apply margin and check the rate: Sense-check the resulting per-m² and per-hour figures against the market before you submit. ##### The tender build-up, line by line If your build-up puts labour below 55% of contract value, check your hours. You have almost certainly under-resourced the specification and the contract will fail at audit. If labour exceeds 70%, there is not enough left to cover management and margin, and you will be running the contract for free. Cost line | Typical share of contract value | Notes Direct labour + on-costs | 55–70% | The dominant cost in every cleaning contract Materials and consumables | 3–6% | Higher if washroom supplies are in scope Equipment and machinery | 2–5% | Depreciation, servicing, hire Supervision | 4–8% | On-site supervisor hours Management and overhead | 8–14% | Area management, admin, insurance, compliance Net margin | 5–12% | What you actually keep ##### What actually wins cleaning tenders Price matters, but on most UK commercial tenders it carries only 40–60% of the evaluation weighting. The rest is quality, mobilisation, compliance and social value, and that is where a smaller contractor can beat a national one. - A credible mobilisation plan. Week-by-week, named roles, TUPE handled properly. Incumbents lose contracts on this more often than on price. - Demonstrable compliance. COSHH assessments, RAMS, training records, insurance certificates, ICO registration. Have them ready as an appendix, not a promise. - Named site supervision. Procurement teams have been burned by contractors who win on price and are never seen again. A named supervisor with stated site hours is worth real points. - Real KPIs and reporting. Audit scores, response times, and how you report them. If you can show a live compliance dashboard, show it. - Social value. Local employment, real living wage commitments, training. Increasingly weighted on public sector work. ##### TUPE: the thing that sinks first-time bidders If you win a contract where an incumbent contractor already provides the service, TUPE will usually apply. The existing cleaners transfer to you on their existing terms: including pay rates, length of service, and any contractual entitlements you did not budget for. This means you cannot assume you will staff the contract at your standard rate. Request the TUPE information: the employee liability information, early in the process. You are entitled to it and bidding without it is guessing. Common surprises: transferring staff on above-market historic rates, long service creating substantial redundancy exposure, unresolved grievances, and accrued holiday you inherit. Price all of it into the bid or it comes straight out of your margin. ##### Sense-checking before you submit - Per m² per month: does it land in the £1.20–£3.20 band for a standard office spec? (That is about £0.07–£0.22 per m² per visit.) - Hours per visit, walk the building in your head. Can one cleaner genuinely do that in that time? - Cost per productive hour: is it above your true employed cost including on-costs? - Annual value versus your capacity: can you actually mobilise this without damaging existing contracts? - The exit: what does it cost you if the client terminates at 12 months? Machinery bought for one site is a stranded asset. **FAQs** Q: How do I price a commercial cleaning tender? A: Build it up rather than guessing a rate. Convert the specification and floor area into cleaner-hours using realistic productivity figures, cost those hours at true employed cost including on-costs, then add materials, machinery, supervision, management overhead and margin. Sense-check the resulting per-square-metre figure against the £1.20–£3.20 per month market band before submitting. Q: What margin should I build into a cleaning tender? A: Most UK contract cleaners target 5–12% net margin on commercial contracts. Below 5% there is no room to absorb absence cover, a machinery failure or a specification dispute. Above 15% you will usually be outbid on a competitive tender unless you are winning on quality, specialism or a genuine service differentiator. Q: Does TUPE apply when I win a cleaning contract? A: Usually yes, where an incumbent contractor is already providing the service. The existing cleaning staff transfer to you on their existing terms and conditions, including pay rates and continuous service. Request the employee liability information early: bidding without knowing the transferring staff costs is how contractors win a contract and lose money on it from day one. Q: How much does supervision cost on a cleaning contract? A: Typically 4–8% of contract value for on-site supervision, plus 8–14% for area management and overhead. Larger sites carry supervision more efficiently. On small contracts under about £25,000 a year, dedicated on-site supervision rarely stacks up: build in periodic auditing by an area manager instead and say so in the bid. URL: https://cleanflo.io/tools/cleaning-contract-tender-calculator/ --- #### Client Lifetime Value Calculator What a cleaning client is worth, and what you can pay to win one. A domestic cleaning client is rarely worth one clean. They are worth every clean until they leave. This calculator shows that number, and therefore what you can sensibly spend to win one. **Method** 1. Enter the average job value: What a single visit or monthly invoice is worth, excluding VAT. 2. Set the visit frequency: Weekly, fortnightly, monthly, or number of visits per year. 3. Enter your gross margin: The percentage left after cleaner wages, on-costs, travel and materials. 4. Estimate annual churn: What share of clients you lose in a year. Be honest: count the ones who quietly stopped booking. 5. Add acquisition cost: Marketing spend divided by clients won. The calculator returns payback period and LTV:CAC ratio. ##### Why the first clean is the wrong unit of value A domestic client on a fortnightly £60 clean does not represent £60 of business. At a typical annual churn rate of 30%, that client stays around 3.3 years and generates roughly £5,100 of revenue. At 45% gross margin that is about £2,300 of gross profit from one client. Once you see that number, the economics of acquisition change completely. Spending £40 on ads to win a client who returns £2,300 of gross profit is not a cost, it is a trade you should make as many times as you can afford to fund. This is also why undercharging to win a client is so damaging. You are not discounting one clean; you are discounting eighty-six of them. ##### Typical churn rates in UK cleaning Domestic churn is heavily driven by life events: moving house, having a baby, losing a job, a relationship ending. You cannot prevent most of it, which is why the achievable target is 25% rather than zero. What you can prevent is the churn caused by inconsistency: a different cleaner every visit, missed appointments, or a standard that slipped without anyone noticing. That is usually the difference between 25% and 45%. Client type | Annual churn | Average lifespan Domestic, regular schedule | 25–40% | 2.5–4 years Domestic, ad-hoc bookings | 60–80% | 1.2–1.7 years Small commercial contract | 15–25% | 4–6.5 years Large commercial contract | 10–20% | 5–10 years End of tenancy / one-off | ~100% | Single job ##### Cutting churn is worth more than winning clients Take a business with 100 domestic clients at £60 fortnightly and 40% annual churn. Reducing churn to 25% extends average client life from 2.5 years to 4 years: a 60% increase in lifetime value across the entire client base, with no additional marketing spend at all. Achieving the same revenue growth through acquisition would mean winning 60 additional clients. Retention is almost always the cheaper lever, and in cleaning the retention levers are unglamorous and operational. - Send the same cleaner. Continuity is the single strongest predictor of domestic retention. Clients form a relationship with a person, not a company. - Never miss a visit silently. A missed clean with no warning is the most common trigger for cancellation. A missed clean with two days' notice and a rebooking usually is not. - Ask at three months. One short message asking whether the standard is right catches problems while they are still fixable. - Notice the fade. A client cancelling two visits in a row is leaving. That is the moment to make contact, not after the third. ##### What you can afford to spend winning a client The standard benchmark is an LTV to acquisition cost ratio of at least 3:1. If a domestic client is worth £2,300 in gross profit, spending up to roughly £760 to acquire one is defensible: far more than most cleaning businesses would ever consider. The constraint in practice is not the ratio, it is cash. Acquisition is paid today and lifetime value arrives over three years. Watch the payback period: how many months of gross profit it takes to recover the acquisition cost. Under three months you can scale aggressively. Beyond twelve, growth will consume cash faster than the business generates it, however good the LTV looks on paper. **FAQs** Q: How do I calculate the lifetime value of a cleaning client? A: Multiply the average job value by the number of visits per year to get annual revenue, multiply by your gross margin to get annual gross profit, then divide by your annual churn rate. A client on a fortnightly £60 clean at 45% margin with 30% churn is worth roughly £2,340 in gross profit over an average 3.3 year lifespan. Q: What is a normal churn rate for a cleaning business? A: Regular domestic clients typically churn at 25–40% a year, giving an average client life of 2.5 to 4 years. Ad-hoc domestic bookings churn far faster at 60–80%. Small commercial contracts sit at 15–25% and large contracts at 10–20%. Much domestic churn is driven by life events and cannot be prevented: the controllable portion is usually the gap between 25% and 45%. Q: How much should I spend to acquire a cleaning client? A: Aim for a lifetime value to acquisition cost ratio of at least 3:1. For a domestic client worth around £2,300 in gross profit, spending up to roughly £760 is defensible. The practical limit is cash flow rather than the ratio: keep the payback period: months of gross profit needed to recover acquisition cost: under three to six months if you want to scale without running out of money. Q: Is it cheaper to keep a cleaning client or win a new one? A: Keeping one, by a wide margin. Cutting annual churn from 40% to 25% lifts average client life from 2.5 to 4 years, a 60% increase in lifetime value across your whole client base with no extra marketing spend. Achieving the same result through acquisition would mean winning 60 extra clients for every 100 you have. URL: https://cleanflo.io/tools/client-lifetime-value-calculator/ ## Help Centre, in full ### Getting started #### What CleanFlo is A plain tour of the whole product, from the dashboard you open on to the invoice at the end, including the phone half your cleaners hold and what all of it replaces. CleanFlo runs a cleaning business out of one place: the cleans, the people who do them, the sites they happen at, the paperwork that follows, and the invoice at the end. This is the tour. Most cleaning companies of three to fifteen cleaners are run out of four things at once: a WhatsApp group, a paper rota, a spreadsheet of clients, and the owner's memory. It works until it does not. A cleaner does not know where to be, a clean gets done and never invoiced, and a client asks for a risk assessment on Friday afternoon. CleanFlo replaces those four things with one system. There are two halves to it: a web app for you, and a phone app for your cleaners. They are the same product looking at the same cleans from two ends. ##### What you see when you log in The dashboard answers one question: what needs me today. It opens with the day's money and the day's work, then everything that is waiting on a decision. (The Dashboard. Four figures across the top, today's cleans on the left, anything unassigned on the right, and the compliance score reading live from your incidents, audits and risk assessments.) > The four figures at the top are not decoration. Outstanding is money invoiced and not yet paid, and it is the one most owners check first thing. Everything below the schedule that is waiting on you, an unassigned clean, a client request, an accepted quote, unbilled work, is one merged Needs a Decision list rather than a stack of separate cards, ordered by how urgently it wants you. ##### Everything hangs off the sidebar The sidebar is grouped the way the work actually splits: the day first, then clients and team, then the money pipeline, then the business behind it, then compliance, then your account. It never changes, so after a week you stop reading it. - Dashboard: Today at a glance, and everything waiting on a decision. - Schedule: The calendar. Agenda, day, week and month views of every clean. - Clients: Client records, and the locations you clean for each one. - Messages: Talking to your team, and to clients, inside CleanFlo rather than in a group chat. - Staff: Your cleaners: their record, their activity, their access to the app. - Website: One public page for your business, with a quote form that lands in Enquiries. - Enquiries: Leads from your public quote form, before they become a quote. - Quotes: Priced work you have offered but not yet won. - Invoicing: VAT invoices raised from completed cleans, and what is still owed. - Reports: Revenue, staff and client analysis, and the CSV export. - Services: The catalogue every clean, quote and invoice line is priced from. - Inventory: Chemicals, consumables and PPE, with a stock level and a reorder point on each. - Equipment: Machines and tools, and which cleaner currently has each one. - Health & Safety: Risk assessments, incidents, audits, and the compliance score they produce. - Settings: Company details, invoice branding, bank details, billing, modules. - Support: A ticket straight to us. The searchable guides now live at cleanflo.io/help. The sidebar is arranged in six sections: nothing under a heading (Dashboard, Schedule), Clients & Team, Money (the pipeline a lead actually runs: public page, enquiry, quote, invoice, report), Business (what you sell and use up doing it), Compliance and Account. Two things sit above the sidebar rather than in it. Search everything… at the top, or ⌘K from anywhere, searches clients, staff, cleans, inventory, services, incidents, audits, risk assessments and these help articles at once. The bell beside it is every notification the system has raised. (The command palette, opened with ⌘K. It searches across the whole workspace, not one screen at a time.) ##### The week, on one screen The Schedule is where most of the day goes. Cleans sit on a grid of the working week, coloured by what state they are in, and a red line runs across the current time so you can see at a glance what should be happening right now and whether it is. A clean carries a client, a site, a start time, a duration, the services being charged for, a checklist, and a cleaner. Book it once and it exists in three places at the same time: on your grid, on that cleaner's phone, and in the pile of completed work that invoices are raised from at the end of the month. (The Schedule in week view. The four view tabs sit under the title, the summary strip counts the week by status, and a clean with no cleaner against it is drawn with a dashed edge so it cannot be missed.) ##### The half your cleaners hold Your cleaners never see the screens above. They get a phone app with their cleans on it, the checklist for each one, and a way to say it is finished. It is in 27 languages, matched automatically to whatever language their phone is set to, and it keeps working when the signal does not. (The cleaner app is a logbook, not a dashboard. Every clean is one ruled line with its time in the margin; the clean signed into is inked and runs a clock; the finished one is stamped and drops its margin mark, because it no longer wants anything.) > Offline is the normal case, not an edge case. Cleaners work in basements, plant rooms and stairwells where there is no signal. The app keeps taking their taps and syncs the lot when the phone finds a network again. ##### The paperwork the work produces Two documents come out of CleanFlo and go to a client: a quote before the work and an invoice after it. Both are built from the same catalogue of services, so the price you quoted is the price that gets billed unless you change it on purpose. The invoice is a proper UK VAT invoice. It carries your VAT number, per-line VAT, the totals broken out, and your BACS details with the invoice number repeated as the payment reference. That last field exists because payments used to arrive with nothing to match them against. (An invoice as the client receives it. The reference at the foot is the invoice number again: it is the one field on the page a payer has to copy by hand.) Alongside the money sits the compliance side: risk assessments on a 5×5 hazard matrix, incidents, scheduled audits, and a live score out of 100 built from all three. That is the folder a client asks for when they are deciding whether to give you the contract, and it is the reason it is worth keeping up to date before anyone asks. ##### What it replaces What you use now | What it becomes in CleanFlo A WhatsApp group for the rota | Cleans assigned to a cleaner, who is notified automatically A paper rota on the office wall | The Schedule, in agenda, day, week or month A spreadsheet of clients and addresses | Clients, each with their locations and access notes A Facebook page and no website | Website, one public page of your own, with a quote form that lands in Enquiries Invoices typed up from memory on a Sunday | Invoices raised from the cleans that were actually completed A folder of risk assessments nobody can find | Health & Safety, with a live compliance score "Have we got any more blue roll?" | Inventory, with a stock level and a low-stock warning ##### What it costs One price: £19.99 a month, with unlimited staff, clients and locations. There are no per-cleaner tiers, because charging you more for growing is the thing this product exists to argue against. The first 14 days are free with full access. > The 14 days start with no card at all, and we ask for one as the trial comes to an end. We email you three days before that and again the day before. Once you are subscribed you can cancel at any point in the Stripe billing portal, from Settings → Billing, and keep access to the end of the period you have paid for. **FAQs** Q: Do my cleaners need to buy anything or install an app store app? A: No. The cleaner app opens in the phone browser at the address in their welcome email, and it can be added to the home screen so it behaves like any other app. It works on any reasonably recent Android or iPhone. Q: Can I use CleanFlo for domestic cleaning as well as commercial? A: Yes. Locations carry a property type of Home, Office, Holiday Let, Retail or Other, and cleans carry a clean type, so a round of houses and a contract office block sit in the same schedule without getting confused with each other. Q: What happens to my data if I stop paying? A: Nothing is deleted. Access is paused until billing is resolved, and everything is exactly where you left it when you come back. You can also export your clients, invoices and reports as CSV at any time before you go. URL: https://cleanflo.io/help/what-cleanflo-is/ --- #### Setting up in an afternoon An afternoon, in the right order. Company details before clients, clients before cleans, services before either, because each step needs the one before it to exist. Setting CleanFlo up is not a project. It is five short cleans done in the right order, and the order is the whole trick: each one is the list the next one picks from. A working CleanFlo is five things. Your company details, a client with somewhere to clean, a price list, cleaners who can log in, and a clean on the calendar. None of them takes long on its own. What turns an afternoon into a fortnight is doing them out of order, because the Add clean drawer asks you to pick a client, a location, a service and a cleaner, and it cannot invent any of them for you. Half an afternoon is realistic for a company with a handful of clients and five or six cleaners. What follows is that afternoon, in the order that works. ##### The wizard that runs before the app The first time you sign in as the owner, CleanFlo does not open on the dashboard. It runs a seven-step setup wizard in place of the app: welcome, import, services, clients, locations, staff, then the trial. The counter reads Step 1 of 7 and counts up, and the panel down the left side ticks off what you have added as you go, so the wizard shows you your own business filling in rather than a progress bar. Nothing the wizard does is special. It writes exactly the same records you would write from the sidebar, in the same tables, and every step has a Skip. A Skip setup control sits above the whole thing and jumps to the last step, warning you first that your services, clients, locations and team will be left empty. One quirk worth knowing: the locations step is skipped for you when you did not add a client, because a location has to belong to one, so the counter can jump from Step 4 of 7 straight to Step 6 of 7. The second step, Import, sits right after the welcome screen and before you have added a single service by hand: if you already keep your clients, sites, services or team in a spreadsheet, this is where you bring them in rather than typing them again below. Upload a CSV, match its columns to CleanFlo's fields, and check what will happen before anything is saved, importing the same file twice will not create anything twice. Import clients before sites, since a site is filed against a client. It is skippable like everything else, and the same importer sits under Settings → Data Import if you would rather do it later. The last step is the one that matters. It shows what you set up, then hands you to Stripe to start the 14-day trial. You can press I'll do this later, and the app tells you plainly what happens if you do: CleanFlo needs an active trial or subscription to open, so you will be asked again on the way in. > Skipping the wizard costs you nothing except the guided order. If you skip it, read on: the sequence below is the same one, done from the sidebar, and the dashboard grows a Getting Started card to keep score. ##### Do it in this order 1. Fill in your company details: Open Settings → Company and put in your business name, address, phone and VAT position. This is the block that prints at the top of every invoice and quote, so get it right before the first one goes out rather than re-issuing later. 2. Add your first client, then their locations: A client is who pays. A location is where you clean. They are separate records on purpose, because one client usually has several sites. Add the client from Clients, then add locations from that client's own page. 3. Price up what you sell: In Services, put in your standard cleans with a price and an estimated duration, and your extras as add-ons. Every clean, quote and invoice line is priced from this list. 4. Add your cleaners: From Staff, add each cleaner. They get an email with a way in, and from that point they can open the phone app and see whatever you assign them. 5. Book the first clean: In Schedule, press Add clean, pick the client, the location, the date, the service and the cleaner. That is the whole loop closed: the clean appears on their phone within seconds. > You can do the five steps in any order you like, but every one of them except the first is a picker that reads from the one before it. Doing them backwards means opening the same drawer three times. ##### Your company details Settings has seven sections down its side nav: Company, My Account, Notifications, and, folded behind a More sections disclosure on a phone, Modules, Billing, Data Export and Data Import. Company is the one that leaks out into everything your clients see. Its heading says as much: "Your business information shown on invoices and client communications." Modules is where you switch whole optional features, messaging, enquiries, your website, the client referral programme, on or off for your company; a module that is off hides its own settings here and its own item in the sidebar. The fields on Company open with a short list. Company name is the only required one. Company number and Contact phone are marked optional. Business address is one free-text line rather than split address, city and postcode boxes, so type it the way you want it printed. Number of cleaners is a plain count. Currency sets the symbol used on every invoice, quote and report, and defaults to the pound. Further down the same tab, sections for your payment link, client portal wording, lone-worker and late-start safety alerts and your written health & safety policy statement follow, day one only needs the fields above. (Settings, on the Company tab. Fill this in once. The name, address and VAT number here are what a client reads at the top of your invoice.) > Tick VAT registered and a VAT number field appears beneath it. That number then prints on your invoices, which is what makes them valid VAT invoices for your client's own records. There is no VAT rate box anywhere in Settings, and that is deliberate: service prices are stored inclusive of VAT, and the invoice works the tax back out of the total. Untick the box later and the stored number is cleared on save. Two things people go looking for on this tab and do not find. Your bank details and your invoice branding are not here: they live under Invoicing → Settings, with the invoice numbering and payment terms. And there is no logo upload on the Company tab at all. ##### Your first client and their sites Open Clients and press Add Client. The sheet that slides in is called Add new client and it is longer than you expect, because it also sets up what that client can see of themselves. Only the client name is required. Everything under Primary contact is who you ring when a key does not work. Tags are the useful bit and the bit most people skip: they are quick-reference notes that show up in front of the cleaner on their phone, chosen from seven presets, or typed as your own. (The Add new client sheet. Tags are the row that earns its keep: Key Holder and Alarm Code are read by the cleaner on site, not by you.) Save the client and you land back on the list. Now open that client and press Add Location, once for every site you clean for them. A location carries its own address, a property type of Home, Office, Holiday Let, Retail or Other, and its own access notes. Locations are what cleans are actually booked against, so a client with no location is a client you cannot yet schedule work for. > You do not have to enter your whole client book today. Add the two or three you clean for this week, get a clean on the calendar, then add the rest while the kettle boils. The Export CSV on the client list works from day one, so nothing you type here is trapped. ##### Services, prices and durations The sidebar calls it Services. It holds two kinds of thing: a Service is the clean itself, and an Add-on is an extra bolted onto one. Both are priced. Only a service carries a duration, because only a service takes up a slot in the day. Press Add Service and the drawer opens titled New service. Press Add Extra instead and the same drawer opens titled New add-on. The title follows the segmented control at the top, so it flips as you change your mind. (A new service. The price label carries the words "inc. VAT" because that is how the figure is stored: what you type is what the client pays.) The duration is not decoration. It is what the Add clean drawer pre-fills as the length of the booking, which is what decides how much of the week view a clean takes up and whether a cleaner is shown as busy at that hour. Guessing it roughly right on day one saves a lot of dragging later. Six or eight lines is plenty to start with. Every service has an Active switch, so retiring one later does not break the cleans and invoices that already reference it. ##### Your cleaners From Staff, press Add staff member. Before any of the name and email fields, the sheet asks a question: How should they get in? There are two answers and they suit different moments. - Set a password: You choose a temporary password and CleanFlo emails it to them. This is the default, and it is the right one when the cleaner is standing in front of you: you can read it out and watch them log in. - Send an invite: They get a link and pick their own password. Nothing to read out and no password sitting in an inbox. The link expires in 14 days, and until they accept it they show as pending on your team. (Adding a cleaner with credentials. The password block is headed with a warning that it is shown once, and it means it: nobody can read it back afterwards.) > The credential block is headed "Shown once, copy or send it now", and there are three buttons on the password itself: show, copy, and generate a new one. Once you close the sheet the password is gone from the screen for good. If it goes astray, the row's Resend Login action sets a new one and emails it. Either way the cleaner gets an email. It carries the address of the cleaner app and their way in, and that is the whole of their setup: no app store, no download, no licence to buy. They open the link on their phone and add it to the home screen if they want it to behave like an app. ##### The first clean, and what your cleaner sees Open Schedule and press Add clean, or click any empty slot in the week view to start one at that time. The drawer is long because a clean can carry a lot, but the first one only needs four sections: who, where, when and who is doing it. (The Add clean drawer, cut down to the four sections a first clean needs. The green badge beside the cleaner is a live availability check against everything else in their day.) Leave the cleaner blank and the drawer warns you: "No cleaner assigned: you'll need to assign one before this clean starts." The clean is still saved, and it turns up on the dashboard in Needs a Decision, badged Unassigned, until somebody is against it. Press Add clean and you are done. The cleaner does not need to refresh anything: the clean is on their phone next time it syncs, which is more or less immediately. (The same clean on the cleaner's phone, on a first day with a single line written into the book. The time sits in the left margin, the site name under the work, the ringed mark says the line still wants something from them, and the strip along the foot says whether the phone has managed to reach the server yet.) From there it is three taps on their side. They open the clean and press Start clean, which stamps the time they actually began. They tick the checklist as they work, add photos if there are any worth having, and finish with Complete clean. A sheet asks them to confirm, tells them how many checklist items are still unticked, and then the line loses its margin mark and takes a Done stamp instead, because a finished line no longer wants anything. On your dashboard it drops into Recent Activity with a Create Invoice button beside it, which is the loop closed. ##### The card that keeps score Until you have done the basics, the dashboard carries a Getting Started card under the welcome banner. It is a rocket icon, a progress bar and up to eight rows, and the line beneath the title counts you off: "2 of 8 complete". (The Getting Started card on a half-finished account. Each row is a link straight to the screen that clears it, and the ticks are read live from your data rather than from anything you press here.) The rows follow the order the work actually flows in: client and staff setup first, because nothing else can happen without them, then the sales pipeline, Publish your website, Log your first enquiry, Send your first quote, Schedule your first clean, Send your first invoice, and finally Add your first risk assessment as its own parallel track. Each row is a link to the screen that clears it, and a cleared row gets a filled tick and loses its arrow. Nothing here is a setting: the card counts the records in your account, so adding a client anywhere ticks the first row. The website and enquiry rows only appear at all if Your website and Enquiries are switched on for your company under Modules, and a row that cannot be completed is dropped rather than left sitting there unticked; every other row is always there. There is an X in the corner if you would rather not look at it, and the card retires itself for good once all four are done. It is also polite about loading: rather than flashing a skeleton at the top of your dashboard, it stays out of the way until it knows what it wants to say. **FAQs** Q: I skipped the setup wizard. Can I run it again? A: No, and you do not need to. The wizard is a guided path through screens that are all still in the sidebar, and it only runs while your company is marked as not yet set up. Work through Settings → Company, Settings → Data Import if you have anything to bring in, Clients, Services, Staff and Schedule in that order and you will have done exactly the same thing. Q: Do I have to add every client before I can book anything? A: No. A clean needs one client with one location and one service that exists. Add those three things and you can book. Most people put in the week ahead first and back-fill the rest of the client book over the following few days. Q: What does my cleaner actually receive? A: An email with the address of the cleaner app and their login. There is nothing to install: it opens in the phone browser and can be added to the home screen. If you chose Send an invite instead, the email carries a link that lets them set their own password, and you also get a copy of that link to send by WhatsApp or text if the email goes missing. Q: Where do I put my bank details so clients can pay me? A: Not in Settings. Your BACS details, invoice numbering, payment terms and invoice branding all live under Invoicing → Settings. The Company tab only holds the business identity: name, address, phone, company number and VAT. Q: Can I import my clients from a spreadsheet? A: Yes. The setup wizard's second step, Import, and Settings → Data Import afterwards, both open the same importer. Export works the same way: every list has an Export CSV button, and Settings → Data Export will hand you the lot as one file. URL: https://cleanflo.io/help/setting-up/ --- #### Finding your way around Where everything lives, so you stop hunting for it. The sidebar's six groups, the strip along the top, and the search palette that reaches every record in the business at once. Every screen in CleanFlo sits inside the same frame: a dark rail down the left, a thin strip along the top, and your work in the middle. Learn the frame once and every other guide gets shorter. There are only four pieces of navigation in the whole product, and none of them move. A sidebar holding every destination. A top bar holding search, theme, notifications and help. A command palette on ⌘K that goes anywhere without the sidebar. And, on a phone, a bottom bar that replaces the rail rather than shrinking it. (The frame, with Clients open. The rail marks where you are, the strip along the top is identical on every screen, and everything between them belongs to the page.) ##### The sidebar, in six groups The rail is dark, 240 pixels wide, and permanently on screen on anything wider than a tablet. The CleanFlo wordmark sits at the top, your account row at the bottom, and between them twenty-three destinations in six groups. The grouping is not decoration: it is the shape of the working day, running from what is happening now down to the money pipeline, the business behind it, compliance, and finally your own account. Money is the one group with named subgroups inside it, because it has two halves that are not the same thing. Group | What is in it | Why it is grouped that way No label | Dashboard · Schedule | Today. The two screens you open without thinking, so they get no heading and sit above everything else. Clients & Team | Clients · Messages · Staff · Locations Map | The people side of the business: who you clean for, talking to them and your team, who does the work, and every site you hold on one map. Money | Pipeline: Web Page · Enquiries · Site Surveys · Quotes · Invoicing · ReportsMoney out: Payroll · Expenses | Two named halves, and the seam is where work stops turning into revenue and money starts going back out. Pipeline runs in the order it actually runs: your public page brings somebody in, they become an enquiry, somebody goes and measures the site, that becomes a quote, becomes an invoice, becomes a line in a report. Money out is the ledger's other half, read against those same reports. Business | Services · Inventory · Equipment · Vehicles | What you sell, and what you use up, take out or drive to deliver it. Compliance | Health & Safety · Waste Transfers | The paperwork somebody else asks for: RAMS, incidents, audits and the compliance score they produce, and the duty-of-care record for anything you carry away. Account | Settings · Modules · Support | Yours rather than your business's. Deliberately last. Messages is the only row that ever changes. When somebody has written to you it grows a count on the right, and that count stops at "99+" rather than growing into the label. Below the nav sit two quiet links, Privacy and Terms, and below those the account row: your initials in a circle, your name, your company name underneath. Clicking it opens one item, Log out. There is no settings shortcut hidden in there and no account switcher. ##### The strip along the top Sixty-four pixels of translucent chrome, identical on every screen. Reading left to right: the search trigger, the page title, then three buttons in the corner. (The top bar on its own. The search box is a button, not a field: clicking it opens the palette rather than typing into the strip.) - Search everything…: A magnifier, the words, and a small keyboard badge reading ⌘K. Clicking it opens the command palette. It is a button rather than an input, so there is nothing to type into here. - Page title: The name of the screen you are on: Dashboard, Schedule, Clients. On a detail page a back control appears to the left of it, which is how you get out of a client or a clean on a phone. - Theme toggle: A moon in light mode and a sun in dark. Hover it and the tooltip reads Theme: Light or Theme: Dark, naming the setting rather than the button. It flips straight between the two, and your choice is remembered on that device. - Notification bell: A teal dot appears on it when something is unread. Clicking opens the dropdown described below. - Help: A question mark. It opens the guide written for the screen you are standing on, at cleanflo.io/help, in a new browser tab, never navigating you away from what you were doing. The theme toggle has no "system" setting, which is on purpose. CleanFlo stays light unless you have explicitly asked for dark, so a laptop that flips to dark at sunset does not flip the app underneath you mid-invoice. The help button is worth a try at least once. On Schedule it opens "Creating a clean". On Clients it opens "Adding a client". On Settings it opens "Your company details". It matches on the section rather than the exact page, so it still works from inside a client record. When there is no guide for a screen it opens the Help Centre's own front page instead of doing nothing. ##### The ⌘K palette Press ⌘K anywhere, or Ctrl+K on Windows, and a search box drops over the middle of the screen. Its placeholder is "Search clients, staff, cleans, inventory, services…", and that undersells it: it also searches incidents, audits, risk assessments and the help articles built into the app. It searches your whole workspace at once, not the screen you are on. Results arrive grouped, always in the same order, with up to five rows per group and a count beside each heading. (One query, four groups. The highlighted row is the one Enter would open, and the arrow keys move it.) The full set of groups, in the order they appear: Clients, Locations, Staff, Inventory, Cleans, Services, Incidents, Audits, Risk Assessments and Help guides. Each has its own colour, kept the same everywhere: clients are sky blue, locations amber, staff green, cleans teal. Help guides is the group people find by accident and then keep using. The guides themselves live at cleanflo.io/help, but the index CleanFlo searches is bundled into the app, so it answers instantly and works whether or not the rest of the query finds anything. (The same palette used as a manual. Typing a subject rather than a name brings back the Help guides, which open cleanflo.io/help in a new tab.) The box has three things to say before it has any results for you. - Before you type: A command glyph and the line "Type to search across your entire workspace". - While it looks: A spinner and the word "Searching…". Typing is debounced by a quarter of a second, so this only shows up if you have stopped. - When there is nothing: A magnifier and No results for "{query}", quoting back exactly what you typed. Once there are results, a footer appears along the bottom reading "↑ ↓ navigate · ↵ open · esc close", which is the whole keyboard contract. Arrow keys move the highlight, Enter opens the highlighted row and closes the palette, Escape closes it without going anywhere. There is also an esc badge inside the input itself, and an X to clear the query without closing. > The palette is the fastest way to open anything in CleanFlo. Not the sidebar, not a bookmark: ⌘K, three letters of the client name, Enter. It beats navigating for everything except the screens you already live on. ##### The bell The bell collects three different kinds of thing and keeps them apart with tabs: All, Emails, Notifications and Activity. Emails are messages CleanFlo has sent on your behalf. Notifications are push alerts. Activity is the log of who did what in your account. (The notification dropdown. The bold word in each line is the thing that happened; system alerts have no actor, so the line is just the event.) Each row is a coloured icon, a line of text and a time-ago stamp. The stamps go "Just now", then minutes, then hours, then days, and once something is more than a week old it switches to a plain date like "12 Aug". Colour follows the subject rather than the urgency: cleans are green, invoices amber, clients teal, inventory sky, staff blue, health and safety red. A Mark all as read link sits in the header, and it only appears when there is something unread, so an empty header means you are up to date. If nothing has happened yet the panel shows a bell and the words "No activity yet". One extra card can appear at the top of the panel, once. If your browser supports push alerts and you have not been asked yet, CleanFlo offers them here rather than firing a browser prompt at you unannounced: "Get clean alerts", "Know when a clean is assigned or finished, even with CleanFlo closed", and a Turn on button. If you have already blocked notifications at the browser level it says so instead, and tells you it is your browser settings that need changing rather than anything in the app. ##### On a phone Below 768 pixels the sidebar is not narrowed, it is switched off. What replaces it is a bar along the bottom of the screen with four items, sitting where your thumb already is. (The phone bottom bar. Three destinations and a way into the other thirteen. Messages carries a dot when something is unread.) Dashboard, Schedule and Messages are the three an owner opens standing in a car park between cleans. More opens a full-screen dark menu carrying the whole rail: a Search everything button at the top, then the same six groups in the same order with the same labels, then your account row and Log out at the foot. It is a full screen rather than a panel sliding in from the side, because on a phone the navigation is the screen while it is open. Tapping any row closes it and takes you there. So does the browser back gesture. ##### The offline banner A thin bar appears at the edge of the screen when the connection is doing something worth telling you about. There are exactly four states, and each one says a different thing. (All four states, in the order of how much they should worry you. Only the red one waits for you: the other three clear themselves.) - Failed: Red, and it outranks everything else because it is the only one that costs you work. Something was rejected when it reached the server and you will have to enter it again. It carries a dismiss X and waits for you to press it. - Syncing: A spinning arrow and a count of what is going up. Nothing is required of you. - Synced: "All changes saved", shown for three seconds after the queue empties, then gone. - Offline: The word on its own when there is nothing waiting, or with a count of queued changes when there is. You can carry on working: the writes queue on the device and go up when the signal comes back. > The red one is the one to read. "Syncing" and "Offline" are the app doing its clean. "Changes could not be saved" means a write was refused, and re-entering it is the only fix. It stays on screen until you dismiss it precisely so it cannot be missed. The banner never shows on the cleaner app. That half of the product has its own offline handling, drawn into the clean screens themselves rather than bolted along the top of them. **FAQs** Q: Is there a keyboard shortcut for anything other than search? A: Only ⌘K (or Ctrl+K), which works from any screen. Inside the palette the arrow keys move between results, Enter opens the highlighted one and Escape closes it. Settings also responds to arrow keys, Home and End when a tab is focused, which is the standard tab pattern rather than a CleanFlo shortcut. Q: Why does the theme not follow my computer? A: By design. The app is light unless you have chosen dark, and it does not read your operating system setting. A machine that switches to dark at sunset would otherwise re-skin the invoice you are halfway through writing. Q: Can my cleaners see the sidebar? A: No. Everything described here is the manager app. Cleaners get a phone app with tabs of their own: Cleans, History, My time, and Me, plus Messages when your company has the messaging module switched on. They cannot reach the clients list, the invoices or the settings at all. Q: The bell has a dot but the list looks the same as yesterday. Why? A: The dot counts unread items across all four tabs, and you may be looking at a filtered one. Switch to All, or press Mark all as read in the header, which clears the dot in one go. URL: https://cleanflo.io/help/navigating-cleanflo/ --- #### Reading the dashboard The dashboard answers one question: what needs me today. Every card on it explained in the order you meet them, including the ones that only appear when something is wrong. The dashboard is arranged as one question and its answer: what needs me today, then everything waiting on a decision. This is what each card on it is counting. Nothing on the dashboard is a setting and nothing on it is a report. Every card is a live read of something you can go and look at properly somewhere else, which is why almost all of them carry a link to the screen they came from. Read top to bottom, it goes in three tiers: today, the checklist, the four figures, the day's schedule beside the things you jump to most, then needs a decision, one merged list of everything waiting on you, then the standing record: compliance, concerns from site, and what your team has just finished. > This layout is a redesign (an internal note on the page calls it DR1). It used to be eleven separate cards stacked down the page, a schedule, an "Urgent Attention" panel, then five near-identical banners for client requests, accepted quotes, unbilled work and more, each with its own heading and no shared order. They are all still here, just folded into one ruled Needs a Decision list ordered by urgency instead of by the order they happened to ship in. (The top of the dashboard: the banner, the four readings, today's cleans on the left, Quick actions on the right.) - Welcome banner: Greeting, today's date, and a Schedule a Clean button. It stands in for a page title. - Getting Started: Only on a new account, and only until every milestone is met. Covered in Setting up in an afternoon. - Four stat cards: Revenue, Outstanding, Weekly Cleans and Active Staff, each with a sparkline and a change against the previous period. - Today's Schedule: Every clean dated today, in start-time order, with its cleaner and status. - Quick actions: Four links to the things people do most, beside the schedule. No logic behind them. - Needs a Decision: One merged, urgency-ordered list of everything waiting on you: unassigned cleans, open complaints, reschedule requests, client requests, at-risk clients, overdue invoices, unbilled work, accepted quotes and unread CleanFlo Support replies. Not there at all when nothing is waiting. - Compliance Score: The Health & Safety score out of 100, and what is dragging it down. - Concerns from site: What cleaners have flagged at the door check in the last 30 days, newest first. - Recent activity: The last few completed cleans, with a shortcut to invoice the ones that have not been. - Enjoying CleanFlo?: A one-off review ask a few days after signup. Gone for good once you submit one or dismiss it twice. ##### The banner at the top A dark teal band with your first name in it. The greeting is decided by the clock on your own machine: Good morning before midday, Good afternoon before five, and Good evening after that. If CleanFlo does not know your name it says "there", which is worth fixing under Settings → My Account. (The same banner at half past six. The date beside the greeting is the app's clock, and it rolls over at midnight rather than pinning itself to whenever the tab was opened.) The date underneath is the long form: weekday, day, month, year, then a middle dot and the line "Here's an overview of your business today." That date matters more than it looks. A dashboard left open overnight, which is how most owners use it, re-reads the date at local midnight and again whenever you come back to the tab, so the cleans listed underneath are genuinely today's and not yesterday's. ##### The four figures across the top Four cards, each with a label in small caps, a large figure, a percentage change with an arrow, and a caption saying what the comparison is against. Each also carries a sparkline of its own history and a coloured rule along the top. - Revenue · last 7 months: The total of your paid invoices over the last seven calendar months. Not lifetime revenue, and the label says so: the sparkline underneath has always drawn those seven months, and the headline now agrees with it. The change is this month against last month. - Outstanding: Everything invoiced and not yet paid: invoices at sent or overdue. This one is deliberately not date-bounded, because an invoice raised eight months ago and still unpaid is still owed. It carries no percentage change at all, a debt figure and a "less owed than last month" comparison used to be printed together and could flatly contradict each other. The caption says what the debt is made of and how long it has been waiting instead: a count of unpaid invoices, and, once the oldest of them has been sitting for more than a day, "· oldest N days". With nothing outstanding it simply reads "Nothing outstanding". - Weekly Cleans: Cleans marked done in the current calendar week, Monday to today. Compared against the same count last week. A Monday morning therefore reads low, which is arithmetic rather than a bad week. - Active Staff: How many cleaners are on your team and not deactivated. Like Outstanding, it carries no percentage change, because a headcount that moves weekly is not a trend. (What the sparkline under Revenue is drawing: paid invoices bucketed into the last seven calendar months, oldest on the left.) > The four cards load as one. They share a single read, so a fast query can never make a slow one look like a zero: either all four figures are real or all four are still a skeleton. If the read fails you get one error across the whole row with a Try again, not four cards quietly reading nought. ##### Today's Schedule Every clean dated today, in start-time order, with a View Calendar link in the corner. The sub-line names the day: "Cleans scheduled for Thursday 13 Aug". Each row runs time, then clean, then status. The time is in the left margin in Courier, as a fixed column, so the list can be scanned straight down. Underneath the job title sits the cleaner's name, and the pill on the right is the clean's status in the app's standard four: scheduled, in progress, done, cancelled. A clean with no start time keeps the column and fills it with a dash, so the margin stays a straight line. This card is a read of the schedule, not a control for it. You cannot drag a clean here or change its status: clicking through to Schedule is how you do either. ##### Quick actions Beside the schedule rather than at the foot of the page. Four rows with no cleverness behind them, headed "Jump directly to common tasks": Schedule a Clean, Add new location, Add a Client and Invite Staff Member, each a plain link to the screen that does it. ##### Needs a Decision Everything on the dashboard that is waiting on you to look at it and act, as one card headed Needs a Decision with a count beside the heading. It is not there at all when every category genuinely has nothing to say, never because one of its reads is still loading or failed silently. Each row is a coloured status badge on the left, the thing itself, and a button that takes you straight to it. Rows are ordered by how urgently they want you, not by category: an unassigned clean first, since a client may simply not be covered today; then an open complaint; then a pending reschedule request or a client's own new-work request, both a client waiting on a scheduling decision; then a client who has gone quiet; then money already late; then work completed but not yet billed; then a quote somebody has accepted; and, last of all, an unread reply on a CleanFlo Support ticket, real, but never the thing that goes wrong on-site if it waits another hour. - Unassigned: A scheduled clean, today or later, with nobody assigned. Assign takes you to that clean on the schedule. - Complaint / Complaints: Unresolved complaints on file, whichever client raised them or however they were logged. View Client or View Clients. - Reschedule: A client has proposed moving one of their own upcoming cleans through the portal. Review opens that clean's detail drawer, where you approve or decline it. - Request: A pending clean request from a client portal. Convert to Clean carries it into the schedule as a real booking. Nothing here at all if client portals are switched off. - At Risk: One or more active clients who have gone quiet against their usual booking pattern. View Clients opens the client list filtered to them. - Overdue: Invoices at sent or overdue that have passed their due date, with the total owed. Chase Now goes to Invoicing. The same predicate drives the Invoicing badge in the sidebar, so the two never disagree. - Unbilled: Completed cleans never invoiced, with their combined value and, once one has waited more than a day, how long the oldest has been sitting. Invoice Now opens Invoicing's batch-run tab directly. - Accepted: One or more quotes moved to Accepted since you last opened Quotes, by you, or by a client from their email link, and not yet acknowledged. View Quote or View Quotes. The same "not yet looked at" count also badges Quotes in the sidebar, and both clear together. - Reply / Replies: CleanFlo Support has replied to one of your own tickets and nobody here has read it yet. Read Reply opens it directly when there is only one; several open the tickets list instead. (Needs a Decision with four rows waiting: an unassigned clean, an overdue invoice, unbilled work, and an accepted quote, each with its own badge, its own line, and its own button.) The line under the heading is not a fixed subtitle, it is a reading of the card itself, and it changes every time the card does. It counts the urgent ones first because that is the number that changes what you do next, then everything waiting, then how old the oldest one is once it has been sitting for a day or more: 1 urgent · 4 waiting on you · oldest 6 days old. A card with nothing urgent on it simply drops the first part. ###### Sorting, filtering and finding one Beside the heading is Sort with two words rather than a dropdown, because the choice is binary, it gets changed often, and a menu would hide which one is in force. Newest puts the most recently arrived first. Priority uses the urgency order described above. Whichever you pick is remembered the next time you open CleanFlo. Under that is a row of chips: All first, then Urgent when some but not all of the rows are urgent, then one chip per area that actually has something in it, from Schedule, Money, Clients, Team and CleanFlo. Each carries its own count. An area with nothing waiting has no chip, so the row never offers you a filter that leads to an empty list. Once there are eight or more rows a search box appears beside the chips, placeholdered Search these items. Below eight it is furniture rather than a tool, so it is not drawn. The list itself also stops at eight, with Show 6 more under it and Show fewer once it is open. > The filter is deliberately not remembered between visits, and only the sort order is. This card's whole promise is that nothing waiting on you is missing from it, and a filter chosen last Tuesday that quietly hid a category today would break exactly that. Filter to a chip and search freely: next time you open the dashboard you are back on All. Filtering to nothing gives you Nothing here matches that. and a button reading Show all 14 with your own number in it, which is the way back rather than a dead end. > A card that hides itself when empty is a card you can trust. If Needs a Decision is on your dashboard, somebody or something is waiting on you. It never hides because a read failed, only because every category genuinely has nothing to say. ##### Compliance Score A number out of 100 in a ring, with a sentence beside it, and a Health & Safety button in the corner. The sub-line says where it comes from: "Live from your incidents, audits and risk assessments". It is not a separate calculation. The card imports the same arithmetic the Health & Safety page runs, so the two can never disagree. The ring shows the figure on its own, coloured by band: good at 90 or more, warn from 70, and bad below that. Beside it, one of three verdicts. - Not started: Shown when you have logged no incidents, no audits and no risk assessments. The ring reads as a dash rather than 100, because a company that has recorded nothing scores full marks by arithmetic and printing that would be telling you that you passed an inspection you never sat. The line underneath is "Log an incident, schedule an audit or write a risk assessment and your score appears here." - Nothing outstanding: You have records and none of them need anything: "No open incidents, no overdue audits and no high-risk assessments." - {n} things need attention: One or more categories are costing you points, listed as chips underneath. The chips are Unresolved incidents, Overdue audits, Unmitigated risk and Assessments past review, each with a count, each a link into Health & Safety. A single one reads "1 thing needs attention". (The same tile in its two working states. The chips are counts of records, so each one is a link to a list you can go and clear.) > The score is a management tool, not a certificate. It tells you whether your own records are in order: incidents closed, audits done on time, risk assessments reviewed and mitigated. It does not report anything to anybody, and it is not a substitute for the assessments themselves being suitable and sufficient. Compliance sits below Needs a Decision rather than above it, paired side by side with Concerns from site, and that placement is deliberate. Both are a standing figure an owner checks on rather than a decision waiting for them, so they read after the things that do. ##### Concerns from site Beside Compliance Score, a card headed "Concerns from site" with the sub-line "From the door check, newest first". Every cleaner starts a clean with a pre-start door check, and if they flag a concern there, anything from a broken lock to something that feels unsafe, a push alert fires immediately. That alert is built for urgency, not memory: dismissed on a lock screen at six in the morning, it is gone by lunchtime. This card is what makes the same note survive the rest of the day. Each row is the cleaner's own note, then who raised it, at which clean, and how long ago. It looks back 30 days and shows up to ten. A cleaner who has since left the team is not erased from the record: their note still shows, credited to "A former team member" rather than disappearing with their profile. When nothing has been flagged in the last month it reads "No concerns raised in the last 30 days." > The same rows that land here also go out in the morning's Daily Briefing email, for the same reason: a concern raised before sunrise deserves to still be visible once the office day actually starts. Full width, below Compliance Score and Concerns from site. Recent activity is the last five cleans your team has marked as done, newest first, drawn as a timeline with a dot and a connecting line. Each row gives the clean, then "Clean completed" and, where the clean has one, "by" the cleaner's name in bold, then a timestamp. The timestamp is written to be unambiguous, because this list is not filtered by date. Something finished today shows a bare clock time. Yesterday shows "Yesterday 14:32". Anything older carries its date, as "12 Aug 14:32". A clean with no timestamp at all gets none rather than printing nonsense. (Recent activity, full width. The Create Invoice button only appears on cleans that have not been invoiced yet, which turns the timeline into a short billing list.) The dot on the left of each row changes colour once the clean has been billed, so a glance down the column tells you what is still to invoice. The Create Invoice button appears on the rows that have not been, and takes you to Invoicing. When there is nothing yet the card says "No recent activity" and "Completed cleans will appear here once your team starts checking in." > Two things on this page carry work rather than information: an unassigned clean or anything else waiting on you in Needs a Decision, and a finished clean with no invoice against it in Recent activity. If you only read two things on this page, read those. ##### The review card Right at the foot of the page, below Recent activity, a card headed "Enjoying CleanFlo?" can appear a few days after you sign up, asking for a quick review with an optional star rating, a written quote, and a tickbox offering to feature your name and website on CleanFlo's own landing page. It is a marketing ask, not an operational alert, which is why it sits last and off the path of anyone scanning the page for what needs them today. It never reappears once you have submitted a review, and it stops asking for good after you press Maybe later twice. If you do submit one, the card is replaced with a short thank-you rather than disappearing outright. **FAQs** Q: Why does Revenue not match my accounts? A: Because it is not lifetime revenue. It is the total of invoices marked paid over the last seven calendar months, which is the same window the sparkline draws. Anything still at draft, sent or overdue is in Outstanding instead, and anything paid more than seven months ago is not counted here at all. Q: Weekly Cleans looks far too low on a Monday. A: It counts cleans marked done from Monday up to today, so on a Monday morning it is counting a few hours. The comparison underneath is against the same count for the whole of last week, which is why the arrow often points sharply down early in the week and recovers by Wednesday. Q: My Compliance Score says "Not started" but I have no incidents to report. Is that bad? A: It is not a mark against you, it just means there is nothing to score. The card needs at least one incident, audit or risk assessment before it will show a figure, because scoring 100 out of 100 on an empty file would be meaningless. Writing a single risk assessment for one of your sites is enough to bring it to life. Q: Can I reorder or hide the cards? A: No. The dashboard is a fixed layout. Needs a Decision hides itself entirely when every one of its categories has genuinely nothing to show, Getting Started retires once every milestone is complete or you dismiss it, and the review-ask card stops appearing after you submit a review or dismiss it twice. Q: The page was open all night and the date is wrong. A: It should not be. The dashboard re-reads the date at local midnight, and again whenever you switch back to the tab, precisely because a laptop asleep overnight fires no timers. If the banner and the schedule ever disagree, refresh once and both will be reading the same day again. Q: I remember separate cards for Urgent Attention, Client Requests, Accepted Quotes and Unbilled Work. Where did they go? A: Folded into one card, Needs a Decision, ordered by urgency instead of stacked as separate banners. Nothing was removed, an unassigned clean, a client request, an accepted quote and unbilled work are all still there as rows in that one list, alongside newer rows for open complaints, reschedule requests, at-risk clients, overdue invoices and unread CleanFlo Support replies. URL: https://cleanflo.io/help/the-dashboard/ --- #### Your plan and your bill CleanFlo is £19.99 a month whatever size you grow to, after 14 days free. Where your plan lives, what the Stripe portal handles, and what actually happens if a payment fails. CleanFlo is one price with one plan behind it. There are no tiers to compare and no per-cleaner maths to do, so this guide is mostly about the four or five moments when billing actually asks something of you. £19.99 a month. That is the whole price list. It covers unlimited staff, unlimited clients and unlimited locations, every feature in the product, and the cleaner app in all 27 of its languages. Adding your fourth cleaner costs the same as adding your fortieth, which is deliberate: charging you more for growing is the thing this product exists to argue against. ##### What you are paying for There is one plan and no plan picker anywhere in the app. Everything in the sidebar is included from day one: scheduling and dispatch, clients and locations, staff time tracking and the mobile app, invoicing with VAT, health and safety, reports, inventory and support. Nothing is held back behind a higher tier, because there is no higher tier. The figure does not move with the size of your team. When CleanFlo sends you to the checkout it asks Stripe for one subscription at one price, quantity one, and there is no seat count in it. Deactivating a cleaner does not reduce your bill and adding one does not raise it. Thing people expect to be charged for | What it actually costs Each cleaner you add | Nothing. The price is per company, not per person. Each client or location | Nothing, and there is no cap on either. The cleaner phone app | Included. There is nothing to buy from an app store. Client portals | Included, however many clients you switch them on for. Sending invoices, quotes or the two-week schedule email | Included. Exporting your data as CSV | Included, and available on every list. ##### The 14-day trial Every new company gets 14 days free with full access. Nothing is limited during the trial: it is the whole product, not a sample of it. The 14 days start with no card at all, and we ask for one as the trial comes to an end. The last step of the setup wizard is where the 14 days begin, and nothing else is asked of you until they are nearly over: we email you three days before the trial ends, and again the day before, so nothing is ever charged without telling you first. (The last step of the setup wizard. It states the three facts that matter about the trial before the button, not after it.) You can press I'll do this later on that step, and the wizard tells you what that means: "CleanFlo needs an active trial or subscription to open, so you'll be asked again on the way in." The app does not run on an account with neither. > The trial is granted once per company, ever. A subscription that lapses, fails or is cancelled and then restarted picks up at £19.99 a month straight away: there is no second free trial, and the app says as much on the screen where you restart. The checkout accepts promotion codes, so if you have been given one there is a box for it on Stripe's page rather than anywhere in CleanFlo. ##### Settings → Billing Everything about your subscription lives on one section. Open Settings and pick Billing. Billing is not one of the sections that folds away behind "More sections" on a phone, a failed payment is the one thing in Settings somebody arrives in a hurry to fix. The heading reads "Billing & Subscription" and the sub-line "Manage your CleanFlo subscription and payment details." (Settings on the Billing tab, mid-trial. One card, one button, and a line telling you the date the free period ends.) The card itself is short: the plan name, the price, and a badge on the right saying where the subscription stands. Underneath, one line of context that changes with the badge. (Every state the badge can be in. The two red ones are the only ones that stop the app from opening.) - Free Trial: The line underneath reads "Free trial ends 13 September 2026. You won't be charged until then.", with the real date in your own long format. - Active: Reads "Next billing date: 13 September 2026." That date is your renewal, taken automatically. - Payment Failed: A red warning line: "Your last payment failed. Update your payment method to restore access." - Cancelled: A red line reading "Your subscription has been cancelled." - Unpaid / No subscription: Rarer states. Unpaid means Stripe has given up retrying; no subscription means nothing has ever been started against this company. There is one button, and which one you get depends on whether you have been through Stripe before. A company that has is offered Manage billing, which opens the Stripe portal in a new tab. A company that has not is offered Start free trial, which sends you to the checkout. > If pressing Manage billing appears to do nothing, it is almost certainly your pop-up blocker. CleanFlo notices and says so: "Your browser blocked the billing portal. Allow pop-ups for this site, or open it here." The words open it here are a link that gets you there anyway. ##### What the Stripe portal is for CleanFlo does not store your card. It never sees the number. Everything to do with the payment method itself happens on Stripe's own hosted pages, which is what the fine print under the button means by "Billing managed securely by Stripe". CleanFlo's own fine print says what the portal is for: "Update payment methods, download invoices, or cancel your subscription from the billing portal." So it is where you change the card on file, pull off the receipts Stripe has issued you for CleanFlo itself, and cancel. When you are finished it returns you to Settings → Billing. Note the two things that are not in CleanFlo: there is no in-app cancel button, and there is no invoice history table on the Billing tab. Both live in the portal, on purpose, because they are Stripe's records rather than ours. > Only the company owner can reach billing. The cleaners on your team have no billing screen, and the endpoint behind Manage billing refuses them outright rather than merely hiding the button. ##### Referring another cleaning company If your company has the referrals module switched on, a second card sits below the plan card on the Billing tab, headed Refer another cleaning company: "Know another company who'd get value from CleanFlo? Share your code: they get 10% off when they subscribe." This is a different thing from the Client referral program under Settings → Company, which is your own clients referring their friends to you. This one is you referring CleanFlo itself to another cleaning business. The code is not issued at signup. It is created the first time you open this card, with a button reading Get my referral code. Once you have one it sits in the card in monospace with a Copy code button, and the line underneath spells out the deal: "They enter this at checkout, 10% off their first month." The card, and the module it belongs to, disappears entirely for a company that has referrals switched off, rather than showing a button that would only fail. ##### If a payment fails Cards expire and banks decline things. When a payment fails, three things happen and none of them involve deleting anything. - The badge on Settings → Billing turns to Payment Failed, and a red warning line appears under the plan card. - Access to the app is paused. Only a subscription that is trialing or active opens CleanFlo, so the next time you sign in you land on a payment screen instead of the dashboard. - Your cleaners see a plain notice rather than a bill. Their screen reads "Access suspended" and tells them to contact their manager. (The Billing tab with a failed payment. The plan card is unchanged apart from the badge and the red line, and Manage billing is still the way out.) The screen you land on when you sign in is headed Payment required, and it says exactly what the situation is: "Your last payment failed. Update your payment method to restore access, your data is untouched and waiting." The button reads Update payment method, and underneath it a line tells you where it goes before you press it: the Stripe billing portal, to change the card on file and retry the payment. (The screen a failed payment puts you on. It is a door rather than a wall: one button, and it goes to the Stripe portal.) > Nothing is ever deleted for non-payment. Access is paused, not withdrawn. Your clients, cleans, invoices, risk assessments and photographs are exactly where you left them, and they come back the moment the payment goes through. Fix the card and the app opens again on its own. Stripe tells CleanFlo the subscription is healthy, usually within a couple of seconds, and the paywall stops appearing. There is nothing to email us about and nothing to reactivate. ##### Cancelling You can cancel at any time, and you do it in the Stripe portal: Settings → Billing → Manage billing, then cancel there. No notice period, no phone call, no retention conversation. Cancelling does not cut you off that afternoon. The subscription runs to the end of the period you have already paid for, and CleanFlo only marks it Cancelled when Stripe reports that it has genuinely ended. Until then everything works normally. Cancel during the trial and you are never charged at all. After that, the app stops opening and shows you a screen headed Subscription ended, offering to resubscribe at £19.99 a month. Your records stay exactly as they were. If you come back a year later, everything is still there. Before you go, take your data with you. Every list in CleanFlo has an Export CSV button, and Settings → Data Export will hand you the whole lot: clients, locations, cleans, invoices, staff and services, either one table at a time or as a single combined file. (Settings → Data Export. Six tables, one button each, and one that fetches all of them into a single file.) > The Data Export tab exists for a reason beyond convenience. Its own heading says so: "Download your data as CSV files. This fulfils your right to data portability under GDPR." The files are plain CSV and open in Excel, Google Sheets or anything else, and the export is available for the whole time your subscription is live rather than only on the way out. One thing worth separating in your head: the £19.99 you pay us has nothing to do with the VAT settings on your own invoices. Your VAT registration, your VAT number and the tax on the invoices you send your clients are all configured under Settings → Company and Invoicing → Settings, and none of it changes what CleanFlo charges you. **FAQs** Q: Do I need to enter card details to start the trial? A: No. The 14 days start with no card at all, and we ask for one as the trial comes to an end. We email you three days before that and again the day before, so nothing is ever charged without warning you first. Q: Does the price go up as I take on more cleaners? A: No. It is £19.99 a month for the company however many cleaners, clients or locations you have. There is no seat count in the subscription at all, so nothing about your team size can change the figure. Q: Where do I get a receipt or a VAT invoice for CleanFlo itself? A: In the Stripe billing portal, reached from Settings → Billing → Manage billing. Stripe holds the payment history and issues the documents, which is also where you change the company name and billing address that appear on them. There is no invoice history table inside CleanFlo. Q: What happens to my data if I stop paying? A: Nothing is deleted. Access is paused until billing is resolved and everything is exactly where you left it when you come back. You can also export your clients, locations, cleans, invoices, staff and services as CSV at any point before you go. Q: I cancelled by mistake. Can I get my trial back? A: You can restart the subscription at any time from the same screen, but the free trial is granted once per company. Billing restarts at £19.99 a month straight away. If you think a subscription is already active and you are being asked to pay again, contact us before paying rather than paying twice. URL: https://cleanflo.io/help/plans-and-billing/ ### Scheduling & cleans #### Using the calendar The four calendar views, the week navigation and what its labels mean, the summary strip, the week grid and its now line, quick booking from an empty slot, and the right-click menus. Schedule is the screen you will have open most of the day. It is the same set of cleans drawn four different ways, and the view you pick decides how much of the week you can see at once. Every clean in CleanFlo lives on this one calendar. There is no separate diary for domestic rounds and contract work, and no second list for cleans nobody has been put on yet. The filters are the views: pick the span of time you want to look at and the grid redraws around it. Open it from Schedule in the sidebar. What loads first depends on the screen you are on: agenda on a phone, week on a desktop. That is read once when the page opens, so switching away from it deliberately is not undone by the next render or by turning the phone sideways. ##### The four views The view switcher sits in the top right of the page header, next to Add clean. Four tabs, always in the same order. - Agenda: The week as a list, one section per day. The default on a phone, and the only view that is readable on one. Days with nothing on them collapse to a single line. - Day: One column of hours. Use it when a day is busy enough that seven columns squeeze the clean titles into nothing. - Week: Monday to Sunday across the top, hours down the side. The default on a desktop and the one most owners live in. - Month: Whole month, no times. Coloured dots per day rather than clean titles, so it answers "how busy is the back half of August" rather than "what is on at two". (The Schedule in week view. Page header and its four actions across the top, the week navigation under the title, the summary strip, then the grid with today highlighted and the red now line running through it.) ##### Moving around the calendar Under the page title there are four controls in a row: a left caret, the label for whatever you are looking at, a right caret, and a Today button. The carets move by whatever unit the current view uses, so the same arrow steps a day in Day view, a week in Week and Agenda, and a month in Month. The label between them is written differently for each view. View | Label reads | Example Day | Weekday, day, full month, year | Thursday 13 August 2026 Week and Agenda | The Monday and the Sunday of that week | 10 – 16 Aug 2026 Month | Full month and year | August 2026 A week that runs across a month boundary spells both months out, so the last week of August reads 31 Aug – 6 Sep 2026 rather than hiding the join. Today jumps straight back to the current date in whatever view you are in, which is the quickest way out of having clicked forward eleven weeks looking for something. > The week starts on Monday, everywhere. Day columns, month cells and the agenda all run Mon to Sun, and the week label always names the Monday first. ##### The summary strip The strip under the view tabs counts whatever is currently loaded, which means it recounts every time you move the calendar. The first number is the total, and its label changes with the view: Cleans today in Day view, Cleans this week in Week and Agenda, Cleans this month in Month. After it come four counts with a coloured dot each: Completed in green, In Progress in amber, Upcoming in sky blue and Cancelled in red. A fifth appears in teal only when there are client portal requests waiting: Requests, and clicking it opens the Client Requests panel rather than filtering anything. Over on the right of the same strip is the legend: four dots labelled Scheduled, In Progress, Done and Cancelled. It is a key to the colours on the grid, not a filter. Nothing on the summary strip is clickable except Requests. > A clean with no cleaner on it still counts as Upcoming, because its status is genuinely "scheduled". Unassigned is worked out from the empty staff field rather than stored as a status of its own, so it never appears in these counts. The place that chases those is the Needs a Decision list on the Dashboard, where an unassigned clean is the first thing listed. ##### Reading the week grid Down the left is a 56px time gutter set in Courier, one label per hour, written as 7am through 12pm and on to 7pm. Across the top, each day carries its short name, its date number, and a count reading 3 cleans. A day with nothing on it shows no count at all rather than a zero. Today's column is tinted so it stands out from the rest of the week, and a thin red line with a dot on it sits at the current time and moves as the day goes on. Two cleans booked over each other split the column between them rather than one hiding the other. Each clean is a chip coloured by status, with a dot, the clean's title, and the cleaner's name underneath when the chip is tall enough to hold it. A chip with nobody on it says No cleaner next to a warning triangle instead. ###### Hours outside the working day The grid does not draw all twenty-four hours by default. It measures the earliest start and the latest finish in the range you are looking at, adds an hour of headroom either side, and draws that window. A week of nine-to-fives is therefore about ten rows tall rather than twenty-four, and the day fits on screen without scrolling. When there is more clock above or below the window, a button appears in its place: Show earlier hours above the grid, Show later hours below it. Either one opens the full day. Once you are looking at the full day a third button appears, Back to working hours, which puts the window back. The choice resets whenever you move to another week, so one week that needed a 5am start does not leave every following week showing empty small hours. (The three reveal buttons. Only one or two are ever on screen at once: the first two appear when the grid has clipped part of the clock, the third only once the whole day is showing.) ##### Booking straight off the grid You do not have to open Add clean to book something. Click any empty slot in the week or day grid and the Add clean drawer opens with that date and that hour already filled in. It is the fastest way to book, and it is why the grid is worth keeping in front of you while you are on the phone to a client. Right-clicking gives you a short menu. What is in it depends on what is under the pointer. (Right-clicking empty grid. In week and day view the first item names the exact time you clicked, snapped to the nearest quarter hour; in month view it names the date instead.) On empty grid the menu offers Add clean at 10:15am, a divider, then Go to Today. The time is worked out from where in the hour row you clicked and snapped to fifteen minutes. In month view there are no hours to read, so the first item becomes Add clean on 14 Aug and the clean defaults to 09:00. (Right-clicking a clean chip. Delete Clean is set in red and asks for confirmation before anything happens.) On a clean chip the menu is View Details, Edit Clean, a divider, then Delete Clean in red. View Details opens the read-only Clean details drawer; Edit Clean goes straight into the form. Left-clicking a chip does the same as View Details. > Deleting asks first: Delete this clean? This cannot be undone. with a red Delete Clean button. There is no bin and no undo. If the work is simply not happening, set the clean to Cancelled instead: it stays on the calendar, keeps its history, and the cleaner gets told. ##### Month and agenda Month view draws Mon to Sun across the top and a cell per day, greying out the days that belong to the months either side. Each cell carries its date number and, underneath, up to four coloured dots, one per clean, in that clean's status colour. A fifth clean and beyond collapse into a small counter, so a day with seven cleans shows four dots and +3. Clicking a cell drops you into Day view for that date. Right-clicking one gives you the same context menu as the grid, with Add clean on 14 Aug at the top. (August 2026 in month view. Today is ringed, the surrounding month's days are greyed, and the 17th has more cleans than it has room for dots.) Agenda view drops the grid entirely and lists the week. Each day with work on it gets a heading of the day name, the date number, a count reading 3 cleans and a plus button that books onto that day. Under the heading, one row per clean: the time as a range, the job title, the location underneath, then the cleaner's name and the status pill along the bottom. A clean with nobody on it says Unassigned in that footer. A day with nothing booked does not get a heading and a blank space. It gets one ruled line reading Nothing booked with a plus on the end, so a quiet week costs a few lines rather than several screens and the shape of the week is still legible. (Agenda view, the default on a phone. Thursday is the busy day; Sunday collapses to a single line you can still tap to book on.) ##### What an empty calendar says There are three different empty states and they are worth knowing apart, because they are telling you different things. A whole grid with nothing on it puts a card over the middle of it. The title follows the view, so it reads Nothing booked today, Nothing booked this week or Nothing booked this month, and underneath: Click any time slot to book a clean, or add one from here. Right-click the grid for more options. with an Add clean button. (The whole-grid empty state, which is also the only place in the app that tells you the grid responds to a right-click.) Agenda view has its own, because there is no grid to click on: Nothing booked this week over Add a clean, or use the arrows above to look at another week. and a button reading Add a clean. Day view, when the day is empty but the grid is drawn, simply prints No cleans scheduled for this day down the column. > Four views of one set of cleans, and no filters. Week on a desktop, agenda on a phone, month when you are planning cover, day when a single date is too busy to read. Click an empty slot to book, right-click for the rest. **FAQs** Q: Can I filter the calendar to one cleaner or one client? A: Not on this screen. The Schedule shows every clean for the range you are looking at. To see one cleaner's work in isolation, open their record under Staff; to see one site's history, open the location under Clients. If you want a cleaner to have their own list, use Send Schedule to email each of them their next fortnight. Q: Why does the grid start at 7am and not midnight? A: It measures the cleans in the range and windows itself to them, plus an hour either side. Nothing is hidden: Show earlier hours and Show later hours open the full twenty-four, and Back to working hours puts it back. The window resets when you move to another week. Q: Can I drag a clean to a different day or time? A: No. Cleans are moved by opening them and changing the date or start time, either from Edit clean in the right-click menu or from the Clean details drawer. Dragging would change a booking with no confirmation step, and a cleaner has usually already been told about it. Q: What are the coloured dots in month view? A: One dot per clean, in that clean's status colour: sky for Scheduled, amber for In Progress, green for Done, red for Cancelled. A cell shows at most four, then a counter such as +3 for the rest. Click the cell to drop into Day view and see them properly. URL: https://cleanflo.io/help/the-calendar/ --- #### Creating a clean The Add clean drawer end to end: templates, client and location, dates and duration, services and add-ons, the estimated price, the checklist, the cleaner, notes, and what happens when you save. A clean is the unit everything else in CleanFlo is built on. It is what a cleaner sees on their phone, what a checklist hangs off, and what an invoice is eventually raised from. This is the form that makes one. The Add clean drawer slides in from the right and is long enough to scroll. It has nine sections and only two of them are compulsory: you need at least one date and at least one service. Everything else can be filled in later by editing the clean. ##### Three ways to open it All three open the same drawer. The difference is how much of it is filled in when it arrives. - Add clean: The primary button in the top right of the Schedule. Opens an empty form, dated to whatever day you are looking at, at 09:00. - Clicking an empty slot: On the week or day grid. Opens the form with that date and that hour already set, which saves two fields and a mistake. - Right-click the grid: Gives you Add clean at 10:15am in week and day view, or Add clean on 14 Aug in month view. Times snap to the nearest quarter hour. The drawer is titled Add clean with Schedule a new clean underneath. Editing an existing clean gives you the same form titled Edit clean and Update clean details, minus the Repeat section and the ability to add extra dates. 1. Load a template, if you have one: Chips across the top of a new clean. One click fills in the duration, services, add-ons, checklist and notes. 2. Pick the client, then the location: Choosing a client narrows the location list to that client's sites. Choosing the location also names the clean. 3. Set the date, start time and duration: Add more dates with Add Another Date if the same clean runs on several days. 4. Add the services: At least one service or add-on, or the form refuses to save. The prices come from Services. 5. Write the checklist: The tasks the cleaner ticks off on their phone. Optional, but it is the difference between a clean and a checked clean. 6. Assign a cleaner: Or leave it and assign later. The availability badges tell you who is already booked at that time. 7. Save: The footer button says Add clean, and the toast says Clean created. The assigned cleaner is emailed and pushed straight away. ##### Template, client and location If you have saved any clean templates, the first thing in the drawer is Load template: a row of chips, one per template. Clicking one fills in the clean type, the duration, the services, the add-ons, the checklist and the notes in a single action. It does not touch the client, the location or the date, because those are the parts that are different every time. Templates only appear on a new clean, never when editing. Next is Client & Location. Both are ordinary dropdowns with an empty first option: , no client and , No location. Picking a client filters the location list down to that client's sites; picking a location before a client leaves every site in the list. When a location is selected, its address appears underneath it, and its access notes appear under that. > There is no title field. The clean takes its name from the location you pick, and its clean type from that location's property type: Home becomes residential, Office and Retail become commercial, Holiday Let stays a holiday let. Book a clean with no location and it goes onto the calendar as Untitled clean, which is not much use to a cleaner reading it on a phone. (The top of the Add clean drawer: template chips, then the client and location dropdowns with the selected site's address and access notes drawn underneath.) ##### When it happens The When section is a repeatable pair: a date and a start time, side by side. Below them, Add Another Date adds a second row, a third, as many as you need, each with its own X to take it away again. Every row you fill in becomes its own clean when you save. Use extra dates for work that is irregular: a holiday let being turned round on the three Saturdays somebody has booked, or a builder's clean spread over a Tuesday and a Thursday. For anything on a fixed rhythm, use Repeat in the section below instead. Extra dates only exist on a new clean: editing an existing one gives you a single row, because an edit changes that clean and not the eleven others it was created alongside. Underneath sits Duration (mins), in minutes, stepping in fifteens with a floor of fifteen. It defaults to 60. Duration is what makes the chip on the calendar the right height, and it is what the availability check measures overlaps against, so a two-hour clean entered as sixty minutes will happily let you double-book the second hour. After When comes Repeat, which is only offered on a new clean. It has its own guide: see Repeating a clean. (The When section with a second date added, the duration set to two hours, and the Repeat chips left on No repeat.) ##### Services, add-ons and what it is worth Services and Add-ons are the same control twice over. Each row is a dropdown with , Select at the top and then every item in your catalogue written as {name} · £{price}, a quantity box labelled Qty, and an X to remove the row. Under the rows, Add Service on the first, Add Add-on on the second. The split between the two is not cosmetic. Services are the work: a standard home clean, an office nightly. Add-ons are the extras billed on top: an oven, interior windows, a carpet shampoo. They price identically but they are tagged differently, and the tag follows the clean all the way onto the invoice. With nothing in your catalogue yet, the section prints a hint instead of a picker: No services set up yet. Add them in Services. and, on the add-on section, No add-ons set up yet. Add them in Services. Trying to save with neither filled in puts a red line under the Services section reading Pick at least one service or add-on. Estimated Earnings then adds it all up as you type. One row per service and per add-on, with a quantity multiplier when there is more than one and a small add-on tag on the extras. Below them, Additional charge marked inc. VAT, a plain pounds-and-pence box for anything the catalogue does not cover: a congestion charge, a skip, a one-off materials cost. Then the Total, also marked inc. VAT. (Services and add-ons priced from the catalogue, and the running total underneath. The total is what lands on the clean as its price and what the invoice is later raised against.) > Every price in CleanFlo is held inclusive of VAT, and the drawer says so twice so there is no doubt. Your catalogue prices are the prices your client pays. The VAT is separated out later, on the invoice, using your company VAT number from Invoicing → Settings. ##### The checklist and the cleaner Checklist is a list of plain text rows, each one placeholdered Step 1, Step 2 and so on, with Add Checklist Item underneath. These are the tasks the cleaner ticks off on their phone while they are on site, and they are what the count on the clean report is measured against. Keep them concrete: "Washrooms restocked" beats "Bathrooms". A clean with no checklist is perfectly valid. The cleaner app tells them so: No checklist for this clean, and they work through it as normal. But an empty checklist is also an empty clean report, and a client asking what was actually done gets a shorter answer. Staff holds one control, labelled Assigned Staff, and it starts on , Choose a cleaner later. Every cleaner in the list carries a live availability badge worked out from the date, time and duration you have just entered. Leaving it empty is allowed and puts a warning under the field: No cleaner assigned: you'll need to assign one before this clean starts. The whole of that is covered in Assigning a cleaner. (Checklist, cleaner and the collapsed notes control. The warning under the staff picker stays until somebody is chosen.) ##### Notes, and saving Notes are hidden until you ask for them. At the foot of the drawer there is a full-width Add clean Notes button; press it and it becomes a labelled Clean Notes textarea placeholdered Special instructions, access details, reminders… with a Remove link beside the label. Remove clears the text as well as hiding the box, so do not use it to tidy the form up. Clean notes go to the cleaner. They appear on the clean in the phone app under Clean notes, so they are the right place for "park on the road, not the drive" and the wrong place for anything about the client's billing. The footer holds two buttons: Cancel and the primary save. The save button renames itself to match what it is about to do. What you are doing | Button reads | While it works One new clean | Add clean | Saving… Several dates, or a repeat | Add 12 Recurring Cleans | Creating 12 cleans… Editing a clean that exists | Save changes | Saving… (The three states of the save button. The count in the middle one is the real number of cleans that is about to be created, worked out from the dates and the repeat pattern.) Two things stop a save. Miss the date and a red line appears at the top of the form reading At least one date is required; miss the services and it reads At least one service is required, with Pick at least one service or add-on. under the Services section itself. The form scrolls the message into view rather than leaving you looking at a button that appears to have done nothing. A successful save closes the drawer and raises a toast: Clean created for one, 12 recurring cleans created for a series, Clean updated for an edit. If a cleaner was assigned, a second toast follows once the email is away: Clean update notification sent to Aisha Nowak. > CleanFlo will not let you book the same cleaner over themselves. If the person you have chosen already has a clean overlapping this one, the save is refused with the clash spelled out: Aisha Nowak has conflicting cleans on: 2026-08-14. Change the time, change the cleaner, or leave it unassigned and sort it out on the grid. > A date and a service are the only things the form insists on. Everything else, including who is doing it, can be added afterwards. Pick the location though: it is where the clean gets its name from. **FAQs** Q: Can I book a clean without a client? A: Yes. Both the client and the location dropdowns have an empty option and the form saves without either. The clean will have no title and no address for the cleaner to work from, so it is only really useful as a placeholder you intend to come back and finish. Q: Where do the prices in the services list come from? A: From Services, which is the single catalogue every clean, quote and invoice is priced from. Changing a price there does not retro-fit it onto cleans that are already booked: the clean keeps the total it was saved with. Q: What is the difference between a service and an add-on? A: How they are catalogued, and how they read on the paperwork. Services are the clean; add-ons are the extras billed alongside it and carry an add-on tag on the clean, the estimate and the invoice line. Either one satisfies the "at least one service" rule. Q: Does the cleaner get told straight away? A: Yes, if one is assigned when you save. They get an email with the property, the address, the services and your notes, a push notification on their phone reading New clean assigned, and a line in their message thread with the office. Assign somebody later and the same thing happens then. Q: How do I copy a clean I have already booked? A: Open it and use Duplicate in the footer of the Clean details drawer. It opens a new Add clean form pre-filled with the same client, location, cleaner, services, checklist, price and duration, dated to the next weekday. URL: https://cleanflo.io/help/creating-a-job/ --- #### Repeating a clean CleanFlo writes out real cleans rather than storing a repeating rule, which is why you can edit one week without touching the rest. Weekly, fortnightly or monthly, ending on a count or a date. Most cleaning revenue is the same clean over and over: a weekly office, a fortnightly house, a monthly deep clean on a contract. Repeat books the whole run in one go. Repeat sits in the Add clean drawer, between When and Services, under a heading with a small looping arrow on it. It is only offered on a new clean. Open an existing clean to edit it and the section is not there at all, which is the first clue to how the feature works. ##### What Repeat actually does CleanFlo does not store "every Monday at nine until further notice" and draw it onto the calendar. It works out every date the pattern lands on and writes a real clean for each one, there and then, at the moment you press save. Book a weekly clean twelve times and you get twelve rows in the database, twelve chips on the calendar, twelve entries in the cleaner's app. That is a deliberate trade. It costs you a little when the arrangement changes, because there is no single rule to edit. It buys you a great deal the rest of the time: every clean in a series can be moved, repriced, reassigned, cancelled or invoiced entirely on its own without disturbing the ones either side of it. A client who wants their Monday moved to a Tuesday for one week in October is a two-field edit, not an exception rule. > A repeat is a shortcut for typing the same clean out fifty times. It is not a subscription, a rule or a template. Once the cleans exist they are ordinary cleans and nothing links them on screen. ##### Picking a frequency Four chips, one selected at a time. It starts on No repeat, and while that is selected the rest of the section stays hidden. (The frequency chips. Selecting anything other than No repeat reveals the end-mode chips and the summary line beneath them.) Chip | Steps by | Summary line says Weekly | Seven days | every week Fortnightly | Fourteen days | every 2 weeks Monthly | One calendar month | every month Weekly and fortnightly step in whole days, so a clean booked on a Monday stays on a Monday all the way through, including across the October clock change. Monthly steps by calendar month and keeps the date number, so the 3rd becomes the 3rd. Where the date does not exist in the next month it moves back to the last day that does: a clean booked on the 31st of January repeats on the 28th of February, then the 31st of March. > Monthly means the same date every month, not the same weekday. There is no "first Tuesday of the month" pattern. For a round that genuinely runs on the first Tuesday, book it fortnightly and accept the drift, or add the dates by hand with Add Another Date in the When section. ##### Telling it when to stop Once a frequency is chosen, two more chips appear: Number of occurrences and Until date. They are the same question asked two ways, and which one you use is usually decided by how the client's contract is written. - Number of occurrences: The default. Reveals a field labelled Occurrences, pre-filled with 12, minimum 2. Use it when the arrangement is counted: eight visits, a term, a season. - Until date: Reveals a field labelled Until, a date picker that will not let you choose anything earlier than the clean's own first date. Use it when the contract has an end date on it. (The Repeat section set to weekly, twelve times, starting on 18 August. The Courier line at the bottom is the drawer telling you exactly what pressing save will produce.) Switching to Until date swaps the count for a calendar. The pattern then runs to the last date on or before the one you chose, so a weekly clean from 18 August 2026 set to run until 31 December 2026 produces twenty cleans and finishes on 29 December: the last Monday that fits, not the date you typed. (The same section in Until date mode. The Until field will not accept a date before the clean's own first date, so an end date cannot land in front of the start.) > There is a hard ceiling of 260 cleans per save. An open-ended weekly contract set to run for five years will stop at 260 rather than filling your calendar to 2031. That is five years of weeklies, so it is rarely a real limit, but it is worth knowing it is there before you set an Until date a long way out. ##### Reading the summary line Under the fields, in small Courier print, the drawer states what it is about to do: - Creates 12 cleans is the real count, not an estimate. It is the same number the save button uses. - every week restates the frequency in words, so a mis-clicked chip is obvious. - starting 18 Aug 2026 is the first date in the When section. - ending 3 Nov 2026 is the last date the pattern actually lands on. The save button changes to match: Add 12 Recurring Cleans, then Creating 12 cleans… while it writes them, then a toast reading 12 recurring cleans created. Read the summary line before you press it. It is the only chance to notice that a stray keystroke turned 12 into 120. (Summary line and save button, which always agree with each other. Both are recalculated on every keystroke in the Repeat section.) > Repeat and Add Another Date multiply rather than clash. Two dates in the When section with a twelve-week weekly repeat produces 24 cleans, twelve from each date. It is the quickest way to book a site that is cleaned on both a Monday and a Thursday. ##### Using it for contract work This is what Repeat is for. A contract cleaning round is the same visit, at the same site, at the same time, for months at a stretch, and typing it out by hand is where scheduling mistakes come from. The practical shape of it: build the clean once with the right services, the right duration and the right checklist, save it as a template so next year's renewal takes a single click, then use Repeat to lay the whole term onto the calendar. From there the contract is just work on the grid like everything else. It counts towards the summary strip, it feeds the reports, and each visit can be invoiced on its own or rolled up. (September in month view with two weekly contracts running through it. Every dot is its own clean record: nothing on this screen knows or cares that they were booked in one go.) Assign the cleaner while you are booking the series and CleanFlo checks every single date for a clash before it creates anything. If any of them overlap work that person already has, nothing is written and you get the dates listed back: Marek Kowalski has conflicting cleans on: 2026-09-15, 2026-10-06. Either move those two cleans first or book the series unassigned and put people against it afterwards. > A cleaner assigned to a long series is emailed about it, but only for the first twelve dates. A push notification covers the whole batch in one line, and the fortnightly Send Schedule email is the thing that keeps them current after that. Nobody wants fifty-two separate emails about one contract. ##### Changing or ending a series Because the cleans are real and separate, there is no "edit this series" control and no "this and all following" prompt. Opening one clean and changing it changes that clean. The other cleans in the run are untouched. What that means in practice: - One visit moves: Open it, change the date or time, save. Nothing else in the run notices. This is the case Repeat handles best. - The price changes from January: You will have to edit each remaining clean, or delete the rest of the run and re-book it at the new price. Deleting and re-booking is usually quicker past about six cleans. - The contract ends early: Use Select in the Schedule header, click every remaining clean in the run, then Cancel on the bulk bar. They stay on the calendar as cancelled, and the cleaner is emailed and pushed about each one. - The contract was booked in error: Same selection, but Delete. That removes the cleans entirely and cannot be undone. > Bulk delete confirms with Delete 14 cleans? and This will permanently delete 14 cleans. This action cannot be undone. There is no restore. If there is any chance the work is only postponed, cancel rather than delete: a cancelled clean keeps its record, its price and its history. Selection mode is the tool for all of this. Turn it on, work through the weeks with the arrows selecting as you go, and the bulk bar at the foot of the screen keeps a running 14 cleans selected while you do it. **FAQs** Q: Can I add a repeat to a clean I have already created? A: No. The Repeat section only appears on a new clean. To turn a one-off into a regular, open it, use Duplicate from the Clean details drawer, and set the repeat on the copy. The original stays where it is. Q: What happens to a recurring clean when a bank holiday lands on it? A: Nothing. CleanFlo has no holiday calendar and will happily book Christmas Day. Book the series, then find the dates you do not want and cancel or delete them individually. Q: How many cleans can one repeat create? A: Up to 260 in a single save. That is the hard cap, and it applies whether you asked for a count or an end date. Five years of weekly cleans hits it exactly. Q: Do all the cleans in a series share anything? A: They are tagged with the same series identifier and the frequency they were created at, which is how the data knows they belong together. Nothing in the interface exposes it yet, so treat them as separate cleans. URL: https://cleanflo.io/help/recurring-jobs/ --- #### Assigning a cleaner The Assigned Staff picker and its live availability badges, what happens when a clean has nobody on it, how the Dashboard chases those, and reassigning a batch of cleans at once. Every clean can be booked without a cleaner and most are, at first. This is how you put a name against one, how CleanFlo warns you the person is already out, and how to fix a whole week of it at once when somebody calls in sick. Assignment in CleanFlo is one field. There are no shifts, no availability calendars to maintain and no rota to publish: a clean either has a cleaner's name on it or it does not, and the app works everything else out from the cleans themselves. ##### The Assigned Staff picker It is the last real section in the Add clean and Edit clean drawers, headed Staff, with one control labelled Assigned Staff. It looks like a dropdown but it is a custom combobox: it opens on click or on an arrow key, and once open the arrow keys move through it, Enter picks, Escape closes and Tab steps out. Unchosen, it reads — Choose a cleaner later —. That same wording is the first row inside the list, so choosing it again is how you take a cleaner off a clean. Every other row is one of your active staff, showing their name and, where they have one, their job title after a middle dot. One clean takes one cleaner. If two people are going to a site, book two cleans. That keeps the times honest, keeps both cleaners' schedules right, and keeps the field report attributable to a person rather than a pair. ##### Two cleaners with the same name It happens more often than you would think, and it used to matter here. A clean now records which person you picked, not the text of their name, so two staff called Guy Johnson are two separate rows in the picker with two separate diaries. Each one sees only their own work in the phone app, each gets warned about only their own clashes, and the job-assigned email goes to the one you actually chose. Renaming somebody keeps their history intact: their past cleans follow the new name rather than being stranded under the old one. Give them different job titles if you want to tell them apart at a glance in the list; the picker prints the title after the name. > Very old cleans, booked before CleanFlo recorded the link, may still carry only a typed name. Those show as normal but are not counted against anybody's availability, because the record genuinely does not say who they were. Open the clean and pick the cleaner again to attach it to a person. ##### The availability badges Opening the list triggers a live check. CleanFlo reads every scheduled and in-progress clean on the date you have entered, compares each one against the start time and duration in the form, and badges every cleaner with the result. While that read is in flight the list header says Checking availability…. (The badges, in the order you are most likely to meet them. Red is anything that will stop the save; amber is worth a look but will not; grey means CleanFlo does not know.) - Checking…: The date has been entered and the read is running, or no date has been entered yet so there is nothing to check against. Grey. - Unknown: The check failed. Hovering it says "Could not check for scheduling conflicts". Grey, and deliberately not green: a failed lookup must never claim everybody is free. - On leave: They have approved time off covering this date. Hovering it names the dates. Red, and the first thing checked: if somebody is both on leave and double-booked, the leave is what you need to know. - Booked 9:00am-11:00am: A real clash. This cleaner already has a clean that overlaps the hours you have typed, and the overlapping clean's times are named. Red. - Not working Tue: They set that weekday to unavailable in My time in the phone app. Red. A cleaner who has never opened My time has no availability on file and is never badged this way: silence is not a refusal. - Outside 9:00am-5:00pm: They do work that day, but the clean runs outside the hours they gave. Amber: this is a nudge, not a block, and the save goes through. - Busy 2:00pm-4:00pm: They have other work on that day, but none of it collides with this clean. The time shown is their first other clean. Amber. - Available: Nothing else booked that day at all. Green. Underneath a cleaner who has other work, the list prints what it is, as St Marks Medical Centre (10:30am-1:00pm), so you can decide whether the gap is really big enough to get across town. Once somebody is selected, their badge moves up onto the closed control and stays there while you finish the rest of the form. (The Staff section with the list open. The badges are recalculated whenever the date, the start time or the duration changes, so shortening a clean can turn a red badge amber in front of you.) > The badges are advice; the save is the enforcement. CleanFlo will refuse to save a clean that double-books somebody, whatever the badge said when you picked them. The refusal names the dates: Aisha Nowak has conflicting cleans on: 2026-08-14. It runs across every date in the form, so a twelve-week repeat is checked twelve times before a single clean is written. > The check reads three things: the cleans already booked that day, approved time off, and the weekly availability the cleaner set in their own app. It still does not know about school runs, or that somebody does not drive. Anything you want it to respect has to be in one of those three places. ##### Assigning somebody anyway Three of those badges stop a save: On leave, Booked and Not working. None of them is final. Sometimes the cleaner has phoned and offered to come in, and a system that simply says no is a system you work around by editing what they told you, which is exactly the record you would want six weeks later. So CleanFlo asks instead. The save is refused with the reason named in full, and a box underneath asking why you are doing it anyway. Answer it and the clean saves; leave it empty and the button stays greyed out. There is no way to record a blank reason, in the form or in the database behind it. (The override. The reason is stored on the clean, shown on the clean record, and shown to the cleaner in their own app: this is a record of a decision, not a way round one.) > The cleaner sees it. The reason appears on their clean in the phone app, in their own language, next to the clean it is about. That is deliberate: a note only the office can read is not a record, and the point of asking somebody for their availability is undone the moment it can be quietly ignored. > One badge cannot be overridden: Unknown. It does not mean the cleaner is busy, it means the check did not run, and there is nothing to overrule. Close the drawer, reopen it, and try again. ##### Leaving a clean unassigned This is a legitimate way to work, and for a lot of owners it is the normal one: book the work as it comes in, then sit down on a Friday and put people against next week. CleanFlo does not fight it, but it does keep reminding you. Leave the picker empty and an amber warning appears under it, in the drawer, immediately: No cleaner assigned: you'll need to assign one before this clean starts. It stays there until somebody is chosen. The clean saves perfectly well with it showing. After that, an unassigned clean announces itself in four places. Where | How it shows Week and day grid | The chip says No cleaner next to a warning triangle, where a cleaner's name would be Agenda view | The footer of the row reads Unassigned instead of a name Clean details drawer | The staff row reads Unassigned in red Dashboard | The clean is listed in Needs a Decision, badged Unassigned, with an Assign button beside it Unassigned is a derived state, not a status. The clean's real status is still Scheduled, which is why it counts towards Upcoming on the summary strip rather than getting a count of its own. Nothing about it is broken: it is a booking that nobody has been told about yet. (A week with one clean nobody is on. The unassigned chip is drawn in red so it reads as work at risk rather than work in progress.) ##### Chasing them from the Dashboard The Dashboard chases these for you, in the card headed Needs a Decision. An unassigned clean is one row kind inside it, badged Unassigned, and under Priority it sorts above everything else waiting on you, because a client who is simply not covered today outranks the rest. The row carries the clean's title, its start time and an Assign button. The button takes you to the Schedule, where you open the clean and use the picker. When the list is empty the card says All covered over No unassigned cleans right now. Great work keeping the schedule full. That card being empty is the single best one-glance signal that next week is actually staffed. (Needs a Decision on the Dashboard, filtered to its Schedule chip. It is the only place in CleanFlo that actively chases unassigned work, which is why it sits on the screen you open on.) ##### Moving a batch to somebody else Somebody calls in sick on a Sunday night and there are nine cleans with their name on them. Editing nine cleans one at a time is exactly the kind of Sunday night this product exists to prevent. Press Select in the Schedule header. The button turns solid and becomes Cancel, and every clean chip grows a checkbox. Click the cleans you want, in any view: in month view, clicking a whole cell selects every clean on that day at once. A bar appears along the bottom of the screen reading 9 cleans selected, with four actions after it. (The bulk action bar. Reassign opens a dropdown of your staff; Cancel and Delete both ask for confirmation first; Clear empties the selection without leaving selection mode.) Reassign opens a plain list of your active staff. Pick one and every selected clean moves to them, with a toast reading 9 cleans reassigned to Priya Nair. With no staff on the account at all, the dropdown says No staff found. The same double-booking rule applies here, and it is applied clean by clean rather than all or nothing. If some of the selection would clash with work the new person already has, CleanFlo tells you which, and offers to move the rest: 3 of 9 cleans would double-book Priya Nair, the clashing cleans listed by name and date, then Reassign the other 6? with a button reading Reassign 6. If every clean in the selection would clash, nothing moves and a toast says so: Every selected clean would double-book Priya Nair. > Reassigning does not send the new cleaner an email. The email goes out when a clean is saved with somebody on it, not when it is moved in bulk. After a big reassignment, use Send Schedule to email everyone affected their corrected fortnight. ##### What the cleaner gets Assign somebody while saving a clean and three things happen at once, all of them best effort and none of them able to fail the save. - An email with the property name, the full address, the services booked and any clean notes you wrote. A toast confirms it: Clean update notification sent to Aisha Nowak. - A push notification on their phone titled New clean assigned. - A line in their message thread with the office, which is the durable one: a push is gone the moment it is dismissed, but the thread is still there on Thursday when they cannot remember what time they are due. Editing a clean that already has somebody on it sends the same trio worded as an update. Cancelling one sends an email, a push titled Clean cancelled, and a thread line. All of it is covered in more detail in Emailing the week's schedule. > One cleaner per clean. The badges tell you who is free, the save refuses a genuine double-booking, and anything left with nobody on it turns up on the Dashboard until you deal with it. **FAQs** Q: Can I put two cleaners on one clean? A: No. The field holds one name. For a two-person clean, book two cleans at the same site and time, one for each cleaner. Each gets their own checklist, their own start and finish times and their own field report, which is usually what you wanted anyway. Q: Why does a cleaner show as Unknown rather than Available? A: Because one of the three reads behind the badge failed. CleanFlo will not badge somebody green on the strength of a lookup that did not come back, because a manager acts on green. Close the drawer and reopen it to try again. It is also the one refusal you cannot assign your way past: there is nothing to overrule, because nothing was checked. Q: A cleaner booked holiday after I had already given them the work. What happens? A: Nothing, to the cleans already booked. CleanFlo does not go back through your schedule rewriting it, and their approved leave does not cancel work that was assigned before it existed: those cleans stay exactly where they are and the cleaner can still start and finish them. What changes is the next time somebody edits one of those cleans, or assigns anything new in that week: the refusal appears then, with the dates. Q: Does approving somebody's time off free up their cleans automatically? A: No, and deliberately. Approving leave is a decision about a person, not about a week of work: unassigning six cleans on your behalf would leave you with six unassigned cleans and no notice. Approve the leave, then use Select on the Schedule to reassign that week yourself. Q: A cleaner has left. What happens to their cleans? A: Their finished work stays attached to them, so the history and the figures stay right. Their future work is a different matter: use Select on the Schedule to pick it up and Reassign it before you deactivate them in Staff, or CleanFlo will clear those cleans back to unassigned and they will start appearing in Needs a Decision as unassigned. Q: Does the availability check look at more than one day? A: No. It reads the cleans on the date in the first row of the When section only. A repeat spanning three months is badged against its first date, but the save then checks every one of the generated dates before it writes anything. URL: https://cleanflo.io/help/assigning-cleaners/ --- #### How a clean moves through its statuses A clean moves Scheduled, In Progress, Done, and your cleaner is usually the one moving it. What each state means, when you should override it, and what a finished clean records about itself. A clean starts as Scheduled and, if everything goes to plan, you never touch its status at all: the cleaner moves it from their phone and the record writes itself. Status is the spine of the schedule. It sets the colour of the chip on the calendar, it drives the counts on the summary strip, it decides which cleans can be invoiced, and it is the thing your client is really asking about when they ring on a Wednesday. ##### The five states (The complete vocabulary. Four are real statuses stored on the clean; Unassigned is worked out from an empty staff field and appears alongside them.) - Scheduled: Sky blue. Booked and not started. Every clean begins here, whether it was created by you, by a repeat or from a client portal request. - In Progress: Amber. A cleaner has pressed Start clean on their phone and is on site. The chip pulses on the grid and the clean appears at the top of their list. - Done: Green. Finished. The clean now carries a field report, is eligible for an invoice, and gets a Clean report button in its drawer. - Cancelled: Red. Not happening. The clean stays on the calendar and keeps its history rather than disappearing, and the assigned cleaner is told. - Unassigned: Red, and not a status at all. It is what the app shows wherever a clean has no cleaner on it. Underneath, the clean is still Scheduled. The ordinary path is Scheduled to In Progress to Done, and nothing else is a normal route. Cancelled can be reached from anywhere and is the correct answer whenever the work is not going to happen, because deleting a clean throws away the record of it ever having been booked. > The four dots on the right of the summary strip are the legend for these colours: Scheduled, In Progress, Done, Cancelled. The same four colours are used on the week chips, the month dots and the agenda pills, so once you know them you can read a month at a glance. ##### Who moves it, and from where In normal operation, the cleaner does. They open the clean on their phone and press Start clean, which moves it to In Progress and stamps the time. When they are finished they press Complete clean, confirm on a sheet headed Complete this clean?, and it goes to Done with a second time stamp. That is the design, and it is why the drawer says so out loud: while a clean is In Progress the Change Status heading in the office app has a note appended to it reading , cleaner controls start/complete. The person on site is the one who knows. (The same clean as the cleaner has it. A clean signed into is the open line of the book: inked, bled to both edges, with the clock running in the margin where its start time would sit. The checklist and the one docked key beneath it are the whole of what moves a clean to Done in normal use, and that key is the same teal as every other committing key in the app.) ##### The hour before a clean starts Between booking and starting there are two small facts a clean chip can carry, and they answer the question an owner actually opens the schedule to ask at ten to nine: is anyone going to turn up? - confirmed: Green tick. The cleaner has answered Can you make this one? on their phone with Yes, I'll be there. - on the way: Sky blue van. They have pressed On my way. This one wins, because somebody already driving there has plainly seen the clean. (The two pre-start flags. On a calendar chip each is a single glyph, because a chip can be 22px tall and the clean's title has to survive; the word itself is in the tooltip and in the accessible name.) > A scheduled clean with neither flag is not a refusal. Confirmation only arrived with a later version of the cleaner app, so every clean created before it has nothing recorded either way. An absent flag means nothing has been said, not that somebody said no. ##### Changing a status yourself Open any clean on the Schedule and the drawer titled Clean details shows the clean's title, its current status as a pill, and a section headed Change Status. That section holds the three statuses the clean is not currently in, each drawn in its own colour. Clicking one moves the clean. (The Clean details drawer on a scheduled clean. Three buttons, because the fourth is the status it is already in. Below them, the facts of the clean in a plain list.) Moving a Scheduled clean is instant: there is nothing to overwrite. Moving a clean that a cleaner has already started or finished is not, because their record of it exists and you are about to contradict it. In both cases you get a red confirmation first. Clean is currently | The confirmation says In Progress | The cleaner is currently working on this clean. Changing it to "Done" will override their progress. Done | This clean was completed by the cleaner. Changing it to "Scheduled" will override the field report. (The override confirmation on a clean that is currently being worked on. The status you clicked is quoted back at you, so a mis-click on a small screen is obvious before it lands.) The button is called Override anyway rather than "Confirm" on purpose. Marking a clean Done from the office when the cleaner has not finished it is sometimes exactly right, and sometimes the reason a client is complaining a fortnight later. > A status change on an assigned clean notifies the cleaner: a push reading Clean status changed, or Clean cancelled along with an email when you cancel. They find out either way, so it is better that they find out from you first. ##### The field report Once a cleaner has started a clean, the Clean details drawer grows a section headed Field Report. It is written entirely by the phone and cannot be edited from the office. This is the part you read out to a client. - Started 08:41, in 24-hour time, taken at the moment they pressed Start clean. If the start was later than the booked time it carries an amber Late badge; if they started ahead of the booked day it carries an Early badge and the reason they gave for it. - Completed 11:07, stamped the same way when they finish. - Any completion notes they typed on the clean, printed underneath as plain text. - Lost Property (2) when anything was found, listing each item with Found: under the sofa beneath it. (A field report on a completed clean. The Late badge is calculated, not typed: it compares the real start against the booked start.) Lost property is worth taking seriously. A cleaner who found something is telling you before the client notices it is missing, and the entry is timestamped to a clean, a site and a person. It is the difference between an awkward phone call and a straightforward one. ##### Verification Underneath the site details, a clean that is In Progress or Done carries a section headed Verification. When the cleaner pressed Start and Complete, their phone recorded where it was, and CleanFlo compares that against the property's own coordinates. Each stamp is one line: the word Started or Completed, a verdict, then the detail written as at 08:41 · 34 m from the property · ±18 m. The last figure is the accuracy the phone itself reported, which matters: a fix good to ±400 m cannot confirm or deny anything, and CleanFlo says so rather than guessing. (Two location stamps on a completed clean. Only a start genuinely a long way from the property is coloured as a problem; everything else is stated in grey.) Verdict | What it means At the property | The device was inside the radius. Green. Away from the property | The device was outside it. Red, and the only verdict drawn as a problem. Location too approximate | The fix was too rough for the comparison to mean anything. Grey. Property has no coordinates | Your fault, not theirs. A link offers Add coordinates to this property. Grey. Location permission declined | The cleaner did not allow location access on their device. Amber. Location unavailable | The phone could not get a fix, which is normal indoors and in basements. Amber. The radius is 250 metres by default, and it is deliberately generous. Phones fix indoors to ±50 to ±150 metres routinely, and a terraced street puts three other addresses within tens of metres. Wrongly doubting a cleaner costs far more than missing a rare genuine problem. Where a stamp has coordinates, a link reading See this point on a map opens them. Two other lines can appear here. A clean marked done later than it happened gets an amber callout headed Completed after the fact with the reason the cleaner picked, or Marked done later than it happened. No reason was recorded. if they were not asked for one. And a clean from before location capture existed gets one quiet grey line instead of any of the above: Predates location tracking: this clean was completed before CleanFlo recorded clean locations. > This is location data about an employee, so it is personal data under UK GDPR. CleanFlo records a single point at the start and at the end of a clean, not a track, and only while the app is open. Tell your team it happens and why: an honest line in a contract of employment about verifying attendance at client sites is both fairer and considerably safer than them finding out. ##### Cancelling rather than deleting Cancelled is a status. Deleted is not: it removes the clean. The two get confused because both make the work stop, and only one of them is recoverable in any sense. A cancelled clean stays on the calendar in red, keeps its price, its services and its history, still counts on the summary strip and still shows up in reports. It can be moved back to Scheduled if the client changes their mind. A deleted clean is gone, and the confirmation says so: Delete this clean? This cannot be undone. > Deleting is for mistakes: the clean booked on the wrong client, the duplicate created by a slipped click. Anything that was a real arrangement and then stopped being one should be cancelled, so that in six months you can still answer why the July invoice was short. > Scheduled, In Progress, Done, plus Cancelled, plus Unassigned which is not really a status. The cleaner drives the middle two from their phone; you can override, and the app will make you say so. **FAQs** Q: Can I mark a clean as Done before the cleaner has been? A: Yes, from the Change Status section, and nothing stops you. The clean will simply have no field report and no location stamps, which is exactly what an empty Verification section is telling anyone who looks at it later. Q: A cleaner forgot to press Complete. What is the tidiest fix? A: Ask them to do it from their phone. The app knows the clean is from an earlier day, offers Complete this clean, and asks why it is being closed late from a short list of reasons. The clean then carries a proper Completed after the fact note instead of a silent office override. Q: Why is a finished clean not showing a Verification section? A: Either it predates location capture, in which case you get the grey "Predates location tracking" line, or the phone recorded nothing usable at either end. Neither is a finding about the cleaner. Q: Does a clean have to be Done before I can invoice it? A: Invoices are raised from completed work, and the Dashboard offers Create Invoice against completed cleans that have not been invoiced yet. Leaving cleans sitting in In Progress is the usual reason a week's revenue looks wrong. Q: What is the Clean report button in the footer? A: It appears only on a Done clean. It prints a one-page report with the times, the checklist as it was actually ticked, the completion notes, any lost property and the clean photos, ready to send to the client. URL: https://cleanflo.io/help/job-status/ --- #### Clean templates Saving a clean you book over and over as a reusable configuration: the Clean templates sheet, every field in the template drawer, and how a template is loaded onto a new clean. If you book the same shape of clean every week, a template turns eight fields and a six-line checklist into one click. It is the least glamorous thing in the Schedule and probably the biggest time saving in it. A template is a saved clean configuration with no client, no location and no date on it. It holds the parts that are the same every time, so that booking is only ever about the parts that are not. ##### What a template holds In the template | Not in the template Clean type | The client Duration in minutes | The location Services and their quantities | The date and start time Add-ons and their quantities | The cleaner The whole checklist, in order | Any repeat pattern Clean notes | The split is the point. Everything on the left is a decision about what the clean is and it is the same for every standard home clean you ever book. Everything on the right is a decision about this particular booking and it changes every time. > Templates are worth making for anything you book more than about five times. The usual set for a domestic and commercial mix is four or five: a standard home clean, an office nightly, an end of tenancy, a holiday let turnaround, and a deep clean. ##### The Clean templates sheet Open it with Templates in the Schedule header. The button carries a small count badge once you have any. The sheet is titled Clean templates with Reusable clean configurations underneath. Each row shows a clipboard icon, the template name, and a line of meta beneath it: the duration written as 1h 30min, the default price, and the clean type in lower case with its underscores taken out, so an end of tenancy template reads end of tenancy. After those come two small tags, 3 services and 6 checklist, which are the quickest way to spot the template you built properly against the one you abandoned half way through. On the right of each row, Edit and a bin. At the foot of the sheet, one button: New Template. (The Clean templates sheet with four templates on it. The tags on each row count what is inside the template, so a nought-services template is visible without opening it.) With nothing saved yet the sheet shows an empty state instead: No templates yet over Create reusable clean configs to speed up scheduling., with a button reading Create first template. It does the same thing as New Template at the foot. (The empty Clean templates sheet. Worth visiting on day one: fifteen minutes here saves an hour a month afterwards.) ##### Building a template The template drawer is titled New Template with Create a reusable clean configuration underneath, or Edit Template and Update template details when you came in from an Edit button. Four sections. ###### Template details - Template Name *: The only required field, placeholdered e.g. Standard Home Clean. Save without one and the drawer says Template name is required at the top of the form. This name is what appears on the chip when you load it, so keep it short. - Clean Type: A dropdown with six options: Residential, Commercial, Holiday Let, Deep Clean, End of Tenancy, Other. It sets the clean type on any clean built from this template. - Duration (mins): In minutes, stepping in fifteens, defaulting to 60. This is the number that decides how tall the clean chip is on the calendar and what the availability check measures against. - Default Price (optional): A pounds-and-pence field, placeholdered 0.00. It is shown on the template row in the list. > A clean's price is always the sum of its services, its add-ons and its additional charge. Default Price does not overwrite that. Treat it as a note to yourself about what this kind of clean is worth, and make sure the services on the template actually add up to it. (The top of the template drawer. Name is the only field the form insists on; everything else has a working default.) ###### Services, Add-ons, Checklist and Notes These four are the same controls as the Add clean drawer, and they behave identically. Services and Add-ons are line pickers: a dropdown reading , Select until you choose, then every catalogue item written as {name} · £{price}, a Qty box and an X, with Add Service and Add Add-on underneath. With nothing in your catalogue the section says No services set up yet. Add them in Services. instead. Checklist rows are plain text placeholdered Step 1, Step 2 and so on, added with Add Checklist Item and kept in the order you type them. This is usually the most valuable part of the whole template: writing a fourteen-step end of tenancy list once, properly, and never having to remember step nine again. Last is Notes (optional), a textarea placeholdered Special instructions, reminders…. Notes on a template are for things that are true of every clean of this kind, such as "bring the extension lead" or "always photograph the oven before and after". Anything specific to one address, like where the hoover is kept, belongs on the location record instead. (The rest of the template drawer. The checklist carries over to every clean built from this template and lands on the cleaner's phone as tickable rows.) The footer is Cancel and either Create template or Save changes, showing Saving… while it writes. ##### Loading a template onto a clean Templates appear at the very top of the Add clean drawer, under a heading reading Load template, as a row of chips with a clipboard glyph on each. One chip per template, in the order they were created. (The Load template chips, the first thing in a new clean. They are not shown when editing an existing clean, because loading one would silently replace work already on it.) Clicking a chip fills in five things at once: - The clean type. - The duration, replacing whatever was in the field. - The services and their quantities, replacing any already picked. - The add-ons and their quantities, the same way. - The checklist, and the notes, opening the notes box automatically if the template has any. It leaves the client, the location, the dates and the cleaner exactly as they were, so the usual order of work is to click the empty slot on the grid, click the template chip, pick the client and location, and save. Three clicks and two dropdowns for a fully specified clean with a checklist on it. > Loading a template replaces the services, add-ons and checklist already on the form rather than adding to them. Load it first, then make your changes. Clicking a second chip by mistake will throw away anything you had customised. Everything is editable afterwards. A template is a starting point, not a lock: change the duration for a bigger flat, drop an add-on the client did not want, add two checklist steps for this site only. The template itself is untouched by any of it. ##### Editing and deleting Edit on a row reopens the drawer with everything filled in. Saving updates the template for future use and changes nothing about cleans already booked from it: those cleans took a copy at the moment they were created and keep it. Put your prices up and the next clean you book from the template gets the new figure, while the twelve already on the calendar keep the old one, which is almost always what you want. The bin deletes it, after confirming: Delete the template "Standard Home Clean"? This cannot be undone. with a red Delete Template button. > Deleting a template does not touch a single clean. Every clean built from it keeps its services, its price and its checklist, because those were copied onto the clean when it was created. You are only removing the shortcut. > Build a template for anything you book more than a handful of times. It carries the clean type, duration, services, add-ons, checklist and notes; it never carries the client, the site or the date; and its default price is a label, not a price. **FAQs** Q: Can a template include the client and location? A: No, deliberately. A template describes a kind of work rather than a particular customer, so one Standard Home Clean serves every house on the round. To repeat a specific booking including its client and site, open that clean and use Duplicate instead. Q: How many templates can I have? A: There is no limit, but the chips sit in one row at the top of the Add clean drawer, so past about eight they stop being quicker than filling the form in. Prune the ones you never click. Q: Why is the price on my clean different from the template's default price? A: Because a clean is priced from its services, its add-ons and anything you typed into Additional charge. Default Price is shown on the template row as a reminder of what the clean is worth; it is not applied. If the two disagree, the services on the template are the thing to fix. Q: Can I use a template with a repeat? A: Yes. Load the template first, then set the Repeat pattern, then save. The template fills in the work and the repeat decides how many times it happens. URL: https://cleanflo.io/help/job-templates/ --- #### Emailing the week's schedule Sending every cleaner their next fortnight by email: the Send Schedule sheet, who appears in it, what the email contains, and the automatic notifications that fire without you. Cleaners have the app, but a printed fortnight in an inbox is still what most of them actually plan their week around. Send Schedule produces one for each of them in a single action. There are two ways a cleaner finds out about work in CleanFlo, and they do different cleans. Automatic notifications fire the moment something changes and tell them about one clean. Send Schedule is something you choose to do, and gives them the whole fortnight in one place. ##### The Send Schedule button It sits in the Schedule header, between Templates and Add clean, with a paper plane on it. Hovering it says what it does: Email each cleaner their upcoming 2-week schedule. With no active staff on the account the button is disabled and the tooltip changes to No active cleaners to send to. Add staff first. While a send is in flight the button reads Sending… and stays disabled until every email is away. (The Schedule header actions. Send Schedule is the fourth of five, and the only one that leaves the app.) Pressing it does not send anything yet. It opens a sheet, reads the next fortnight, and asks you who should get one. ##### Choosing who gets one The sheet is titled Send 2-Week Schedule with Select which cleaners to email underneath. While it loads you get three placeholder rows rather than an empty box, so it never looks as though nobody has any work. The window it reads is today plus the next thirteen days, so a fortnight counted inclusively from this morning. Only cleans that are Scheduled or In Progress are counted: cancelled work is left out, and so is anything already finished, because a schedule is about what is coming. Everybody starts ticked. The row across the top toggles between Select all and Deselect all depending on where you are, with the total on the right as 4 cleaners. Under it, one row per cleaner: a checkbox, a circle with their initials in it, their name, their email address underneath, and a count on the right reading 7 cleans. (The Send 2-Week Schedule sheet. Only cleaners with work in the window appear at all, so an empty row is never something you have to notice.) The footer counts what you have ticked: Send to 4 cleaners, dropping to Send to 1 cleaner for one, and disabled entirely at nought. Untick the people whose fortnight has not changed and you have a targeted send rather than a round robin nobody reads. Once you press it the sheet closes and the header button goes to Sending…. When the last one is away you get a toast: Schedule sent to 4 cleaners. If any of them failed, a second toast says how many: Failed to send schedule to 1 cleaner. The usual cause is a missing or mistyped address on the staff record. > Only cleaners who have cleans assigned in the window are listed. Somebody with nothing booked in the next fortnight will not appear, which is a useful side effect: the list is also a quick check on who is under-loaded. ##### What lands in their inbox One email per cleaner, from your company name, covering the fortnight as a date range: Thursday 13 August to 27 August 2026. Inside it, their cleans in date and then time order, grouped under a heading for each day the work falls on. Each clean carries: - The clean's title, which is the name of the site. - The location name and its full address, so nobody has to open the app to find out where Flat 4B is. - The start time, written the way the app writes it: 9:00am. - The duration in minutes, as 120 min. - Any clean notes you wrote on that booking. It is a read-only summary. There is nothing to click, no accept or decline, and no way for a cleaner to reply to it and change anything. The app is the live copy; the email is the version that survives a phone with no battery. Two other things happen at the same time. Each cleaner who was sent one gets a push notification titled Schedule updated, and a line lands in their message thread with the office reading Your schedule for Thursday 13 August – 27 August 2026 has been emailed to you. The email is the useful artefact; the thread line is the durable record that it was sent, in the place they will look when they cannot find it. Neither replaces the app: the same fortnight is already written into their logbook on the Cleans tab, and that is the copy that keeps itself up to date. (What the email is a copy of: the cleaner's own view of the same fortnight. Today is ruled off first, with the finished clean stamped and its margin mark gone because it no longer wants anything, then the rest of the week and what falls later in the month, each day given its own break. The email is the version that survives a flat battery; this is the book it was taken from.) ##### When there is nothing to send If nobody has any assigned work in the next fortnight, the sheet has nothing to list and says so plainly: Nothing to send yet over No cleans are assigned to a cleaner in the next 2 weeks, so there is no schedule to email. (The empty send sheet. The operative word is assigned: a fortnight full of unassigned cleans produces this exact screen.) That message catches a specific and common situation: a diary that looks perfectly healthy on the grid, because the work is all booked, but where nobody has been put against any of it. Go back to the calendar, assign people, and try again. The Dashboard's Needs a Decision card lists exactly what is missing: filter it to Schedule. ##### What sends without you Send Schedule is manual. Everything in this table is not: it fires the moment you save, and there is no setting to turn it off. Notifications only ever go to the cleaner named on the clean. When | Email | Push | Message thread A clean is created with a cleaner on it | Property, address, services, date and your notes | New clean assigned | {clean} on {date} added to your schedule. An assigned clean is edited | No email | Clean updated | {clean} on {date} has been updated. An assigned clean is cancelled | Cancellation notice with the site and time | Clean cancelled | {clean} on {date} has been cancelled. A status is changed some other way | No email | Clean status changed | No thread entry You send a fortnight | The two-week schedule | Schedule updated | Your schedule for {start} – {end} has been emailed to you. Assigning a long recurring series is the one place this is capped. The push and the thread line cover the whole batch in one message, but the email goes out for the first twelve dates only. Nobody needs fifty-two emails about one contract, and the fortnightly send keeps them current after that. A toast confirms the email half as it happens: Clean update notification sent to Aisha Nowak, or, when something did not get through, 1 notification failed to send. None of it can fail a save. If the email bounces the clean still exists and the cleaner still sees it in the app. > Reassigning cleans in bulk from the selection bar sends no email. The cleans move, the calendar updates, and the new cleaner finds out when they next open the app. After a big reassignment, follow it with a Send Schedule so everybody has the corrected fortnight in writing. The full picture of what CleanFlo sends, to whom, and through which channel is in Notifications under Messages & alerts. ##### Making it a habit The send is most useful on a fixed rhythm rather than in a panic. Most owners settle on one of two: - Friday afternoon: Next week is fully assigned by then, so the fortnight in the email is stable. Cleaners plan their weekend around a settled Monday. - Sunday evening: Later, so it catches any weekend changes, but it lands when people are looking at their phones anyway. Better if your work moves a lot. Whichever you pick, send it after you have cleared the unassigned cleans out of Needs a Decision and not before. An emailed fortnight with three holes in it generates more phone calls than it prevents. > These emails contain client addresses and access notes, so they are personal data leaving your system. Send them to work addresses where you can, keep the staff record's email up to date when somebody changes it, and remove leavers in Staff promptly: a deactivated cleaner has no cleans assigned, so they stop appearing in this sheet entirely. > Send Schedule emails each selected cleaner their next fourteen days of assigned, uncancelled work. Everything else, assignment, edits and cancellations, sends itself the moment you save. **FAQs** Q: Can I schedule this to send automatically every Friday? A: No. It is a deliberate action every time, because the thing that makes the email useful is that the fortnight was settled when you pressed the button. Put a recurring reminder in your own calendar instead. Q: Why is one of my cleaners missing from the list? A: Either they have no cleans assigned in the next fourteen days, or their cleans in that window are all cancelled or already done. The sheet is built from the work, not from the staff list. Q: Can a cleaner reply to the schedule email? A: Not usefully. It is a one-way summary. If they need to tell you something about a clean, they should use the Messages tab in the app, which lands in your Messages screen and stays attached to the conversation. Q: Does the email include cleans nobody is assigned to? A: No. The whole email is built per cleaner from the cleans with their name on them. Unassigned work appears in nobody's schedule, which is precisely why an unassigned clean is a problem worth chasing. Q: What does the cleaner see if their phone has no signal? A: The app keeps a cached copy of their schedule and works from it offline, so they still have their cleans and their checklists. The email is the belt-and-braces version for a phone that is flat or lost. URL: https://cleanflo.io/help/emailing-schedules/ --- #### Photo and reading requirements Give any checklist line a Photo required or a Reading required, with a reading type, a minimum, a maximum and a unit. The requirement copies onto every job the template builds, the cleaner app shows and enforces it, Complete clean will not finish while one is unmet unless a cleaner writes a reason, and the Checklist requirements module turns all of it off. A tick only ever meant a cleaner tapped a checkbox. Ask a line for a photo or a reading as well, and it is not done until the evidence is: a photo of the made bed, a chlorine reading off the hot tub, a count that has actually been counted. Most checklist lines are fine as a tick. A cleaner did the thing or they did not, and the tick says which. A few lines are not fine left there: proof matters more than a checkbox for the owner of a holiday let who cannot be on site to see the bathroom restocked or the bins put out, a legionella reading off a hot tub is a number that has to exist somewhere rather than a box somebody checked on their way past, and "six towels" is either true or it is not, in a way a tick cannot say. A requirement is what turns that particular line into more than a tick. Set one on it and it needs a photo, a reading, or both, before it counts as done, on a template checklist and on an ad-hoc job checklist alike. ##### Setting a requirement Every checklist line, in Job templates and in a job's own checklist in the job drawer, carries a small disclosure under it labelled Requirements. It stays closed until you open it, but a line that already has a requirement on it, coming back to edit an existing template, say, opens by itself. Close it again with something set and it carries a small Set badge, so a checklist is not something you have to re-open every line of to know what is on it. - Photo required: A toggle. Switched on, this line is not done until a photo is attached to it, taken on the cleaner's phone the same way any other job photo is: it also appears with the job's other photos, not only against this one line. - Reading required: A toggle. Switching it on reveals a reading type and, for every type but Clarity, a minimum, a maximum and a unit. - Reading type: Seven options: Free chlorine, Bromine, pH, Temperature, Clarity, Count, or Reading, for anything the other six do not fit. Clarity alone is words rather than a number, clear, slightly cloudy or cloudy, and carries no minimum, maximum or unit: switching a line to it clears whatever a numeric type had left behind. - Minimum, maximum and unit: Both bounds are optional and inclusive, a reading equal to either one counts as in range, and leaving both blank means nothing on this line can ever be out of range. Unit is free text, so a company measuring bromine in ppm rather than the usual mg/l is not fought. (One checklist line with its Requirements disclosure open, in the template editor. Photo required and Reading required are independent switches, a line can ask for both, and choosing a reading type other than Clarity reveals the minimum, maximum and unit beside it.) A requirement set on a template is copied onto every job built from it, exactly as the rest of the checklist is: see Clean templates for how loading one fills in a clean. Set the requirement once, on the template, and every clean booked from it afterwards carries it without anyone opening a drawer again. ##### What the cleaner sees A gated line in the cleaner app carries a status line under its label, in addition to its ordinary tick, and the tick and the requirement are two different things: ticking the box does not fulfil the requirement, and a line can sit ticked with its photo still outstanding. (A changeover checklist with two gated lines. The bathroom line is ticked and its photo is still missing, which is exactly what still stops Complete clean below. The hot tub reading is in, but it reads low against the minimum on file.) The status line reads Photo required or Reading required until it is met, then Photo attached for a photo, or the reading itself with its unit, "0.4 mg/l", for a reading. Underneath it sits the control that meets it: a camera button for a photo, opening the phone's own camera rather than a file picker; a number field for a reading, labelled with the reading type's own name and showing its unit beside it; or, for Clarity, three words as a segmented control, Clear, Slightly cloudy, Cloudy. A reading outside its minimum and maximum is marked Out of range in words, never colour alone, and a note field, labelled Add a note (optional), appears underneath it. It is prompted, not required: nothing about an out-of-range reading stops the clean being completed. Every gate works offline exactly like every other tick and photo on the clean: a photo, a reading or a tick lands the moment it is taken, and the write queues behind it until the signal returns. ##### Finishing with a requirement still open Complete clean opens its usual confirmation, but while anything on the checklist still needs its photo or its reading, the sheet says so and refuses to close the clean quietly around a gap nobody noticed. > "Still needs a photo or a reading:" is the sheet's own line, followed by the name of every line still open. The button underneath no longer reads "Yes, complete": it reads Complete anyway, and it will not proceed without a reason typed into the box labelled "Why are you completing without it?", placeholdered "e.g. Owner said skip the hot tub reading this week". Under ten characters and it says "Say a little more (at least 10 characters)" rather than doing nothing. That reason is written against every line still open when the cleaner presses it, and into the activity log as "completed with N checklist requirements overridden". Once a line is overridden it stays settled: it keeps showing what it was still missing, but gains a second status line, Recorded without evidence, and it never flips back to blocking anything later. ##### What you see afterwards Open the job afterwards and every gated line in its checklist carries the same read-only summary a cleaner's screen showed them: a small photo where one was attached, or "Photo required" where it was not; the reading with its unit, or "Reading required", with an amber "out of range" mark if it landed outside its bounds; and, on an overridden line, "Overridden: " followed by the reason in full. > Edit a job's checklist after the cleaner has already started ticking it off, adding a line or reordering it, say, and every line that still exists keeps whatever they had already put on it: its tick, its photo, its reading. Only deleting a line loses what was recorded against it. ##### The Checklist requirements module All of this sits behind Checklist requirements on Settings → Modules, on by default and already on for every trade CleanFlo sets a company up with. Switch it off and the Requirements disclosure disappears from the template editor and the job drawer, the cleaner app shows and enforces nothing extra, and Complete clean asks nothing more than it always did. Nothing already set is cleared: the database refuses only a write that sets a new requirement while the module is off, never a write that finishes a job, so a line that already carries a requirement shows it again, unchanged, the moment the module goes back on. **FAQs** Q: Does switching Checklist requirements off delete the requirements I have already set? A: No. They are kept and simply ignored while the module is off, ticks, photos and readings already on a job untouched, and they take effect again exactly as they were the moment you turn it back on. Q: Does an out-of-range reading stop a cleaner completing the clean? A: No. It is marked Out of range and prompts a note, but unlike a missing photo or reading it needs no override reason at all: a reading being logged, however it reads, is not the same thing as a reading missing. Q: I added a line to a job's checklist after the cleaner had already started ticking it off. Did that lose their photos and readings? A: No, not any more: saving a job's checklist keeps every tick, photo and reading on a line that still exists after the edit. Only removing a line removes what was recorded against it. URL: https://cleanflo.io/help/checklist-requirements/ ### Clients & locations #### Adding a client The Clients screen, the Add new client sheet field by field, the seven quick-reference tags your cleaners see, and the portal settings you can switch on while you are there. A client is the account you bill. Everything else in CleanFlo hangs off one: the sites you clean, the cleans booked at them, the invoices you raise and the portal your client logs into. Most people add their first client within a minute of finishing setup, and it takes about that long. The record itself is small: a name, someone to ring, and a few tags. The parts worth slowing down for are the tags, which your cleaners read on their phones, and the portal, which decides what your client can see. ##### The Clients screen Open Clients in the sidebar. The page is titled Clients & Locations because it holds both: a client at the top level, and the sites you actually turn up at underneath. The three figures across the header count what you have. (The Clients screen. Header stats first, then the search, then the Client Database table. The Sites column is the number of locations on that client, not the number of cleans.) - Add Client: Opens the Add new client sheet. The only way in: there is no inline row you can type into. - All Clients · My Clients · At Risk: Three filter tabs above the search. My Clients shows only the ones with you set as their Account Owner, empty until you set one, from a client's own page. At Risk shows active clients who have gone quiet against their own usual booking pattern, covered in full in Editing and removing clients. - Search clients…: Filters the table on the client name, the contact name and the email address as you type. It does not search locations. - Client Database: The table itself, with the row count underneath as {n} clients. Ten rows to a page. - Client: Tinted initials, the business name, and the contact email on a second line. Clicking anywhere in the row opens the client. - Contact: The named human, not the business. Blank shows a dash. - Sites: A pill counting the locations attached to this client. A client with no locations reads 0 sites and cannot have a clean booked at an address yet. - Owner: The member of staff set as this client's Account Owner, or Unassigned. Set from the client's own page, not from this table. - Status: A pill reading Active or Inactive. Inactive is a label, not a lock: nothing stops you booking work for them. - Export CSV: Downloads clients.csv with the columns Name, Contact Name, Email, Phone, Status and Sites. It exports everything matching your search, not just the page you are looking at. - Delete ({n}): Only appears once you tick something. See the warning further down: it takes the locations with it. (The two empty states this table can show. They are worded differently on purpose, and the difference tells you whether the record is missing or the search is.) > If you are looking at No clients match your search, clear the search box before you conclude anything has gone missing. The wording is the only clue: the search version has no Add Client button underneath it, because adding a new client is almost never the answer to a search that found nothing. ##### Filling in the sheet Press Add Client and a sheet slides in from the right, headed Add new client with the sub-line "Create a new client record for your company". It is five labelled sections top to bottom. Only the first field is compulsory. 1. Name the client: Under Business / client name, fill in Client name *. The placeholder reads "e.g. Riverside Homes London". Use the name you will put on the invoice, because that is where it ends up. For a domestic customer this is simply their name. 2. Give yourself someone to ring: Under Primary contact there are three fields: Contact name ("e.g. Jane Lawson"), Email address ("jane@riverside.com") and Phone number ("+44 7700 900000"). All three are optional, but the email is what portal links and invoices are sent to, so leaving it out limits you later. 3. Tag anything a cleaner needs to know: Under Tags, the label reads "Quick-reference tags for cleaners". Tap the presets that apply. These are the ones that show up next to the client name in the app, so tag for the doorstep, not for your filing. 4. Decide about the portal: Under Client Portal, leave Enable client portal off unless you want this client logging in. Switching it on reveals a PIN, a visibility level and a requests toggle. Once the client is saved, you can come back to this at any time from the Client portal button on the record itself, rather than from Edit Details. 5. Add anything private: Under Notes, Internal notes (optional) has the placeholder "Any additional info about this client…". Internal means internal: it never appears in the portal and cleaners do not see it. 6. Save: Press Add Client at the foot. A toast confirms with Client "Riverside Homes" added and the new record appears at the top of the table. (The Add new client sheet with the portal section switched on. Five sections, one required field, and the PIN and visibility controls only appear once the toggle is on.) ##### Tags are for the doorstep Tags exist for one reason: a cleaner standing outside a property at half seven in the morning needs to know whether there is a dog behind the door and where the key is. There are seven presets, each with its own colour so they are readable at a glance rather than needing to be read word by word. (The seven preset tags in the order the selector lists them. Anything you type into "Add custom tag..." joins them in a neutral grey rather than picking up a colour.) Tag | Colour | What people use it for Key Holder | Sky blue | You hold a key rather than being let in. Worth knowing before someone drives over. Pet On Site | Amber | A dog or cat is loose. The cleaner keeps the front door shut behind them. Alarm Code | Red | The property is alarmed. Put the code itself in the location Access Notes, not in the tag. Parking Available | Green | There is somewhere to leave the van. Saves a phone call on a first visit. Access Instructions | Purple | Getting in is not obvious. Flags that the notes on the location are worth reading. Fragile Items | Pink | Antiques, glass, instruments. Sets the expectation before anything is moved. Eco Products Only | Teal | The client has asked for specific chemistry, so the usual kit is wrong. The field under the presets, Add custom tag..., takes anything you type and adds it with Add. Custom tags are neutral grey, which is a useful signal in itself: coloured means one of the seven safety-and-access facts, grey means something local to you. > Tags sit on the client, not on the location. If one of a landlord's twelve flats has a dog and the others do not, the tag will read as though they all do. Put facts that vary between properties in the location's Access Notes instead. ##### The portal section, in short You can switch the client portal on while you are creating the record, and it is the same set of controls you would find later in the record’s own Client portal sheet. There is a whole guide to what the client then sees, so this is only what the four controls do. - Enable client portal: Off by default. Switching it on generates the link and reveals the three settings below it. - Portal PIN (4–6 digits): Digits only, four to six of them. Anything shorter or longer is refused on save with the message Portal PIN must be 4–6 digits. The link alone is not enough to get in: the PIN is the second half. - Visibility Level: Three cards, one choice. Full Transparency shows clean history, staff names, invoices, checklists and upcoming cleans. Moderate shows clean dates and status plus invoice totals, with no staff names or checklists. Minimal shows summary counts and the outstanding total only. - Allow clean requests: Lets the client ask for work through the portal. Requests land on your Dashboard and in the Schedule for you to approve. Nothing gets booked without you. > The portal shows a named person their own service records, so treat the PIN as you would any other credential: give it to the client directly rather than putting it in the same email as the link, and change it when the contact at that business changes. Anything you write in Internal notes stays on your side of the wall, which is the right place for anything you would not want read back to you. ##### What happens next A saved client is an empty shell until it has a location. The client page opens on its Locations tab showing No locations yet and the line "Add the first service site for Riverside Homes." until you add one, because a clean needs an address and the client record does not hold one. (The empty state on a brand new client. The Add Location button here is the same one in the page header: there is no other route to a first site.) From there the order is always the same: client, then location, then clean, then invoice. You can add several clients in a sitting and come back for the addresses, but nothing can be scheduled until at least one location exists. > Ticking rows in the table turns the header button into Delete ({n}). It asks "Delete 3 clients? This cannot be undone." and the confirm button reads Delete All. Deleting a client removes their locations with them. If you are only trying to tidy the list, set the client to inactive instead. **FAQs** Q: What is the difference between a client and a location? A: A client is who you invoice. A location is where you clean. A letting agent might be one client with forty locations, and a family home might be one client with one. Cleans, cleaning statuses and access notes all live on the location; invoices and the portal live on the client. Q: Can I import a spreadsheet of clients? A: Not at the moment. Clients are added one at a time through the sheet. You can export what you have as CSV from the table footer, but there is no matching import, so a large existing list has to be typed in. Q: Do I have to fill in an email address? A: No, the only required field is the client name. An email address is worth adding though: it is the address invoices are emailed to and the address the Email Portal Link to Client button uses. Without one, both of those have to be done by hand. Q: What does the Inactive status actually do? A: Very little on its own. It changes the pill in the Status column, removes them from the Active header count, and gives you a way to filter your own list. It does not block cleans, invoices or the portal for that client. URL: https://cleanflo.io/help/adding-clients/ --- #### Locations and properties A client is who pays; a location is where the work happens. Adding sites, the four cleaning statuses they carry, and the map pin that lets CleanFlo check a clean started at the right address. A client is who you invoice. A location is where you turn up. Every clean in CleanFlo is booked against a location, which is why an address is the second thing you create and not an afterthought. The split matters most for the people you clean for who are not the people who live there. A letting agent is one client with as many locations as they manage. A care provider is one client with a house on each of six streets. Each site keeps its own address, its own access notes, its own cleaning status and its own clean history, while the invoice still goes to one place. Locations are added from the client, not from a screen of their own. Open the client from Clients and use Add Location in the page header, or the same button in the empty state on the Locations tab. ##### The Add Location drawer The drawer is titled Add Location. Only the name is required, and the name is the one field worth thinking about, because it is the label your cleaners see in their clean list and in the schedule. - Location name *: Placeholder "e.g. Seaview Cottage". Name it the way your team would say it out loud: "Flat 4B", "Seaview Cottage", "2nd floor". A row of sites all called "Property" is no use to anybody at seven in the morning. - Property type: A select with five options: Home, Office, Holiday Let, Retail and Other. It sets the icon and pill on the location and gives you something to sort a long list by. - Address: One line with the placeholder "12 Harbour Road", then a two-up row of City and Postcode. The postcode is worth filling in even on a site you know by heart, because it is what the map opens on when you go to drop a pin later. - Property Details (optional): Placeholder "e.g. 3 bed, 2 bath…". The shape of the clean: how many rooms, how many floors, anything that explains why it takes as long as it does. - Access Notes (optional): Placeholder "e.g. Keys in the lockbox by the side gate…". How to get in. This is the field cleaners actually read, and it is where a key location belongs, not in a client tag. A key safe or alarm code does not belong here: it goes under Access codes on the location, where it is encrypted and every reveal is logged (see Key safe and alarm codes). - Initial status: A select of the four cleaning statuses: Awaiting Clean, Clean, In Progress and Needs Inspection. It defaults to Awaiting Clean, which is right for almost every new site. (The Add Location drawer. City and Postcode share a row under the street line, and the two optional text areas are the ones that decide whether a cleaner can let themselves in.) > Access Notes travel with the clean to the cleaner app, so a note here saves the phone call you would otherwise get on the doorstep. Property Details do not: they are for you, for pricing and for working out how long to allow. ##### The Locations table Every site a client has is listed on their Locations tab. Five columns and a row action: Location, Type, Address, Details, Status, then a ghost Remove. Clicking the row opens the location itself. (The Locations table on a client with three sites. The Type pill carries its own icon, and the Status pill is the cleaning state of the property rather than anything to do with the client account.) > The row action Remove asks "Remove this location? This cannot be undone." with a confirm button reading Remove. Deleting the location from its own page instead asks 'Remove "Seaview Cottage"? This cannot be undone.' with the button Remove Location. Either way the site and its history go. ##### The four cleaning statuses Every location carries a cleaning status. It is a property of the site, not of a clean: it says what condition the place is in right now, which is the question a holiday let manager asks on a changeover Saturday and a facilities manager asks on a Monday morning. (The four cleaning statuses. Green means ready, amber means booked or due, sky means someone is there now, and red is the one that should be empty by the end of the week.) Status | What it means | Who usually sets it Clean | The property is done and ready to be handed over or used. | Set for you when a clean at the site is completed. Awaiting Clean | Work is due. The default for a new site. | You, or the changeover that just happened. In Progress | A cleaner is on site now. | Set for you when a cleaner starts the clean in the phone app. Needs Inspection | Something is not right and somebody should look before it is signed off. | You, usually after a complaint or a report from the cleaner. The same four statuses feed the counts on the client page: the stats strip there reads Total sites, Clean, Awaiting Clean, In Progress and Needs Inspection, so a landlord with thirty flats can be read at a glance. ##### The location page Clicking a row opens the location itself. The breadcrumb runs Clients then the client name then the location name, and the header carries three buttons: a danger Delete, a ghost Edit Location, and a primary Add clean which opens the clean drawer already pointed at this client and this site. The page itself reads in the same order for every property, whatever type it is: the hero, a status row, Keys & access, then Cleans, the job history with a heading on it, and then Property issues. There is no second layout for a second kind of property. (A location page. The hero repeats the type, address and access notes, the Set status row changes the pill in one tap, and, after a Keys & access panel, the Cleans list beneath is filtered by the four tabs shown here. Property issues follows underneath.) - Set status:: Four pills. Tapping one changes the cleaning status immediately, with no confirmation and no save button. The current one stays pressed rather than being greyed out. - All Cleans · Scheduled · In Progress · Done: Filter tabs over the clean list. There is no Cancelled tab, so a cancelled clean at this site shows only under All Cleans. - Date · Clean · Time · Assigned To · Price · Status: The clean columns. Clean shows the title with the clean type beneath it, Time reads as "9:00am · 2h", and an unassigned clean shows a red Unassigned in place of a name. Clicking a row opens the clean details drawer. - Add clean: Opens the clean drawer with this client and location already chosen, which is the quickest route to booking repeat work at a site you are already looking at. With no cleans the list reads No cleans yet and "Scheduled cleans for this location will appear here." Filtering to a status with nothing in it reads No scheduled cleans and "There are no cleans matching this status." A location you have opened from a stale link shows We could not find this location with "It may have been removed, or the link you followed is out of date." and a Back to client button. ##### The map pin, and what it is for Edit Location shows the same fields as Add Location plus one block that only exists here: Map location, marked optional. Its help text reads "Used to check that cleans were started at this property, and to navigate cleaners to the door from their clean screen. Without it, cleans here are never flagged, CleanFlo simply says the property has no coordinates, and cleaners are routed to the address instead." (The Map location block inside Edit Location, before a pin has been set. Clear only appears once there is something to clear.) Pick on map opens a map underneath the buttons. Click the roof and the pin goes there. Drag it if you were a few metres out. The button changes to Hide map while it is open, and nothing is saved until you use Save changes, so you can move the pin around as much as you like first. (The same block with the map open and a pin placed. The map opens on the postcode you typed, so you usually start on the right street rather than looking at the whole country.) - Not set: The state of a property with no pin. Once a pin exists this is replaced by the coordinates themselves and a Check on a map link that opens them in Google Maps. - Pick on map: Opens an OpenStreetMap of the area and lets you place the pin by hand. Click to place, drag to nudge, and the small print under the map reads "Click the property to place the pin. Drag it to nudge it." It leaves the note Placed on the map. underneath. This is the only method that can place a holiday let up an unnamed track or a new build whose postcode does not exist yet, and the only one where you can see you got it right before you save. - Place pin at map centre: Sits under the map and drops the pin wherever the map is currently centred. It is there for anyone working without a mouse: pan with the arrow keys, zoom with the + and − buttons, then place. - Use my location: Uses the device you are holding. Only worth doing when you are standing at the property. It leaves the note Placed from this device, accurate to about 12 m., with the accuracy the device reported. - Clear: Removes the pin. Only shown when there is one. Clearing it puts the property back to never being flagged. > The map needs a connection. If it cannot load you get "We could not load the map. Check your connection, or use 'Use my location' while you are at the property.", the rest of the drawer keeps working, and a property with no pin is a supported property. The pin does two cleans, and neither of them happens on this screen. The first is directions: on the cleaner's clean screen, Open in maps routes to the pin rather than to the address, which is the difference between arriving at the door and arriving on a mile-long road. The second is checking. When a cleaner starts a clean in the phone app, CleanFlo takes a location stamp and compares it with the property. The Verification section of the clean details drawer then reads At the property, or Away from the property, with the distance and the accuracy beside it. It is not surveillance of the cleaner: it is evidence for you when a client says nobody came. (The verdicts a clean start can be given. Only two of them are flags. A property with no pin always lands on the middle one, which is not a problem with the cleaner.) > A property with no map pin is never flagged. CleanFlo does not guess, and it does not treat a missing pin as a failed check: the clean simply reads Property has no coordinates with a link to add them. So the pin is optional in the real sense. Set it on the sites where being able to prove attendance matters, and leave the rest. > Location stamps are taken at the moment a clean is started and completed, not continuously, and they are attached to the clean rather than to the person. If you switch this on across your sites, tell your cleaners what is recorded and why: under UK data protection rules monitoring staff needs to be proportionate and, more to the point, transparent. A team that knows the stamp exists is a team that stops arguing about it. **FAQs** Q: Can one location belong to two clients? A: No. A location sits under exactly one client. If a building is cleaned under two separate contracts, create it once under each client, name the two records differently so nobody books against the wrong one, and keep the addresses identical. Q: Do I have to set the cleaning status by hand every time? A: No. Starting a clean in the cleaner app moves the site to In Progress and completing it moves it to Clean. The Set status: row is there for the cases the schedule cannot know about, such as a complaint that needs somebody to go and look. Q: What happens to the cleans if I remove a location? A: Removing a location is permanent and it takes the site out of your client record along with the clean list attached to it. If you are only pausing work at a site, leave it in place and set it to Awaiting Clean instead: an unused location costs you nothing. Q: Is "Use my location" accurate enough for a block of flats? A: Standing outside the front door, usually yes, and the note tells you what accuracy the device reported. Inside a stairwell or a basement it will be worse. For a block, a pin dropped on the map and a device fix taken at the door will land within a few metres of each other, and either is fine: the check allows for a radius rather than expecting a perfect match. Q: Where does the map come from, and does it cost anything? A: The map is OpenStreetMap, the same open map data a lot of the web runs on. There is no account, no key and no cost, and nothing about the property is sent anywhere to display it. The credit in the corner of the map is there because the licence asks for it. Q: Do I have to pin every property? A: No, and most businesses will not want to. Pin the sites where being able to prove attendance matters, and the ones that are genuinely hard to find. Everything else works exactly as it did: the clean is never flagged, and the cleaner is routed to the address instead of to a pin. URL: https://cleanflo.io/help/locations-and-properties/ --- #### Editing and removing clients The client page, its rail of everything about the record, the Locations/Activity/Invoices/Complaints/Messages tabs, the Edit Client drawer, and what deleting a client actually removes compared with marking them inactive. Opening a client gives you everything about that account on one page: who they are, how many sites they have, what those sites are worth, who owns the relationship, and a rail of notes, follow-ups and extra contacts alongside it. Get to a client by clicking any row in the Client Database table, or by typing their name into the search bar at the top of the app. The page that opens is the same one whichever route you take. ##### What the client page shows The header carries a breadcrumb back to Clients, the client name as the page title, and the sub-line "Client profile & locations". To the right sit the four buttons that do everything on this page. - Send Portal Link: Emails the client their portal address. It only appears when the portal is switched on for that client, and it needs an email address on the record. A toast confirms with Portal link sent. - Edit Details: Opens the Edit Client drawer: the client’s details, tags and account owner, and a Contract section that stays folded until it holds a value. The portal itself moved out of this drawer: it now opens from the Client portal button on the Client Portal row, further down the rail. - Add Location: Opens the Add Location drawer. The same button appears on the Locations tab and in its empty state. - Delete Client: Removes the client and every location under them. Read the warning at the foot of this guide before pressing it. (A client page. A full-width row of figures sits under the header, then the page splits into two columns: the tabs on the left, and a rail of everything about the record on the right.) The stats row is now the same full-width readings sheet the dashboard uses, not a page-local strip: Total sites, Clean, Awaiting Clean, In Progress and Needs Inspection count locations by cleaning status, exactly as before. Two more cards sit at the end, computed from the same invoices the Invoices tab already loads: Total Invoiced and Avg Invoice, reading "No invoices yet" rather than a false £0 on a client you have never billed. A Referred card also appears once this client has actually referred someone, or the referrals feature is switched on for your company, see The client portal for how a client's own referral link works. > The five location figures are counted by cleaning status, not cleans. A landlord with thirty flats showing 4 under Needs Inspection is telling you exactly how much of your Monday is already spoken for. What used to sit in a single hero card is now split: identity, contact details, tags and internal notes live in the rail on the right (covered in its own section below), and everything you interact with day to day sits in the tabs on the left. There is still no cleans tab, because cleans belong to a location rather than to the account, open the site to see what is booked there. ##### Locations, Activity, Invoices, Complaints and Messages Up to five tabs run across the top of the main column. Locations is the default, and it is the table covered in the locations guide: Location, Type, Address, Details, Status and a Remove action. Activity is this client's own timeline and the place you log a follow-up or a note by hand. Invoices is every invoice raised for this client, whichever clean it came from. Complaints carries a red badge counting unresolved ones, and logs whether a complaint was raised by a staff member directly or came in through the client portal. Messages only appears once messaging is switched on for your company, or a conversation with this client already exists, and carries its own unread badge. (The Invoices tab. Overdue is worked out live rather than stored, so an invoice sent and then left past its due date changes pill without anybody touching it. Open takes you to the Invoicing screen.) - Invoice: The invoice number, in the ledger face. Sortable. - Issued: The issue date, as "14 Aug 2026". A missing date shows a dash. - Due: The due date, printed in red once it is in the past and the invoice is not paid. - Amount: The invoice total including VAT. - Status: A pill: Draft grey, Sent sky, Paid green, Overdue red, Cancelled muted. Overdue is not a status you set; it is a sent invoice past its due date. - Open: Takes you to the Invoicing screen. You cannot edit an invoice from here: this tab is a read-only ledger for the account. A client you have never billed shows No invoices yet with "Invoices raised for Riverside Homes will appear here." and a Go to Invoicing button. ##### Notes, attachments and the Activity timeline The Activity tab is a composer over a merged timeline: your own notes on this client, woven together with their complaints, invoices and completed cleans into one chronological record. Nothing here duplicates data held elsewhere, a complaint logged under the Complaints tab or an invoice raised for this client simply appears on the timeline too, so there is one place to see everything that has ever happened with an account, not several to check separately. The composer at the top is a plain text box, placeholdered "Anything worth remembering about {client name}…", with a Pin this note toggle and two one-tap presets above it, Logged a call and Sent an email, which drop a starting phrase into the box for you to finish rather than submitting anything on their own. A saved note can be edited or deleted afterwards, and carries a paperclip button to attach a file, a contract, a photo, anything worth keeping against the record. Pinned notes float to the top of the timeline regardless of when they were written. Each entry on the timeline carries its own icon by type: a note, a complaint, an invoice, a completed clean, or a follow-up. With nothing logged yet, no notes, no complaints, no invoices and no clean history, the tab reads an empty state rather than several separate ones. ##### Follow-ups A follow-up is a short note with a due date, created from an Add follow-up action inside the Activity composer. Anything still open shows as its own row at the top of the rail on the right of the client page, so a reminder to call back about the extra bin does not get lost in a scrolling timeline. Each row in the rail carries the due date, the note itself, and a Done button that marks it complete without leaving the page. The panel only appears at all while at least one follow-up is open: there is nothing to see once you are caught up. An overdue, uncompleted follow-up also counts toward this client's health reading, covered next. ##### Client health Beside the Active/Inactive status badge in the rail sits a second badge answering a different question: not whether the account is active, but whether it currently needs attention. It reads one of three ways. - Healthy: No open complaint, no overdue follow-up, and the client is booking at their usual rhythm. - Attention: One or more open complaints, or one or more overdue follow-ups. Either on its own is enough to move the badge. - At Risk: The client has gone quiet against their own booking pattern and nobody has dismissed the flag. This outranks the other two: an at-risk client reads At Risk even with no open complaint and nothing overdue. It is a single reading built from signals CleanFlo already tracks elsewhere for their own purposes, the same at-risk flag the Clients list filters by, the same open-complaint count the Complaints tab badges, the same overdue-follow-up count the rail counts. There is no separate score to disagree with any of them, and the badge is never shown for an inactive client: an account you have already archived is a decision, not something that still needs flagging. ##### Extra contacts The client's main contact, the one set under Edit Details, and the one every portal link and invoice email actually uses, stays exactly as it was. The Contacts panel in the rail is purely additive: a place for the other people at that account, a site manager who is not who you invoice, a separate billing contact, anyone else worth having a number for. Each contact carries a name, an optional role label, an optional email and phone, and a Show first in this list toggle for whichever of them you reach for most. Add, edit and remove all happen inline in the panel itself, there is no separate drawer. With none added yet, the panel reads "No extra contacts yet, the client's main contact is set under Edit Details." ##### The Edit Client drawer Edit Details opens a drawer titled Edit Client. The fields are slightly different from the ones you filled in when you created the record, which catches people out: the labels are shorter and the placeholders are generic rather than worked examples. > The Client Portal fields shown below have since moved out of this drawer into their own Client portal sheet, opened from the Client Portal row on the record; the screen still shows them where they used to sit, and what each one does has not changed. (The Edit Client drawer. Everything above the portal heading is the client record. Everything below it is covered in the portal guide, including the link, the PIN and the regenerate button.) - Client Name *, placeholder "Business or personal name". The only required field, and the name that goes on the invoice. - Contact Name, placeholder "e.g. John Smith". - Email, placeholder "contact@example.com". This is where the portal link and any invoice email goes. - Phone, placeholder "+44 7700 900000". - Send overdue payment reminders, on by default. Switch it off for a client you have agreed to chase differently, without touching the automatic reminders every other client still gets. - Tags, the same seven presets and the same "Add custom tag..." field as when you created the client. - Account Owner, a select of your owner and supervisor staff. Unset reads Unassigned everywhere it appears rather than a blank cell, on this client's own rail, and as a column on the Clients list, where a My Clients filter tab shows only the ones assigned to you. - A Contract section, folded until it holds a value: start date, term in months, notice period in days, and contract value. Entirely optional, a domestic or ad-hoc client needs none of it, but once a start date and a term are both set, the rail shows a renewal date worked out from them. - The Client Portal block shown above no longer lives in this drawer: the link, the PIN, the visibility level, clean requests and self-service permissions are all set from the record’s own Client portal sheet instead. Press Save changes and a toast reads Client details updated. Nothing is saved until you do: closing the drawer with the X or with Cancel throws the edit away without asking. One thing you might expect to find in this drawer is not in it: the Active and Inactive status is not a field here. Everything about locations is also elsewhere: the drawer edits the account, and the sites under it are managed from the Locations tab one row at a time. Extra contacts beyond the one above, and this client's own notes, live in the rail and the Activity tab respectively rather than in this drawer, see the next section. > Renaming a client renames them everywhere the record is read from, including the client page, the schedule and the portal masthead. Invoices already raised keep the name that was printed on them, which is what your records should show, so a rename does not rewrite history. ##### Selecting several at once The Client Database table has a checkbox column, plus a select-all box in the header labelled "Select all clients on this page". Ticking anything makes a ghost button appear in the page header reading Delete ({n}) with the count in it. It is the only bulk action on this screen: there is no bulk edit, no bulk tag and no bulk status change. (Two rows ticked. The header button counts what you have selected, and select-all only covers the page you are on, not all 14 clients.) ##### Deleting, and what it takes with it There are two deletes and they ask different questions. From the client page, Delete Client asks 'Delete "Riverside Homes" and all their locations? This cannot be undone.' and the confirm button reads Delete Client. From the table, Delete ({n}) asks "Delete 2 clients? This cannot be undone." and the confirm button reads Delete All. > Deleting a client deletes every location under them. The wording in the confirmation is literal: "and all their locations".,There is no archive, no bin and no undo. If you are only trying to get an old account out of the way, edit them and leave them Inactive instead. An inactive client costs nothing, keeps their invoice history reachable and drops out of the Active figure at the top of the screen. If you want to | Do this | What happens to the invoices Stop working for someone but keep the paperwork | Leave the record in place and set it inactive | All still there, on the Invoices tab Remove one site but keep the client | Use Remove on that row of the Locations table | Untouched: invoices belong to the client, not the site Get rid of a duplicate you created by mistake | Delete Client on the client page | Gone with the client Clear out several test records at once | Tick them and use Delete ({n}) | Gone with the clients ##### When the record is not there Following an old link, or opening a client somebody else deleted while you had the tab open, gives you a plain not-found page rather than an error. The client version reads We could not find this client with "It may have been deleted, or the link you followed is out of date." and a Back to clients button. The location version reads We could not find this location with "It may have been removed, or the link you followed is out of date." and Back to client. (The two not-found states. A genuine failure to load looks different: it says "Could not load your clients" and offers a retry, which means the record probably still exists.) The distinction is worth knowing. A not-found state means the row is gone. A red error state with a Try again button means CleanFlo could not reach the database, and the record is almost certainly fine. **FAQs** Q: Can I merge two clients I created twice by mistake? A: Not automatically. Move any locations you want to keep by adding them again under the client you are keeping, then delete the duplicate. Invoices cannot be moved between clients, so if both records have been invoiced, keep the one with the billing history and mark the other inactive rather than deleting it. Q: Does deleting a client delete their invoices? A: The invoices are no longer reachable from a client that does not exist. Export what you need first: the Client Database footer has an Export CSV, and Reports has an invoice ledger export that covers the money side. For anything you are required to keep, export before you delete rather than after. Q: Why can I not see the Send Portal Link button? A: It only appears when the client portal is switched on for that client. Press Client portal on the Client Portal row, turn on Enable client portal, set a PIN and save. The button appears in the header on the next load. Q: Where do I change a client from Active to Inactive? A: The status is on the client record and shows as a pill in the rail's identity block and in the Status column of the table. It changes how the client is counted and filtered, and nothing else: an inactive client can still have cleans booked, invoices raised and a working portal. Q: My client shows At Risk but I know everything is fine. What do I do? A: Dismiss the flag from the Clients list, the same place the Dashboard's at-risk row and this client's health badge both read from. A dismissal is not permanent, the moment a new clean is booked for them with a later date, it stops suppressing the flag on its own. Q: What is the difference between Account Owner and the client's own contacts? A: Account Owner is internal: which member of your own team owns this relationship, set from a select of your owner and supervisor staff, and used for the My Clients filter on the Clients list. Contacts, in the rail, are the client's own people, a site manager, a billing contact, separate from the one primary contact your portal links and invoice emails actually use. Q: Can I set a follow-up without writing a note? A: A follow-up is created from the Add follow-up action inside the Activity tab's composer, so writing something is part of creating one. Once it exists it shows as its own row in the rail with a due date and a one-tap Done button, separate from the note timeline underneath it. URL: https://cleanflo.io/help/managing-clients/ --- #### The client portal Give a client a link and a PIN and they can see their own cleans without ringing you. Three visibility levels decide how much, and they can ask for a clean through it if you let them. The client portal is a small web page your client opens on their phone to see what has been cleaned, what is booked and what they owe. There is no app to install and no password to remember: a link and a PIN. It exists to stop the drip of small questions. Has the changeover been done. When are you next in. Did we pay that one. A letting agent with nine flats can answer all three themselves in about fifteen seconds, and you never see the email. It is off by default for every client, and you choose how much each one can see. A holiday let manager who wants everything and a commercial client who should not see your cleaners' names can both have a portal with different settings. ##### Switching it on Open the client and press Client portal, the button beside the Client Portal row on the record. The sheet that opens is titled Client portal, and it opens with a summary line reading off the live settings, for example "Portal on · Full Transparency · 1 of 4 permissions". Turn on Enable client portal and four things appear underneath: the link, the PIN, the visibility picker and the requests toggle. > These controls used to live inside Edit Client, and the screen below still shows them laid out that way: what each one does has not changed, only where you open it from. (The portal block inside Edit Client. The link box only appears once a portal has actually been saved; on a brand new client the address reads "Looking up your portal address…" until it exists.) - Portal Link: The address itself. New clients get a branded one built from your company and their name, in the form app.cleanflo.io/brennan-cleaning/riverside-homes. Older records still carry the legacy token form, app.cleanflo.io/portal/8f3c1d…, and both keep working. - Copy Link: Copies it to your clipboard and the button briefly changes to Copied! before going back. Use this when you want to send it by text or WhatsApp rather than email. - Regenerate token: Builds a new address and kills the old one. It asks first, and there is a warning while the new link sits unsaved. Covered below. - Email Portal Link to Client: Full width, and it sends to the email address on the client record. A toast confirms with Portal link sent. The same thing is available from the client page as Send Portal Link. - Portal PIN (4–6 digits): Digits only, four to six of them, in a password field with a show and hide eye. Saving anything else is refused with Portal PIN must be 4–6 digits. - Allow clean requests: Lets the client ask for work. Off means no request button appears in their portal at all, with no explanation on their side. > Pressing Regenerate token asks "Create a new portal link? The link already sent to this client stops working as soon as you save." with the confirm button Create New Link. Once you agree, a warning sits under the link box reading "A new link is ready. It replaces the one above (and breaks it) when you save." Nothing has actually changed until you press Save changes, so a regeneration you did not mean can still be abandoned with Cancel. Regenerating is the right move in exactly one situation: the link has gone somewhere it should not have, usually a forwarded email or a departing member of the client's staff. Send the new one afterwards, because the client will not be told automatically. ##### The four visibility levels This is the setting worth getting right the first time. It is a single choice of four cards, and it changes what the portal is allowed to load, not just what it draws: at the lower levels the withheld information never leaves your account. (The Visibility Level picker. The description under each card is the app's own summary, and it is accurate: these are the four things being traded off.) | Full Transparency | Moderate | Minimal Tabs shown | Overview · History · Invoices | Overview · History · Invoices | Overview · History Locations tile and section | Yes | No | No Upcoming Cleans on Overview | Yes | Yes | No Cleaner name on a clean | Yes | No | No Clean price | Yes | No | No Street address of the site | Yes | Site name only | Site name only Start and finish times | Yes | No | No Clean notes | Yes | No | No Completion notes and checklist | Yes | Yes | No Invoice reference number | Yes | Issue date shown instead | Issue date shown instead Outstanding total | Yes | Yes | Yes Printable clean report | Yes | Yes | No > Two things survive at Minimal that people do not expect. The Outstanding figure still shows, and the Outstanding Invoices list still appears on the Overview, so a minimal client can still open a full invoice with its line items and your bank details. Minimal restricts the operational detail, not the bill. There is no redaction wording anywhere in the portal. Nothing says "hidden" and nothing shows a row of dots. Withheld fields simply are not drawn, so a client on Moderate does not know a cleaner name exists to be hidden. If a level is unset for any reason, the portal falls back to Minimal rather than to Full. > Your cleaners' names are personal data, and Full Transparency shares them with a third party. That is usually reasonable and often expected in domestic work, where the same person turns up every week. It is a different question in a commercial contract with a client who has asked for staff details for their own reasons. Moderate gives the client everything they need to check the work was done without naming the person who did it. ##### What the client actually sees The link opens a dark page with one card on it. Under the lock icon sits your company name, then the heading Client Portal, then "Enter your PIN to continue". The input is a single field styled to look like digit boxes, with the placeholder shown as four bullets, and it accepts nothing but numbers. (The PIN screen. The button is disabled until four digits are in, and the field label is there for screen readers rather than being printed on the card. The portal is its own surface, neither the office app nor the cleaners' logbook, so it is drawn here as the card it is.) That "Powered by CleanFlo" line under the button is on by default and can be switched off under Settings → Company → Client Portal ("Show 'Powered by CleanFlo' to clients"), if you want the portal to read as purely your own brand. The same switch also drops a small "via CleanFlo" mention from the footer of every client- and staff-facing email, a clean assigned, an invoice, a quote, a schedule, not just the portal. It does not touch email addressed to you as the account owner, such as your welcome email or a low-stock alert: those are CleanFlo talking to its own customer, not standing next to your brand in front of your client. - Fewer than four digits typed, and the line under the field reads Enter at least 4 digits. - A wrong PIN reads Invalid PIN. So does an address that does not exist, deliberately, so that guessing at links tells nobody anything. - Too many attempts from one connection reads Too many requests. Please try again later. There is no lockout on the client, no attempt counter and no cooldown clock: it clears on its own. - A disabled portal, a bad link and an expired one all give the same page: Portal not found, with "This link is invalid or has been disabled." and an invitation to get in touch with you. A correct PIN opens a session that lasts a day, held in the browser tab, so a client who comes back that afternoon is not asked again. There is no "remember me" and no way to stay signed in beyond that. Signing out asks "Sign out of this portal? You will need your PIN to get back in." (The portal Overview at Full Transparency. The tabs across the top are Overview, History and Invoices; at Minimal the Invoices tab is removed from the row entirely.) - Overview: The stat tiles, upcoming cleans, your contact details under Contact Your Cleaner, the locations list and anything outstanding. The Locations tile and section are full visibility only. - History: Every clean, as cards rather than a table, with a search box placeholdered "Search cleans..." and filter chips reading All · Scheduled · In Progress · Completed · Cancelled. A completed clean carries a Rate button until it has been rated. - Invoices: Everything except drafts, with Outstanding and Total Paid above the list. Opening one shows the line items, the totals and, when the invoice is unpaid, a block headed Payment Details, BACS Transfer. If the company has set a payment link, a Pay Now button appears beside it, with a line making clear it leads to the company's own payment page and that CleanFlo neither processes nor sees the payment. There is still no PDF: the invoice is viewed on screen, not downloaded. Opening a completed clean at Moderate or Full Transparency (never at Minimal) can show the photos your cleaner took on that visit. A small camera icon on the clean's row in History hints that photos exist before it is opened; tapping the clean reveals a thumbnail strip, and tapping a thumbnail opens a full-screen viewer, one photo at a time. Nothing is preloaded: each photo is fetched only when that clean is actually opened, through a short-lived signed link rather than a permanent public URL, so there is no bulk photo payload sitting in the portal on every visit. > The portal is read-only apart from three things: rating a completed clean out of five, saying what went wrong if that rating is low, and asking for a new one. Your client cannot move a clean, cancel a clean, edit anything or hold a running conversation with you inside it. Everything else is a phone number and an email address on the Overview tab. ##### Before and after A cleaner can label a photo Before, After or leave it as a plain Note at the moment they take it. The app has already guessed for them, from whether the clean's checklist was complete at that instant, and the label is there to correct that guess rather than start from a blank choice. Where a Before and an After genuinely pair up, the first Before with the first After, the second with the second, counted within each label's own sequence rather than across the whole clean: the viewer shows the two side by side as one image instead of as two separate thumbnails in the strip. A Before or After left without a partner, and anything labelled Note, still shows on its own. ##### When a client asks for a clean With Allow clean requests on, a pill sits at the bottom right of the portal reading Request a Clean. It opens a short form: a location select, a required Service Description * placeholdered "e.g. Deep clean, regular tidy, window cleaning", a Preferred Date that cannot be in the past, a free-text Preferred Time placeholdered "e.g. Morning, 2pm", and Notes. Submitting it replaces the form with Request Submitted! and "Your cleaning request has been sent. We'll get back to you shortly." From the client's side that is the end of it: there is no requests list in the portal, no pending badge and no status to follow. It arrives on your side in two places. (The Dashboard card. It is hidden entirely when there is nothing pending, so an empty Dashboard means nobody has asked for anything.) The Dashboard card is headed Client Requests with the sub-line "Pending clean requests from client portals" and a count chip. Each row shows what they asked for, the client and the date, and a Convert to Clean button that opens the clean drawer with the details carried across. (The same request on the Schedule. The Requests button in the header only appears while something is pending, and it carries an alert badge.) On the Schedule, the Requests button in the header opens a panel headed Client Requests, with the full meta line of client, location, date and time, the note they typed, and two buttons: Approve and Decline. With nothing pending it reads No pending requests. > Nothing a client requests is booked automatically. A request is a message with a date attached to it, and until you approve it or convert it, nobody is rostered and nothing appears in anybody's week. ##### Ratings, reviews and low-rating feedback A completed clean carries a Rate button in History until it has been rated: five stars, tapped once. The rating is recorded the instant the stars are tapped, whatever happens next. Four or five stars shows a plain thank-you, and, only if you have set a review link under Settings → Company → Client Portal, a Leave a review button pointing wherever you want reviews to go: your Google Business Profile, Trustpilot, or anywhere else with a URL. CleanFlo does not generate, host or verify the review itself, only the link to write one. Three stars or fewer never shows that link, even if one is configured, and offers an optional textarea instead (asking what could have gone better) with Skip and Send. Sending is a second, independent step: the rating already stands whether or not the client bothers to add anything, and a message that is skipped, or one that simply fails to send, has no bearing on it either way. A message that does go through emails you and lights up your notification bell, linked to that client's record, so a bad clean reaches you the same day rather than surfacing as a quiet non-renewal months later. > There is no review link set by default. Until you add one under Settings → Company → Client Portal, a five-star rating just shows the thank-you with nothing to click. ##### Referrals, entirely optional A Refer a Friend card can appear on the portal overview, between Contact Your Cleaner and Locations. It does not exist for any client until you write a referral offer under Settings → Company → Client Portal → Client Referrals, leave that field blank and no client anywhere sees a referral card at all. There is no separate on/off switch, because the offer text and the switch are the same field. Once set, every client with portal access sees your offer text and a Copy your referral link button. The link is theirs alone, yourcompany/quote?ref= followed by a code unique to that client, so a request that comes in through it lands in Enquiries already tagged Client referral, via {client name}, and you know exactly who to thank. > There is no automatic reward, discount or credit. CleanFlo records who referred whom and nothing more, honouring the offer, whatever it is, is a decision you make by hand each time an enquiry like this converts. **FAQs** Q: Does my client need to create an account or download anything? A: No. The portal is a web page. They open the link on a phone, tablet or laptop, type the PIN, and they are in. It is built phone-first, so it behaves like an app on a phone without being one, and it can be added to the home screen if they use it often. Q: Can two people at the same client have different PINs? A: No. One client record means one link and one PIN, shared by whoever at that business needs it. If you need to cut one person off, regenerate the token and change the PIN, then send both to the people who should still have access. Q: Can clients see photos my cleaners took? A: At Full Transparency and Moderate, yes. A completed clean in History shows a strip of the thumbnails your cleaner took, and tapping one opens it full-screen, one photo at a time, with a matched Before/After pair shown together rather than as two separate thumbnails. At Minimal, no: that tier hides completion detail entirely, photos included, and that has not changed. Nothing is preloaded: photos are only fetched when a client actually opens that clean, and each one is served through a short-lived signed link rather than a permanent public URL. Q: What does the client see if I switch the portal off again? A: The same page as a broken link: Portal not found, with "This link is invalid or has been disabled." and a prompt to contact you for a new one. Switching it back on restores the same address, so a portal turned off for a season can be turned on again without resending anything. Q: Can they pay an invoice through the portal? A: By transfer, always: an unpaid invoice shows a block headed Payment Details for BACS transfer with your bank, account name, sort code and account number, deliberately selectable so it can be copied into online banking. If you have set a payment link (see Sending and chasing an invoice), a Pay Now button also appears there, taking the client to your own payment page: CleanFlo does not process that payment or see when it lands. There is still no PDF download; the invoice is viewed on screen. Q: Do I have to offer a referral scheme? A: No: it is entirely off by default. Nothing about referrals appears anywhere until you write an offer under Settings → Company → Client Portal → Client Referrals, and leaving it blank keeps every client's portal exactly as it was before this existed. URL: https://cleanflo.io/help/the-client-portal/ --- #### The Locations Map Every property on one map, coloured by the client it belongs to and iconed by what kind of place it is, with the same register beside it so the map is a way to browse, not a decoration next to one. An address column is easier to drive than it is to picture. Locations Map puts every property you clean at on one map (pinned, coloured by the client it belongs to, iconed by what kind of place it is) with the same list beside it, kept in step, so the map is a second way into the register rather than a picture bolted on next to it. ##### Reading the map Every location with saved coordinates gets a pin. The badge’s colour is the client it belongs to (the same colour that client’s avatar chip carries on the Clients register, so a client is never blue on one screen and green on another) and the glyph inside it is the property type: an office, a home, a holiday let, a retail unit, or other. (The map on the left, the same properties as a ruled list on the right. Clicking a pin selects its row; clicking a row centres its pin: the two never disagree about which property is which.) Click a pin and its popup names the property, the client and its address, with two links: Open record, straight to the location’s own page, and Directions, which opens the point in whatever maps app your phone or browser already uses. Neither is CleanFlo drawing a route of its own: the second is a deep link out, the first is the property’s real record, with its access notes, contacts and clean history. ##### The legend is the filter The Client and Type panels beside the map are not a key you read. They are buttons. Click a client to hide every pin of theirs, or a property type to hide all of that kind; click again to bring them back. The count on each chip updates with whatever search is active, so “3” always means three properties matching what is on screen right now. (Harbour Lettings switched off: its three pins disappear from the map and its rows drop out of the list beneath, without touching anything else that is filtered.) Fit all pins zooms and centres the map on whatever is currently shown: every plotted property if nothing is filtered, or only the ones a filter and a search have left standing. ##### Needs a pin A property with no saved coordinates cannot appear on a map: there is nowhere to put it. Rather than vanishing silently, it drops into its own list beneath the main register, headed Needs a pin, so a gap in the map reads as something to fix rather than something missing without a reason. Opening one takes you to its own record, where a postcode or a dropped pin gives it somewhere to be plotted. > The same gap already matters off this screen: a property with no coordinates cannot have a clean’s start or finish checked against it in the cleaner app. Fixing it here is fixing that too. ##### Searching The search box matches a location’s name, its client’s name, its address line, its city or its postcode, and narrows the map, the legend counts and both lists at once. There is no separate “search the map” and “search the register”, because they are the same properties read two ways. ##### Who sees this Locations Map sits under Clients & Team in the sidebar, and a supervisor sees it too, the same operational reach they already have over Clients and Schedule. It is not gated by a company module: it draws on whatever locations already exist, and there is nothing to switch off. ##### What the map does not do It is a way to browse the register, not a second place to edit it: moving, renaming or retyping a property happens on its own record, not by dragging a pin. It does not plan a route across several cleans; a pin’s Directions link is a single point sent to your phone’s own maps app. And the tiles themselves come from OpenStreetMap over the network, so the map needs a connection to draw. The register beside it does not. **FAQs** Q: Why does one of my properties not show up on the map? A: It has no saved latitude and longitude. It still appears in the “Needs a pin” list beneath the register. Open it from there and add a postcode, or drop a pin on its own record, and it plots the next time the map loads. Q: Can I edit a location from the map? A: No. Click a pin or a list row to open the property’s own record, and edit it there. The map is a way to browse and find, not a second editor for the same data. Q: Is this the same as getting directions in the cleaner app? A: No. A pin’s “Directions” link opens that one point in your phone’s own maps app: it is a deep link out, not a route CleanFlo plans itself. Q: Can a supervisor see the Locations Map? A: Yes. It sits alongside Clients and Schedule in a supervisor’s own reach, and needs no company module switched on. Q: Does the map work offline? A: The map tiles are loaded from OpenStreetMap over the network, so the map itself needs a connection to draw. The list beside it reads the same data you already have loaded and does not depend on the tiles. URL: https://cleanflo.io/help/locations-map/ --- #### Property issues What a cleaner reports when something is wrong with the property, not the clean: damage, a repair needed, something missing, supplies running low or a safety concern. Two taps from the active job, a photo if there is one, and it works offline. High severity emails the owner today; low and medium reach your own admins and wait for you. The admin panel resolves it, closes it, or books the repair as a job. A cleaner in an empty property sees things the office never will: a cracked shower screen, a kettle that has gone missing, a fire door propped open. Property issues is the one row that turns "I saw something" into a record the owner is told about, and that can become a repair job. CleanFlo already has two places to write down that something went wrong. An incident is about a person: somebody was hurt, or nearly was. A complaint is about the client's opinion of the work: they are unhappy with what you did. A property issue is neither. It is about the building itself, and it is raised the moment a cleaner notices it: a cracked shower screen, a dripping tap, a missing kettle, the loo roll running out, a fire door that will not shut. See Logging an incident for the health and safety register; this guide only covers the building. It is addressed to the property's owner, not to your own compliance record, and it has a life the other two do not: it can become a repair job on your schedule. That is why it is its own thing rather than a category on either of the others. ##### Raising one from the clean On an active clean, a row labelled Report a property issue sits among the other things a cleaner can do besides the checklist. Tap it and a sheet opens: what kind of problem, how serious, a few words on what is wrong, and, if there is one, a photo. Nothing is preselected for the kind of problem, so a cleaner always chooses rather than the app guessing wrong. Severity starts on Medium and only needs touching when the answer is genuinely High, because that is the one choice on the sheet with a consequence outside the building. Two taps covers the common case: pick the kind, type what is wrong, send it. (Report a property issue, as a cleaner sees it on an active clean. The five kinds are icons a cleaner reading none of CleanFlo's 27 languages well can still tell apart; severity is three words rather than a scale, because the only thing it changes is whether the owner is emailed today.) The title is the only thing that must be filled in beyond the kind: leave it blank and the sheet asks for "Say what is wrong in a few words" rather than sending nothing. The description and the photo are both optional. Nothing is read back to the cleaner afterwards, deliberately: this sheet mints its own record and confirms only that it left the phone, with no "your reports" list to check back on. > It works offline exactly like the rest of an active clean. Send it with no signal and the toast reads Saved on this phone. It will send itself when you have signal. rather than claiming it was reported. With a photo attached, that queues alongside it and lands with it, so the two never arrive hours apart. ##### Who is told, and when The company's own admins are told at every severity. Only High goes further and emails the property's owner straight away; Low and Medium stay on the record for you to raise when it suits, so an owner reading about a spent light bulb does not start skipping the email that says the boiler has failed. Severity | Who hears, and when Low | Your own admins, pushed straight away. The owner is not emailed. Medium | The same: admins now, and the owner only when you tell them. High | Admins now, and the owner is emailed immediately as well. The owner's email carries no photographs and no link to any: what they see is the property, the kind of problem, the title, the severity, when it was found and who found it, with the description underneath if one was written. Any photograph taken stays in the client portal rather than travelling in an email that could be forwarded on with no login at all. Nothing has been repaired or ordered on the owner's behalf by sending it; the email asks them to say how they would like it handled. An issue raised with no signal is picked up within fifteen minutes of the phone syncing: that is how often CleanFlo sweeps for one that was queued, or whose notification failed to send the first time. ##### The admin panel A Property issues panel lists everything reported. It sits at the foot of every property record, under Cleans, whatever type of property it is. An office with a fire door propped open needs it as much as a holiday let does. It is also a tab on the client's page listing every property they own together, each row there carrying which one it was found at. Open first, then worst severity, then newest: a high-severity fault from Tuesday that nobody has touched sits above a low one raised this morning, because the list is a queue of work rather than a feed. Collapsed, a row is one line: what is wrong, where, how serious, and where it has got to. Open it and it carries the description, any photos, and the actions. - Mark resolved: Type What was done and press it. A resolution note is required: an issue cannot be marked resolved with nothing said about it. - Close: Offered once an issue is resolved. Finishes the record. - Convert to a job: Opens the ordinary job drawer, prefilled with a repair job for this property. A brand new property, or a client with nothing reported at any of their properties, reads No property issues recorded. It is shown only once the read has actually succeeded: a property whose issues could not be loaded is never drawn the same way as one with genuinely nothing wrong. ##### The status ladder An issue moves through Open, Owner told, Resolved and Closed, forward only. Only a high-severity issue that emailed the owner reaches Owner told; a low or medium one that nobody has emailed goes straight from Open to Resolved when it is fixed. There is deliberately no route straight to Closed from Open or from Owner told: closing a record with nothing ever said about it would lose the one sentence that says what happened, so an issue raised in error is resolved saying so, then closed. > Status moves forward only. Nothing on this panel puts an issue back to an earlier step, so a resolution note, once written, stays part of the record even after the issue is closed. ##### Convert it to a repair job Convert to a job opens the same job drawer every other job on your schedule is booked through, prefilled with a title starting "Repair: " followed by the issue's own words, the right client and property, the issue's description carried into the notes, and a job type worked out from what kind of property it is. Nothing about the drawer itself is special: it keeps its own conflict checks, its own line items, its own checklist, exactly as booking any other job does. > Linking the new job back to the issue is done by looking the job up afterwards rather than by the drawer handing back an id, so on the rare occasion that lookup finds nothing, CleanFlo says so plainly rather than guessing: the job is created, but the panel tells you this issue is not linked to it and still shows as unconverted. ##### The Property issues module All of this sits behind Property issues on Settings → Modules, on by default, and already on at setup for the Holiday lets and Airbnb trade and the End of tenancy and moves trade. Switch it off and the row disappears from the active clean and the panel disappears from both the property page and the client tab: nothing new can be raised. An issue already open stays open and can still be worked through to resolved and closed while the module is off, and switching it back on shows everything exactly as it was. **FAQs** Q: How is a property issue different from logging an incident or a complaint? A: An incident is about a person being hurt or nearly hurt, and lives in Health & Safety. A complaint is the client unhappy with the work you did. A property issue is about the building itself, something an owner needs to know is wrong with what they own, whoever noticed it and however the clean itself went. Q: Why does a low-severity issue not email the owner straight away? A: Because an owner emailed about every dripping tap stops reading the email that says the boiler has failed. Low and medium issues go to your own admins immediately and it is then up to you when to pass them on; only High emails the owner the moment it is raised. Q: Does switching the Property issues module off delete anything already reported? A: No. The action disappears from the active clean and the panel disappears from the property and client pages, so nothing new can be raised, but an issue already open can still be resolved and closed, and everything recorded is shown again unchanged the moment the module goes back on. URL: https://cleanflo.io/help/property-issues/ --- #### Key safe and alarm codes A key safe or alarm code, stored encrypted rather than typed into a notes field: an owner adds or rotates it from the Keys & access panel, and it is shown, never displayed, to only an owner or the cleaner booked at that address today. Every reveal is logged, who, when and from which job, with the last twenty on the panel itself. A code past its rotation window gets the company's owners one reminder each morning until it is changed. A supervisor can see the list and the log but cannot act on either. A key safe code typed into a notes field reaches every phone it has ever synced to and sits there for as long as the note does, read by whoever is assigned next with nobody keeping count. Access codes gives it a home of its own: encrypted at rest, shown one tap at a time to whoever is actually meant to see it, and logged every single time. A key safe number is usually typed into whichever box happens to be open when somebody thinks of it: the property notes, a message to the team, the top of a paper sheet in a drawer. It travels wherever that field travels, forever, to everyone who is ever assigned there, and nobody can say afterwards who read it or when. Access codes gives a key safe or alarm code somewhere else to live: encrypted where CleanFlo stores it, revealed rather than displayed, and only to an owner or to the cleaner standing at that address on the day they are booked there. It sits inside Keys & access, the panel on a location's own page that already holds the other half of the same question: the physical keys, fobs and cards you are trusted with for a site, and who is currently carrying each one. That register answers "who has the key"; access codes answers "what is the number for the keypad", and CleanFlo keeps the two apart on purpose, because a key wants to be visible so it comes back, and a code wants the opposite. ##### Where it sits Open a location and, above the job history, Keys & access carries an Access codes section of its own, underneath whatever keys and fobs are already on file for the same site. A brand new property, or one with nothing added yet, reads No access codes on file with a line explaining what belongs there rather than in the notes. ##### Adding or changing a code Add code opens a short sheet, and there is deliberately no way to load a current value into it: showing a stored code inside an edit form would be a reveal with no log, reachable by anyone who could open the drawer, which is the one thing this feature exists to stop. Rotating a code is the same act as adding the first one, type the new number, so the sheet says so rather than leaving an empty field that looks like a bug. - What it opens: Free text, up to 40 characters. Key safe is the default; use Alarm, Side gate or your own words for a second code at the same address. Locked once a code exists: a rotation keeps the same label rather than renaming it. - The code: 4 to 12 characters: numbers, letters, # and *. Hidden while you type unless you press Show what I am typing. Encrypted the moment it is saved, and never shown on this screen again, to anyone, including whoever just typed it. - Hint: Up to 60 characters, what a cleaner sees before they ask for the code, for example "4 digits, on the back gate". It cannot contain the code itself and cannot contain three digits in a row, so a hint that is really the code cannot be saved. - Ask me to change it every: Days, from 7 to 365, defaulting to 90. Saving a code, first entry or rotation alike, resets this clock. - Remove: Deletes the code and the record of who was shown it together. What the activity feed already logged about it stays. (Add an access code. Nothing can be prefilled into The code, by design: the sheet cannot show a value it is not allowed to reveal.) ##### Who can see it, and when A code is never stored anywhere it could simply be read off a page. It is decrypted only for the length of one Show, and the same check decides every one of them, whether it is pressed from the property page or from a job: the rule is enforced once, in one place, not copied into two. Who | Can they see the code An owner | Yes. From the property page, any time, logged the same as anyone else's reveal. A supervisor | No. They can see the codes list, the rotation state and the reveal log, but not the code itself. A cleaner booked at this address today, on a job still scheduled or in progress | Yes. From that job, in the app, for sixty seconds. A cleaner booked here tomorrow, or on a job already finished | No. A cleaner booked somewhere else today | No, whatever else is on their own schedule. ##### What the cleaner sees On today's job, directly under Getting in, the same free-text access notes a cleaner has always read, sits a row for every code on file at that address: Show the Key safe code. It is only there while the job is still scheduled or running: it does not appear early, and it is gone once the clean is complete. Tap it and the code sits on screen for sixty seconds with a countdown, then hides itself; Hide now takes it away sooner. Underneath, a line reads plainly, "Every code you are shown is recorded." Nothing keeps a copy on the phone: leave the job and it is gone, and opening it again shows the button, not the number. > With no signal, the row for that code reads Connect to see the code in place of a button. There is no queued reveal waiting to arrive later: handing over a credential at some unknown future moment, against a job that might by then be finished, is not a promise this feature makes. Getting in, above it, still works offline exactly as before. (Today's job at Gull Cottage. Getting in is the free-text note it has always been; the row beneath it is the encrypted half of the same answer, one code on and one offline.) ##### Every reveal is logged A code is never decrypted before the record that says so exists: who asked, when, and, for a cleaner, which job they asked from. That happens in the same instant as the reveal, so there is no route to a code that leaves no trace, not even an owner's own Show on the panel. On the property page, a disclosure under the list, Every time a code was shown here, opens onto the last twenty, who and when, in the same ledger style as the rest of the record. A code that has never been shown reads Not shown yet; once the full log runs past what the panel actually loaded, an unshown code reads Not shown recently instead, because silence past that point proves nothing either way. The activity feed carries its own line too, worded plainly: it "revealed the Key safe code for" the property, or "rotated the [label] code for" it when a code is changed rather than shown. Neither the feed, nor the reveal log, nor anything else in CleanFlo ever carries the code itself. What is recorded is that it happened, never what it was. ##### Rotation reminders The panel's Changed column says in words how long a code has been on file, and State reads Rotation due once it passes the window you set for it, in place of the ordinary In date. The badge is not a judgement on the code, it only says a date has passed: nothing here knows who has since written the number down or moved on. Once a code is due, the company's owners get a push notification and an email, once per company each morning rather than once per code: a company with several key safes due at once gets one message naming all of them, not several. Leave it and it asks again after thirty days; change the code, which resets both Changed and the reminder together, and the asking stops. ##### The notes field still exists, and CleanFlo watches it Access notes, the free-text field on Edit Location, still travels to a cleaner exactly as it always has, cached offline and shown as Getting in. CleanFlo does not edit it, block it or scrub digits out of it: it is a field people use for a dozen ordinary things, side gate, dog on site, bins in the alley, and clearing numbers out of it to enforce a rule nobody agreed to would destroy real notes to catch a minority of them. What it does instead is notice. A note with digits sitting close to the words key, safe, alarm or code, a phone number is never mistaken for one, gets a line on the property page: "That note looks like it has a code in it: everyone assigned here can read it and nothing records who did. Access codes, below, keeps it encrypted and logs every reveal." The Edit Location drawer carries the same steer under the field itself: "Codes belong under Access codes, where they are encrypted and every reveal is logged." ##### Supervisors A supervisor sees exactly what an owner sees on this panel, the codes list, the rotation state and the reveal log, and can act on none of it: no Add code, no Show, no Change, no Remove. That is deliberate rather than a gap: a shift lead planning a week needs to know an address has a key safe on file, and to be able to answer who opened it on Tuesday, and neither of those is the code itself or a write. ##### The Keys & access module Access codes sits inside Keys & access on Settings → Modules, the same switch the key and fob register shares. Switch it off and the whole panel disappears from the location page for owner and supervisor alike: nothing new can be added, shown, changed or removed, and every code already stored stays exactly where it is, encrypted, waiting for the module to come back on. A code a cleaner could already see stops working the moment the module is off: the check runs again on every reveal, so it is refused with the same sentence anyone else would get, "Keys & access is switched off for this company," rather than a stored code quietly becoming readable because a switch was missed. **FAQs** Q: Can I see the code I saved after I have typed it in? A: No, not on this screen, and not ever, by design. The panel only ever offers Show, which calls the same reveal used everywhere else and is logged the same way: an owner reading their own code leaves the same kind of row in the record as a cleaner reading it. Changing a code means typing a new one into a blank field, not editing the one that is already there. Q: What does a cleaner see if they need the code and have no signal? A: Connect to see the code, in place of the button. There is no queued reveal waiting to arrive once a signal returns: a credential handed over at some unknown later moment, against a job that might by then be finished, is not a promise this feature makes. Getting in, the ordinary access notes above it, is unaffected and still works offline as before. Q: Does switching Keys & access off delete our codes? A: No. The panel disappears from the property page and nothing new can be added, shown, changed or removed while it is off, but every code already stored, and everything in the reveal log, is kept exactly as it was and reappears the moment the module goes back on. URL: https://cleanflo.io/help/access-codes/ ### Your team #### Adding a cleaner The Staff screen and its five tabs, the two ways to give a cleaner access, the password that is only shown once, and what your cleaner does with the email that arrives. Adding a cleaner does two things at once: it creates their record on your team, and it creates the login they use on their phone. Which of the two routes you take decides who ever sees the password. Everyone you add starts as a plain cleaner, with access to the phone app and nothing else: their own cleans, their own hours and their own messages. There is one role above that, supervisor, which an owner can promote somebody into later from their row on this screen: covered in full in Editing, deactivating and removing staff. Adding somebody here never grants it: every new starter begins as a cleaner. ##### The Staff screen Open Staff in the sidebar. The page is titled Staff with the sub-line "Manage your cleaning team", and four figures across the header count your Total Staff, Active, Inactive and Invited. (The Staff screen on the All tab. The card is headed Team directory, and its sub-line changes depending on which tab you are on rather than staying the same.) - All: Everyone on the team, active or not. The default. - Active: People who can currently sign in. - Inactive: People you have deactivated. They stay in your records and keep their clean history. - Invited ({n}): Invitations you have sent and what has become of them. The count in brackets only appears while something is pending, so a plain Invited means there is nothing outstanding. - Performance: Clean counts per cleaner over the last 30 days. It replaces the directory table rather than filtering it, and the card sub-line changes to "Clean stats, last 30 days". The table has four columns and a row of actions. Name is the initials avatar, the name as a link and the job title underneath, defaulting to "Cleaner" when you have not set one. Email and Phone are as typed, with a dash where there is nothing. Last Active is the interesting one. (The Last Active pill in each of its colours. It is the last time they signed in, not the last time they finished a clean, so a cleaner who leaves the app open all week still reads as recent.) - Under an hour is green, under a day is sky blue, under three days is amber, and anything older goes grey. - The wording steps down through Just now, minutes, hours, days and weeks, and after a month it becomes a short date such as 12 Aug. - Somebody who has never signed in reads Never. That is the flag to look for after adding someone: it means the welcome email has not been acted on. - A deactivated person shows plain text reading Inactive instead of a pill, and the whole row is washed back. The footer holds the pager and an Export CSV button. It writes staff.csv with the columns Name, Job Title, Email, Phone, Status and Last Active, and confirms with a toast reading "Exported 7 staff member(s)". Before you have added anybody the table reads No staff yet with "Add your first team member to get started." ##### The two ways in Press Add staff member and the first thing the sheet asks is a question, not a field. The legend reads How should they get in? and there are two cards. This choice changes what the rest of the form does, so it is worth understanding before you pick one out of habit. (The Add staff member sheet with "Set a password" chosen. The vault at the foot only exists in this mode, and the password inside it is generated for you rather than typed.) - Set a password: The default. Its hint reads "You choose a temporary password and we email it to them. Fastest if they are with you now." CleanFlo generates one, emails it, and shows it to you once. - Send an invite: Its hint reads "They get a link and choose their own password. Nothing to read out, no password in an inbox." They set the password themselves and you never see it. Either way the four fields are the same: Full name * placeholdered "e.g. Sarah Mills", Email address * placeholdered "sarah@example.com", then a two-up row of Phone and Job Title, both marked optional, placeholdered "+44 7700 900000" and "e.g. Cleaning Pro". A blank job title becomes "Cleaner" everywhere it is shown. > Pick Set a password when the person is standing in front of you and you can read it out or hand them the phone. Pick Send an invite for anybody you are only going to email or text, because a password that only ever existed in their own head is one you can never be accused of losing. ##### The password shown once In password mode a bordered block appears at the foot of the sheet with a padlock, headed "Shown once, copy or send it now". Inside it is a Login Password * field holding a generated password, with three icon buttons: show or hide it, copy it, and generate a different one. Underneath, the hint reads "Share these credentials with the staff member so they can log in." The heading is literal. Once you press Create Account the password is gone from your side of the app: it exists in the cleaner's email and nowhere you can look it up. Copying it puts a toast on screen reading Password copied, and a copy that fails says "Could not copy, select the password and copy it manually." > If you lose the password before the cleaner has used it, do not create a second account for them. Use Resend Login on their row, which sets a new one and emails it. Two accounts for one person split their clean history in half and both of them keep appearing in your staff picker. The form stops you at the obvious mistakes with inline errors rather than a toast: "Full name is required.", "Email is required.", "That email address does not look valid." and, if you replace the generated password with something too short, "Password must be at least 8 characters." An email already registered comes back from the server as "Could not create the account, the email may already be registered." ##### Sending an invite instead Choose Send an invite and the vault is replaced by a line of explanation: "We will email marek@brennanclean.co.uk a link that expires in 14 days. You will get a copy of the link to share by WhatsApp or text, and they show as pending on your team until they accept it." The submit button becomes Send Invite. (The panel that replaces the sheet once an invite is sent. The share row exists because an email from a name a cleaner does not recognise is an email a cleaner does not open.) The panel is titled Invitation sent. It shows the full join link as a click-to-copy row, buttons for WhatsApp and Text, and, on a device that supports it, Share another way. The message it forwards is written for you: "Hi Marek, we use CleanFlo at Brennan Cleaning Ltd for your schedule and cleans." then "Set yourself up in about a minute" with the link, then "You choose your own password: nobody else sees it." (The Invited tab. Under each pill in the real screen sits a timing line: an expiry countdown while it is pending, the date it was accepted or revoked once it is settled.) - Pending: Amber. Sent and not yet used. Underneath, the expiry phrase counts down: "Expires in 11 days", "Expires tomorrow", "Expires today", or "No expiry recorded". - Accepted: Green. They have set a password and are on the team. - Expired: Red. Fourteen days went by. Resend issues a fresh one. - Revoked: Grey. You cancelled it. The link stopped working immediately, including any copy already forwarded. - Unknown: Grey. The invitation is in a state CleanFlo cannot classify. Revoke it and send another. Row actions are Share link, Resend and, on pending rows only, Revoke. Revoking asks "Revoke the invite for Marek Kowalski?" and explains that the link stops working immediately, "including any copy of it they have already been sent". The buttons are Keep it and Revoke invite. With nothing outstanding the tab reads No invitations and "Invite someone and they set their own password: nothing to read out over the phone." ##### What lands on their phone A cleaner added with a password gets a welcome email from you, carrying their email address, the temporary password and your company name. They open the app in their phone browser, sign in with those two things, and they are in. There is nothing to install: they can add it to the home screen and it behaves like any other app. A cleaner who was invited gets a link to app.cleanflo.io/join instead. That page greets them with "Joining Brennan Cleaning Ltd as Marek Kowalski", asks them to Choose your password with the reassurance "This is yours alone: nobody at Brennan Cleaning Ltd can see it.", and asks for at least eight characters. Pressing Set up my account signs them straight into the cleaner app. (What a cleaner sees on their first morning. The day is a run of ruled lines with the times down the left margin and a mark beside anything that still wants something from them, then the rest of the week under it. The app is in whatever language their phone is set to, out of 27, and it keeps working when the signal does not.) The first time they open it they get a short overlay explaining that clean locations are recorded at two moments, when a clean is started and when it is completed, and offering to turn on notifications. They can decline both and the app still works. Whichever route you took, their record now appears on your Staff screen and they can be assigned to a clean. > Two toasts tell you it worked: Marek Kowalski added to your team, then Welcome email sent to marek@brennanclean.co.uk. If the second one comes back as "Could not send welcome email to …", the account exists but nothing has reached them. Use Resend Login on their row rather than adding them again. **FAQs** Q: How many cleaners can I add? A: As many as you have. CleanFlo is one price of £19.99 a month with unlimited staff, clients and locations, so there is no tier to cross and nothing gets more expensive when you take somebody on. Q: Do cleaners need their own email address? A: Yes. The email address is their username as well as where the welcome or invitation goes, so it has to be one they can reach. It cannot be shared with another member of your team, because the account is the email address. Q: A cleaner says they never got the email. What now? A: Check the spam folder first, then use Resend Login on their row, which sets a new password and emails it again. For somebody you invited, the Invited tab has Share link, which gives you the join link to send by WhatsApp or text instead. That route works even when email does not. Q: Can I stop a cleaner seeing prices and client details? A: The cleaner app already limits a plain cleaner to their own cleans: the site, the access notes, the checklist and the times. There is no fine-grained permission grid, but there are two levels: promoting somebody to supervisor gives them the office screens needed to run the day-to-day, Dashboard, Schedule, Clients, Staff, Inventory, Reports, while keeping billing, company settings, Quotes, Invoicing and everyone's pay owner-only. See Editing, deactivating and removing staff. Q: What if I add somebody by mistake? A: Delete them from the row actions before they ever sign in and nothing is left behind. Once they have cleans against their name, deactivating is the better move, because deleting them unassigns any upcoming work while their past cleans keep their name. URL: https://cleanflo.io/help/adding-staff/ --- #### Staff status and activity The staff detail page: the presence pill and what drives it, the tabs, the reporting period pills, clean history and availability, and where the same numbers turn up in Reports. Clicking a cleaner opens their own page: what they have done, how much of it they finished, where they spend their time and when they are available. It is the record you reach for when somebody asks you a question about one person. Get there from the Team directory table by clicking the row or the name. The breadcrumb runs Staff then their full name, and the sub-line under the title is their job title, or "Cleaner" when they have not got one. There is one action button in the header, a danger Delete: everything else on this page is for reading. ##### The top of the page The hero card carries a rounded-square avatar in their own colour, their name, then meta chips for the job title, the email address as a mailto link, the phone number and Joined 14 Aug 2026. On the right sits the presence pill. (A cleaner page on the Overview tab. The five figures under the hero cover all time; the six tiles beneath them cover whichever reporting period the pills are set to.) The five figures across the strip are Total Cleans, Completed, Completion as a percentage, Revenue as money, and On time as a percentage or a dash where there is nothing to work it out from. Completion is colour-coded: green from 80 per cent, amber from 50, red below that. > Revenue here is the value of the cleans that carried this cleaner's name, not money you have received and not what you paid them. A cleaner who happens to be sent to your expensive contracts will read high, and it says nothing about how good they are. ##### The presence pill The pill on the right of the hero is one of four words, each with its own dot. Active and On Site pulse; the other two sit still. (The four presence states and the fifth thing the pill can say. Inactive is not a presence: it is a deactivated account, and it overrides whatever the presence value happens to be.) - Active: Sky blue, pulsing. Signed in and available. - On Site: Green, pulsing. At a property. - On Break: Amber. Stopped, but not finished for the day. - Offline: Grey. The default a new account starts on, and where everybody sits when nothing says otherwise. - Inactive: Amber, and not really a presence at all. A deactivated member always reads Inactive whatever their presence value says, because they cannot sign in. The presence value is held on the cleaner's own record rather than being guessed from their phone, so it is a slower signal than it looks. For "is this person working right now", two other things on the same screens are more reliable: the Last Active pill in the directory, which is when they last signed in, and a clean sitting in In Progress, which means a cleaner has actually started it in the app. > If you want to know who is out and where they are, the Dashboard's Today's Schedule and the Schedule itself answer it better than this pill does. Presence tells you the state of an account. A clean in progress tells you somebody is holding a mop. ##### The tabs Under the stats sit Activity, Overview, Clean History, Top Locations and Availability. If you are the account owner there is a sixth, Employment, covered in its own guide. Beside Overview, and again inside Top Locations, is a group of reporting period pills: 7 Days, 30 Days, 90 Days and All Time. It opens on 30 Days. > The period pills change the six tiles and the charts. They do not change the five figures in the strip above them, which always cover everything. That is the single most common misreading of this page: a cleaner who started three weeks ago will show 184 total cleans at the top and 41 in the tiles below, and both are right. ###### Overview Six tiles for the chosen period: Completed with "of 41 cleans" underneath, In Progress with "active now", Scheduled with "upcoming", Cancelled with the cancellation rate, Avg Duration with "per clean", and Active Days with "with completed cleans". Then three cards: Completion Rate with a meter and a four-part legend, Monthly activity as a bar chart, and Recent Cleans with a View all that jumps to Clean History. ###### Clean History Every clean with their name on it. Filter pills across the top read All, Completed, Scheduled, In Progress and Cancelled. Note that the filter says Completed while the status pill on the row says Done: they are the same thing. (The Clean History table. Duration is the time actually clocked when both a start and a finish exist, and falls back to the planned duration in muted text when they do not.) (The clean status pills as they appear on this page. Scheduled and Cancelled are deliberately colourless here so that the two states you can act on are the ones that carry a hue.) The columns are Clean with the client beneath it, Date with the time beneath it, Location, Duration, Price and Status, ten to a page. With nothing to show it reads No cleans found and "No cleans have been assigned to this team member yet.", or "Try a different filter." when a filter is on. ###### Top Locations A ranked list of where this cleaner actually goes, with the period pills on it. Each row is a rank number, the site name, a meta line of "14 cleans · 13 completed" and a proportional bar. It is the quickest way to see that a cleaner has effectively become the person for one client, which is useful information right up until they book a holiday. ###### Availability Two cards. Weekly Availability is a seven-cell grid labelled Mon to Sun, each cell reading a time range or Off. The cleaner sets this themselves in the phone app, so an empty grid reads "No availability set by this team member yet." rather than meaning they are never free. (Weekly availability and the time off requests underneath it. Approve and Decline are the only two buttons on this whole page that change anything.) The second card is Time Off & Absence. Each row shows the kind of leave, the date or the date range, the reason if one was given, and either Approve and Decline while it is pending or a settled word reading Approved or Declined. Answering one puts a toast on screen reading Time off request updated, sends the cleaner a message in their app, and pushes a notification to their phone titled "Time off approved" or "Time off declined". Your cleaners choose the kind when they ask: Holiday, Unpaid, Parental, Compassionate, Time off in lieu or Other, in their own language. Requests made before this existed read as Other, which is the truth: nobody recorded what they were, and guessing them into Holiday would invent a fact. ###### Recording an absence nobody asked for Sickness is not on the list your cleaners can choose from, on purpose. Somebody phoning in ill at 6am is not asking for anything, and a request sitting pending would lose the day it is about. Use Record an absence at the top of the card instead: it is filed as already agreed, with your name against it as the person who took the call. The same button covers a holiday you agreed by text, a day off you gave for a funeral, or anything else that happened without a request. Pick the kind, the dates, whether either end is a half day, and add a note. For sickness there is a Self-certified box, a line telling you which side of the seven-day self-certification limit the dates fall, and, once the absence is on the list, Attach fit note on the row. See Sickness and fit notes. > A note about somebody’s health is special category data under UK GDPR. Record the fact that they were off sick rather than the diagnosis. The field hint says the same thing where you type it. ###### What an absence is worth Approving an absence works out how many hours it accounts for, from that cleaner’s own weekly availability, so a fortnight off is two days for somebody who works Tuesdays and Thursdays, not ten. Half days at either end are halved. The figure is shown on the row. It is worked out once, at the moment you approve, and never recalculated. If that cleaner later changes the days they work, an absence you already granted keeps the value it had when you granted it. Otherwise a balance somebody had already planned a holiday around would quietly change underneath them. > A cleaner who has never set their weekly availability has no pattern to count against, so the row reads hours not counted, no working pattern on file rather than showing 0h. Those are different facts, and only one of them is true. Ask them to set their availability in the phone app and the next absence will count. > This records what an absence was worth, and a Holiday card above it now turns those into a running balance: entitled, taken and booked, with what is left. See Holiday balances. It does not move cleans already booked: a clean inside an approved week stays where it is with their name on it, and you move it from the Schedule. What it does do, since availability became a rule, is stop you assigning new work into an approved absence without recording why. Where the Shift swaps module is on, a third card, Shift Swap Requests, sits alongside it: every swap this person has offered or been offered, with the same Approve and Decline pair. Approving one reassigns the clean to the other cleaner in the same step, so it is never briefly unassigned. See Starting and finishing a clean for what a cleaner sees when they ask for one. ##### The same numbers across the team One cleaner at a time is the wrong tool for comparing people. There are two places that do it for the whole team at once. The Performance tab on the Staff screen is the quick one. It replaces the directory with a per-cleaner table over a fixed window of the last 30 days, with the columns Staff Member, Completed, In Progress, Scheduled, Cancelled, Total Cleans and Completion Rate. Whoever has the most completions gets a filled trophy beside their name. Future bookings are outside the window, so a full diary next week does not flatter anybody today. (The Staff Performance Table on the Reports screen. Everybody appears, including people with no cleans, which is the difference between this and the Performance tab.) Reports goes further. Its Staff tab runs on the date range chosen at the top of that screen, one of Last 7 days, Last 30 days, Last 90 days or Last 12 months. Four figures across the top read Active Staff, Avg Cleans / Staff, Total Hours Logged and Top Performer, then a bar chart of Cleans per Team Member, then the Staff Performance Table with the columns Name, Status, Total Cleans, Completed, Hours and Completion Rate. That table has an Export button, which is the route to getting any of this into a spreadsheet. > Hours in Reports are estimated from clean durations rather than clocked, so treat them as a measure of workload rather than as a timesheet. If you need what somebody actually worked, the Duration column on their Clean History is the honest number, because it uses the real start and finish times where they exist. **FAQs** Q: Why does a cleaner show as Offline when I know they are working? A: Presence sits on the account rather than being read from the phone, and Offline is the value everybody starts on. To see who is out right now, look at the Schedule for cleans in progress, or at the Last Active pill in the Team directory, which tells you when they last signed in. Q: Can I edit a cleaner's availability for them? A: No. The weekly grid is set by the cleaner in their own app and shown to you here read-only. If it is wrong, ask them to change it. The only thing you can act on from this page is a time off request. Q: Does approving time off block the schedule? A: No. It records the decision and notifies them. Cleans already booked in that week keep their name on them, and CleanFlo will let you assign more. Move or reassign the work yourself on the Schedule, where the cleaner picker shows availability while you choose. Q: What counts as On time? A: The figure compares when a clean was actually started against when it was scheduled to start. A cleaner with no cleans carrying both timestamps shows a dash rather than a percentage, which is why a new starter reads as blank rather than as zero. Q: Why do the numbers at the top not match the tiles? A: They cover different windows. The five figures in the strip are all time and never change. The six tiles, the charts and Top Locations all follow the reporting period pills, which start on 30 Days. URL: https://cleanflo.io/help/staff-status/ --- #### Editing, deactivating and removing staff Deactivating a cleaner and deleting one are not the same thing, and only one of them is safe. What each does to their cleans and their history, how to get somebody back in, and what changes when you promote a cleaner to supervisor. People join, people leave, some are trusted to run the day-to-day, and people lose their password on a Tuesday morning with three cleans booked. All of it is handled from the same row of buttons at the end of a row in the Team directory, owner-only, every one of them. Open Staff and hover any row. The actions sit at the right-hand end, and clicking one of them does not open the person's page: they are deliberately separated from the row click so you cannot deactivate somebody by aiming badly. Only an owner sees this row of actions at all, a supervisor can open the directory but cannot resend a login, change a role, deactivate or delete anybody from it. (The five row actions, owner-only. Resend Login only appears when the person has an email address on file, the role button flips between Make Supervisor and Make Cleaner, and Deactivate swaps to Reactivate on somebody already switched off.) - Resend Login: Sets a new password and emails it. The route for anybody locked out. Only shown when there is an email address to send it to. - Edit: Opens the Edit staff member sheet: name, phone and job title. Not the email address. - Make Supervisor / Make Cleaner: Promotes a cleaner to supervisor, or returns a supervisor to a plain cleaner. Covered in full below. - Deactivate: Signs them out and blocks the login, keeping everything else. Reads Reactivate on somebody already inactive. - Delete: Removes the account and the login for good. The only one of the four with no way back. ##### Editing somebody The Edit staff member sheet is short on purpose. There are three fields: Full name *, then a two-up row of Phone and Job Title, both marked optional. Leaving the job title blank puts them back to "Cleaner" wherever it is shown. (The Edit staff member sheet mid-rename. The note under the name field only appears while the name has actually been changed, and it is telling you what will not happen.) Change the name and an inline note appears reading "Their cleans stay with them. Past cleans keep Joanne Reid on the paperwork, which is what your records should show." That is the behaviour you want: a marriage, a correction or a nickname does not rewrite what was signed off six months ago. Saving confirms with a toast reading Staff member updated, and an empty name is refused with "Full name is required." > There is no email field here, because the email address is the login. If somebody changes their email address, the honest fix is to add them again on the new one and deactivate the old record, which keeps the history under the old name rather than losing it. ##### When somebody cannot get in This is the most-used button on the screen and the least understood. Resend Login does not resend the old password. It sets a new one and emails that, which means the old one stops working the moment you press the confirm. (The Resend login credentials sheet. The same vault as when you first created the account, and the same rule: once it closes, the password is only in their inbox.) - Press Resend Login on their row. A small sheet opens headed Resend login credentials. - The line at the top reads "This will set a new password for Joanne Reid and email them their updated login details." - A vault headed "Shown once, copy or send it now" holds a generated New Password, with buttons to show it, copy it or generate a different one. The hint underneath names the address it is going to. - Copy it if you are going to read it out, then press Reset & Send Email. The button reads "Sending…" while it works. - A toast confirms with Login credentials sent to Joanne Reid. If the email fails you get "Password reset but could not send email to Joanne Reid" instead, which means the password has already changed and you must give them the copied one. > Do not press this while a cleaner is mid-shift unless you have to. The old password stops working immediately, so somebody who gets signed out on site cannot get back in until they have read the email. Their work is not lost: the app holds it and syncs when they sign in again. ##### Promoting to supervisor A cleaner sees the phone app only: their own cleans, their own hours, their own messages. A supervisor keeps all of that and is also handed a slice of the office app, for the businesses where the owner is not the only one running the day. Press Make Supervisor on their row and a confirmation states exactly what changes before you commit to it. (The promotion confirmation. Both directions state the consequence in full, including that nothing a supervisor already approved is undone if they are later returned to cleaner.) A supervisor genuinely runs a slice of the business, not a read-only view of it. On the screens they can open, they can add and edit clients and staff, book and reschedule cleans, and approve their colleagues’ time off and supply requests: they are simply barred from the owner-only ground: billing, company settings, adding or removing staff, wages, and the Quotes, Invoicing and Enquiries screens where the actual money is quoted and chased. > A job title such as “Team Lead”, set from the Edit staff member sheet, is free text: it prints under their name and nothing else. The supervisor role is the only thing that actually changes what somebody can open, and the two are independent: a Team Lead is not a supervisor unless you have also pressed Make Supervisor on their row. Returning somebody to cleaner is the same button, now reading Make Cleaner. The confirmation is just as direct: "They go back to the phone app only. They keep their cleans, their history and their login: nothing they approved as a supervisor is undone." and a warning that they will lose access to the Schedule, Clients, Staff, Inventory and Reports, and can no longer approve time off or supply requests. Only an owner can move somebody either way: the database itself refuses the change from anyone else, not merely the button being hidden. ##### Deactivating: the leaver setting Deactivating is what you want for almost every departure. It closes the door and keeps everything else: the record stays on the Inactive tab, their clean history stays intact, and their name stays on every clean they ever did. (The deactivate confirmation. CleanFlo counts the upcoming cleans before it asks, so the amber line is a real number for this person and not a general warning.) The dialog is titled Deactivate Joanne Reid? and the body reads "They will be signed out and will not be able to sign in again. A device they are already using loses access within the hour. You can reactivate them at any time." While it works out the numbers it shows "Checking their cleans…", and if that count fails it says so rather than guessing: "We could not check how many upcoming cleans are assigned to this person. Any that exist will remain in the schedule unassigned." Confirming gives you a toast reading Joanne Reid deactivated and signed out. On the rare occasion the sign-out itself fails you get "Joanne Reid was deactivated, but we could not block their sign-in. Contact support." Their row now shows plain Inactive in the Last Active column, the row is washed back, and the action button reads Reactivate. Reactivating asks Reactivate Joanne Reid? with the body "They will be able to sign in and appear in your team again.", and confirms with Joanne Reid reactivated. Their old password does not come back with them, so pair it with Resend Login. > The phrase "within the hour" is doing real work. Deactivating blocks new sign-ins immediately, but a phone that is already signed in loses access as its session expires rather than the instant you press the button. For a difficult departure, deactivate and then change any shared door codes and portal PINs, rather than assuming the app has done all of it for you. ##### Deleting: the one with no way back Deleting removes the account and the login entirely. The dialog is titled Permanently delete Joanne Reid? and the body reads "This will delete their account and login. This cannot be undone." The confirm button reads Delete permanently. (The delete confirmation. The sky-blue line is the important one: the paperwork survives, the person does not.) Underneath, a sky-blue callout counts what is affected: "171 historical cleans will keep their name for your records. Any upcoming cleans will be unassigned." If the count cannot be worked out it says "We could not check how many cleans carry their name. Existing cleans keep the name for your records; any upcoming ones will be unassigned." A toast confirms with Joanne Reid has been permanently deleted. The same dialog is on their own page, behind the header Delete button. > There is no undo, no archive and no bin. Deleting takes the person off your Staff screen, out of the cleaner picker on every clean drawer, and out of the Performance tab. Their completed cleans keep their name printed on them, so your records still read correctly, but there is no route back to a staff page for them and no way to reactivate what has been deleted. | Deactivate | Delete Can they sign in | No, and they are signed out | No, the account is gone Where the record goes | The Inactive tab | Nowhere. It is removed Past cleans | Keep their name and stay linked to them | Keep their name as text Upcoming cleans | Stay in the schedule, unassigned | Stay in the schedule, unassigned Their page and stats | Still there to open | Gone Reversible | Yes, Reactivate at any time | No Either way, the cleans behave the same: nothing is cancelled and nothing disappears from your week. Upcoming work simply loses its cleaner and shows as Unassigned in red on the Schedule, so the practical next step after a leaver is always the same. Filter the Schedule for unassigned cleans and give them to somebody else before the day arrives. > Deactivating is usually the correct answer for a leaver, and not only because it is safer. A completed clean is a work record, and you may need it for a client dispute, an insurance question or a health and safety enquiry long after the person has gone. Deleting an account does not delete those cleans, but it does remove the record that connects them to a person, so decide deliberately rather than tidying. If somebody asks you to erase their data outright, that is a data protection request and delete is the right tool: use it knowingly. **FAQs** Q: What happens to cleans already booked for somebody I deactivate? A: They stay in the schedule and become unassigned. Nothing is cancelled and no client is told. The confirmation dialog counts them for you before you press anything, so you know how many need rehoming. Q: Can I stop paying for a cleaner who has left? A: There is nothing to stop. CleanFlo is one price of £19.99 a month with unlimited staff, so an inactive record costs you nothing and there is no per-seat charge to reduce. Q: Somebody deactivated is still showing in the cleaner picker. Why? A: The picker lists active staff, so refresh the drawer or the page: it is a stale list rather than a permission problem. A clean that already had their name on it keeps it until you reassign the clean itself. Q: Can a deactivated cleaner still see their old cleans? A: No. They are signed out and cannot sign in, so they see nothing. If they need a record of what they worked, export it for them from Reports before you deactivate the account. Q: How do I cancel a pending invitation for somebody who never joined? A: That is not on the directory row, because they have no account yet. Go to the Invited tab and use Revoke on their line. It asks first, and it kills every copy of the link, including one you already forwarded. Q: Can a supervisor promote someone else to supervisor? A: No. Changing anybody's role is owner-only, enforced by the database itself rather than just the button being hidden, a supervisor sees the Staff directory but never the row actions on it at all. Q: If I demote a supervisor, does everything they approved get undone? A: No. Time off and supply requests they already approved stay approved. Returning them to cleaner only changes what they can open going forward: it is not a rollback of anything that already happened. URL: https://cleanflo.io/help/managing-staff/ --- #### Employment records The Employment tab: contract type and dates, contracted hours and the overtime rule, how holiday is worked out, the payroll reference, and an emergency contact. Owner-only, enforced in the database, and deliberately without a National Insurance number. Hours on their own are not a timesheet. Sixteen hours means something different to somebody on a 16-hour contract than to somebody with no fixed hours at all, and neither figure means anything to a payroll system that cannot tell which person it belongs to. This tab holds the facts the hours have to be read against. Open a cleaner from the Team directory and the tabs across their record end with Employment. It is there only if you are the account owner: a supervisor does not see it, and neither does a cleaner looking at a colleague. > All of this belongs to the Time & payroll module, on by default under Modules. Switching it off hides this tab, takes the break control off the clean screen and stops new time being recorded. It does not stop cleans being clocked in and out: that is how the schedule knows a clean started, and the late alerts and the client's clean report both depend on it. Nothing already recorded is deleted, and it all reappears intact if you switch it back on. ##### Nothing here is required Every field is optional and every one of them reads as not recorded rather than as a zero. That is not politeness, it is accuracy: blank contracted hours means "no fixed hours", which is the normal arrangement for most cleaners, while 0 would mean a contract for no work at all. Everything downstream treats a missing figure as missing. So a sole trader with one cleaner and a handshake can ignore this tab entirely and nothing elsewhere breaks. Fill in what you actually know, when you know it. ##### What it holds - Contract: Employment type (employee, worker, self-employed or agency), how they are paid (hourly, salary or day rate), start date, and, once it applies, a leaving date and reason. A leaving date before the start date is refused as the typo it is. - Hours: Contracted hours a week, the point at which overtime starts, the multiplier it is paid at, and any unpaid break deducted from a shift. Leave contracted hours blank and nothing is ever counted as over. - Holiday: Either an accrual rate (entitlement building as a percentage of the hours actually worked, which is what suits irregular hours) or a fixed entitlement in hours across the leave year, which suits somebody on set weekday hours. Per person, because a cleaning firm usually needs both. - Emergency contact: Name, phone and relationship. Who to call about them, not who they call. - Payroll reference: Their id in your payroll software. This is the field a timesheet export matches on, and it is the reason the next section exists. > The 12.07% that appears as the default accrual rate is what 5.6 weeks works out to across a 46.4-week year. It is a setting, not a law: CleanFlo implements the rule and names it, and your accountant is the one who should confirm the figure before you rely on it. ##### There is no National Insurance number, deliberately You will look for the field and it is not there. That is a decision, not an oversight. A National Insurance number is only ever used inside a payroll system, and your payroll system already holds it alongside the tax code, the NI category and the pension scheme. Keeping a second copy here would add a genuinely serious thing to lose (an NI number is a key to identity fraud) in exchange for nothing, because every major UK payroll package can match an imported timesheet on an employee reference instead. That is what Payroll reference is for. > CleanFlo produces the timesheet. It never produces the payslip. It does not calculate PAYE, National Insurance, pension contributions, student loan deductions, statutory sick pay or statutory maternity pay, and it never shows a figure called "net pay". Those belong to the system that holds the tax codes and is the thing HMRC holds liable. ##### Who can see it Who | What they can do You, the account owner | Read and edit every record in your company A supervisor | Nothing. They can approve time off; a colleague’s contract is not theirs to read The cleaner themselves | Read their own record. They cannot change it Anybody in another company | Nothing, ever This is enforced by the database, not by hiding the tab. A cleaner who queried the data directly with their own login would get their own row and nothing else; a colleague would get nothing at all. It is also kept out of every CSV export and is never stored on the phone, which matters most for the emergency contact: that is a third party who has never used CleanFlo and cannot be asked what they think about it. > A cleaner cannot edit their own record, including their own emergency contact. If somebody tells you their next of kin has changed, change it here: contracted hours and who to call are facts about an agreement, not preferences. ##### When somebody leaves Record the leaving date and the reason here, then deactivate them in the Team directory. The two are separate on purpose: the employment record is what the leaving date belongs to, and deactivating is what actually removes their access. Their finished work stays attached to them either way, so the history and the figures stay right. Their future work does not move on its own, so reassign it before the date arrives, exactly as covered in Managing your team. **FAQs** Q: Where do I put somebody’s wage? A: Not here. The hourly rate is on the Edit staff member drawer, and it is stored separately again, with its own owner-only rules. Splitting them is deliberate: what somebody is paid and what they agreed to work are different questions with different audiences. Q: I have somebody self-employed. Should I fill this in? A: Set the type to Self-employed and fill in what applies, usually a start date, a day rate basis and a payroll reference. Leave contracted hours, overtime and holiday blank: a subcontractor does not accrue holiday from you, and blank means blank rather than zero. Q: Does changing contracted hours change anything that has already happened? A: No. Nothing here rewrites work that is already recorded. Contracted hours are read when hours are counted, not stored against past cleans, so correcting a typo in this tab never silently restates a figure somebody has already been paid against. Q: Can I export this? A: Not from the exports in Settings, no, and that is deliberate, the same rule that keeps pay rates out of them. A payroll export that includes what it needs and nothing more is coming as part of the timesheet work. URL: https://cleanflo.io/help/employment-records/ --- #### Holiday balances How much holiday somebody has, has taken and has booked: three separate figures, on both the staff record and the cleaner’s own phone, worked out from the same source so they can never disagree. “How much holiday have I got left?” is the question every cleaning firm answers out of a spreadsheet, and it is the one that causes the argument. CleanFlo answers it from the hours already recorded, and says so plainly when it has no business answering at all. A balance appears on the Availability tab of a staff record, and the same figures appear to that cleaner under My time in their own app, in their own language. Both read the same thing, so the two can never quietly disagree about what somebody has left. ##### Three numbers, never one The card shows Entitled, Taken and Booked side by side, and only then what is left. That is deliberate, and it is the whole design. - Entitled: What this leave year is worth to them, worked out from their employment record. - Taken: Approved holiday whose last day has already passed. Spent. - Booked: Approved holiday still to come. Committed, but it can still be cancelled, which is why it is not the same fact as taken. - Left: Entitled minus both of the above. Shown last, and never on its own. > “Twelve days remaining” is the number everybody asks for and the one that starts the argument, because it folds together holiday that is spent and holiday that is merely promised. A cleaner reading “24h left” needs to know whether the fortnight they booked in March is already inside that figure. Here it always is, and both halves are on the card so they can see it. ##### How entitlement is worked out From the Holiday setting on that person’s Employment tab, which is per person because a cleaning firm usually needs both kinds at once. - Accrued: Entitlement builds as a percentage of the hours actually worked, which is what suits irregular hours. The card shows the working (“800h worked so far this leave year, accruing at 12.07%”) because an accrued figure moves every time somebody works, and a number with no working beside it looks like a mistake the first time it changes. - Fixed: A set number of hours for the leave year, which suits somebody on regular weekday hours. It does not move with the hours they work. > 12.07% is what 5.6 weeks works out to across a 46.4-week year. It is the default and it is a setting, not a law: CleanFlo implements the rule and names it, and your accountant is the one to confirm the figure before you rely on it. CleanFlo does not calculate holiday pay: the rate that holiday is paid at belongs to your payroll system. Only hours that would actually be paid count towards an accrued entitlement. An entry still flagged for you to look at does not, because a flagged entry is allowed to overlap another one and counting it would accrue holiday against an hour claimed twice. Neither does a travel or non-job proposal you have not accepted, or an unpaid break. ##### When it refuses to answer Where there is no employment record, or the basis is Fixed and no entitlement was ever recorded, the card says the entitlement is not recorded rather than showing a figure. Your cleaner sees Your holiday entitlement is not recorded yet. Ask the office. > It will not print 0h left in that situation, and this is the point of the whole feature rather than a rough edge. “Nobody has written your terms down” and “you have no holiday” are different facts, and only one of them is true. Showing a zero would be a statement about somebody’s contract made on the strength of an empty form, and a cleaner who reads it will believe it. One more thing is kept visible rather than swallowed. An absence approved for somebody with no weekly availability on file has no hours against it, so it cannot come off a balance. Rather than counting as nothing, it is reported on the card: One approved holiday has no hours against it… It is not in the figures above. A balance is never quietly short by the leave nobody could measure. ##### The leave year Everything is counted against the leave year containing the date you are looking at. It starts on 1 April by default, which is the commonest UK arrangement, and you can change the month under Settings → Company → Holiday. Changing it re-counts what is shown. It never alters an absence anybody has already been granted: what an absence was worth is decided once, when you approve it, and kept. ##### Who can see whose Anybody can see their own. An owner or a supervisor can see anybody’s in their own company: a supervisor approves time off and cannot sensibly do it without knowing what is left. A cleaner asking about a colleague is refused by the database, not merely hidden by the screen, and so is anybody asking across companies. > Balances follow the Time & payroll module. Switch it off under Modules and the card disappears from both the staff record and the cleaner’s phone. Nothing is deleted, and it all returns intact if you switch it back on. **FAQs** Q: It says hours, and I think in days. Why? A: Because most cleaners do not work the same length day every day. “Five days” means one thing for somebody on two four-hour mornings and another for somebody on full weekdays, and converting between them requires guessing which days they would have worked. Hours are what was actually recorded, so hours is what is shown. Q: The accrued figure went up since yesterday. Is that a bug? A: No. That is what accrued means. Entitlement builds as hours are worked, so it moves whenever somebody works. The working is printed under the figure so you can see exactly what moved it. Q: Why is sickness not coming off the holiday balance? A: Because it is not holiday. Only leave recorded as Holiday counts against the entitlement; sick, parental, compassionate, unpaid and time off in lieu are recorded and shown, but they are separate kinds and are not deducted. Q: Somebody is showing a negative balance. How? A: They have been granted more holiday than they have accrued or been allotted, which is real and happens, usually because someone was allowed to take leave early in the year. It is shown as it is rather than floored at zero, because you can only act on a fact you can see. Q: Does CleanFlo work out holiday pay? A: No. It works out entitlement in hours. What those hours are paid at (the 52-week averaging for irregular hours, and everything else) is a payroll calculation, and payroll is the system that holds the tax codes and is the thing HMRC holds liable. URL: https://cleanflo.io/help/holiday-balances/ --- #### Sickness and fit notes Recording a sickness absence, the seven-day self-certification line, and filing a fit note in a place only two people can open. Owner-only, and deliberately without an absence score. Somebody rings at six in the morning to say they cannot come in. This is where that goes, what evidence you can ask for and when, and where a doctor’s note is kept, which is a narrower place than anything else in CleanFlo. Sickness is recorded, not requested. It is not on the list your cleaners can pick from when they ask for time off, on purpose: somebody phoning in ill is not asking for anything, and a request sitting pending would lose the day it is about. Use Record an absence on the Availability tab of their staff record. It is filed as already agreed, with your name against it as the person who took the call. ##### The seven-day line An employee self-certifies the first seven calendar days of a sickness absence. Beyond that you may ask for a fit note from a doctor. Calendar days, not working days, and both ends counted: Monday to the following Sunday is seven and still self-certifiable; the Monday after is eight and not. The form works this out from the dates as you type them and says which side of the line you are on. When you record a sickness absence there is also a Self-certified box, which appears for sickness and for nothing else. > CleanFlo will never refuse to record an absence because a note has not arrived. Losing the fact that somebody was off, because the paperwork is late, is a worse failure than the missing paperwork. It tells you what you may ask for and gets out of the way. > CleanFlo does not calculate Statutory Sick Pay. It records the dates and the evidence your payroll system needs to work SSP out. That system holds the tax codes and is the thing HMRC holds liable. ##### Filing a fit note A sickness row carries Attach fit note. It takes a PDF or a photo, up to 20MB, which in practice means a picture of the note taken on a phone. Once attached the row shows Fit note instead, which opens it, and a bin to remove it. > A fit note is held more narrowly than any other document in CleanFlo. It goes into a private store that admits exactly two people: you, and the cleaner it is about. A supervisor cannot open it, the only place in the product where a document is kept from them. They approve leave and need to know somebody is off sick; they do not need the medical evidence. The file is also renamed on the way in, and this matters more than it sounds. CleanFlo gives it a meaningless name of its own and discards yours. A file called “anxiety-fit-note.pdf” would put a diagnosis into a field that was only ever meant to be a pointer, where more people can read it than can open the document itself. > Removing a fit note deletes the file. The absence stays, with its dates and hours intact: those bear on holiday entitlement and continuity of employment long after the note has stopped being needed. ##### There is no absence score, and there will not be CleanFlo has no Bradford Factor. No absence rate, no episode count, no reliability figure built from days off, and no trigger threshold. This is a decision, not a gap, and it is written into the product’s own compliance record. The reason is what such a number does in the room. A single figure ranking your cleaners by how often they are ill, sitting next to the button that assigns Tuesday’s work, invites a decision about somebody’s clean made on a number nobody examined, and some of what it counts will be disability-related absence, which is exactly the decision that becomes a tribunal claim. You can see every absence a person has had, with its dates, its kind and what it was worth in hours. That is the information. Turning it into a ranking is the part CleanFlo will not do for you. > The staff reliability reading elsewhere in CleanFlo (On Track, Needs Attention, Needs Support) is built from completion rate, on-time rate and overdue follow-ups. Things done at work, never days away from it. The two are kept apart deliberately. ##### What is recorded, and what is not - Recorded: That the absence was sickness, its dates, whether either end was a half day, what it was worth in hours, whether it was self-certified, any note you wrote, and who recorded it. - Not recorded: A diagnosis. There is no illness field, no symptom picker and no return-to-work questionnaire. The note field’s own hint asks you to record the fact rather than the condition. - Not asked at all: The self-certification box and the fit note appear for sickness and nowhere else. The database refuses them on any other kind of leave, so a holiday cannot end up carrying health data by accident. > Sickness is special category data under Article 9 of the UK GDPR. CleanFlo processes it as your processor under the employment-law condition, and the detail (the conditions relied on, what is minimised, who can reach a fit note and how long it is kept) is in the Appropriate Policy Document we maintain and can share. Sickness absence and its fit note are kept for three years from the end of the absence, matching HMRC’s period for sick-pay records. At that point the fit note is deleted and the absence itself is kept without it. **FAQs** Q: Does sickness come off their holiday balance? A: No. Only leave recorded as Holiday counts against the entitlement. Sick, parental, compassionate, unpaid and time off in lieu are all recorded and shown, and none of them is deducted. Q: Can my cleaner upload their own fit note? A: No, and that is deliberate. The same private store will hold contracts, DBS certificates and right-to-work evidence, and a rule loose enough to accept a fit note from the person it is about would accept a right-to-work document from the same hand. They send it to you however they send you anything; you file it. Q: Can they see the fit note I filed? A: Yes. The store admits you and them, and nobody else. They can also see any note you wrote on the absence, which is the point: a record about somebody that they cannot read is a record you will have to defend one day without them having ever seen it. Q: Someone was off sick for three weeks with no fit note. Will CleanFlo stop me approving it? A: No. It says the absence is past the seven-day line and that you may ask for a fit note, and records the absence either way. The fact that somebody was off is the thing that must not be lost. Q: I want a report of who has been off sick most this year. A: CleanFlo does not produce one, and this is the one place it will refuse a reasonable-sounding request. Every absence is on each person’s record with its dates and hours, so the information is there. Ranking people by it is the part that turns a record into a decision, and the product does not do that on your behalf. URL: https://cleanflo.io/help/sickness-and-fit-notes/ ### The cleaner app #### What your cleaners see A tour of the phone half of CleanFlo: how a cleaner gets in, the five tabs and what each one holds, the anatomy of a clean on the list, and what they are never shown. Your cleaners never open the screens you work in. They get a phone with five tabs on it, and everything they need for the day sits on the first one. CleanFlo is two apps against one set of cleans. You get the web app: the schedule, the clients, the invoices. Your cleaners get /cleaner, which is a different application on the same account, built for a phone held one-handed in a stairwell. It has no sidebar, no tables and no prices. It has five tabs. This guide walks all five. If you are trying to decide whether your team will cope with it, the honest answer is in the first figure: a cleaner opens the app, reads a list of times and addresses, and taps the top one. ##### How a cleaner gets in There is no app store, no download and nothing to buy. When you add someone on Staff the Add staff member drawer asks one question first, under the legend How should they get in?, and the answer decides what lands in their inbox. - Set a password: The default. CleanFlo generates a password, shows it to you once in a block headed Shown once, copy or send it now, and emails the login details to the address you typed. Fastest when the person is standing next to you. - Send an invite: They get a link instead, and choose their own password. The link expires in 14 days, you get a copy of it to send by WhatsApp or text, and until they accept it they sit on the Invited tab of your Staff page as Pending. Either way the cleaner ends up at the same place: a web address, opened in whatever browser is already on their phone. They sign in and land on /cleaner. Nobody has to be talked through an app store, and there is no second thing to keep updated. > Tell them to add it to the home screen. CleanFlo ships a web app manifest set to standalone and portrait, so once the icon is on the home screen it opens full screen with no browser bar, exactly like an installed app. On an iPhone that is Share then Add to Home Screen; on Android it is the browser menu then Install app. The very first time anyone opens the app they get a sheet titled Before you start. Step one explains location: "From now on, CleanFlo saves where you are at two moments: when you start a clean, and when you complete it." Step two, which only appears if the phone supports push and has not been asked yet, explains notifications. Both are dismissible, both can be declined, and declining stops nothing. It is shown once per person and then never again. ##### Five tabs, and nothing else The tab bar is the whole navigation. There is no menu, no settings cog and no second level: the only screens that are not tabs are pushed on top of one (a clean, the sync queue, your equipment) and they slide back off with the phone's own back gesture. - Cleans: Today, this week and the rest of the month. The screen a cleaner lives on. - History: Finished work, with hours, on-time rate and the checklist score for each clean. - My time: Which days of the week they are available, their time off requests, and, with Time & payroll on, their holiday balance. - Messages: Channels and direct messages with you and the rest of the team. - Me: Sync, equipment on loan, supply requests, notifications, language, password, sign out. The last tab really is called Me, not Profile or Settings. Only Messages ever carries a badge, and it shows the unread count or 99+. Equipment used to be a sixth tab and is not any more: it is a row inside Me, because it is a fact about you rather than somewhere you navigate to three times a shift. ##### The Cleans screen, line by line The header is a dark band with a red rule down the binding edge, like the top of a ruled page. It holds your company name, a greeting (Good morning before noon, Good afternoon before five, Good evening after), today's date with no year, and a tally: "2 of 3 cleans done today" with the percentage on the right and a progress bar under it. (The Cleans tab is today's page of the logbook. Every clean is one ruled line with its time in a fixed-width rail, so a whole day forms one straight column however long the building names run. The clean signed into is the open line: inked, bled to both screen edges, with the clock running in the rail instead of a start time.) Sections appear in a fixed order and empty ones are simply absent: the clean currently running, then Needs completing, then Today, then This week, then Later this month. There is no "Tomorrow". Needs completing carries its own note, "Work from an earlier day that was never marked done", and it is deliberately the first thing on the page. ###### What is on one row - The time, in the rail: 8:30 at full size with a small am or pm under it, in margin red, ruled off from the entry beside it. Twelve hour, no leading zero. A clean with no start time reads –:– and still holds the column. - A mark in the margin, meaning one thing only: this line still wants something from you. Ringed for work that is waiting, filled and pulsing for the clean running, red for something overdue, and absent on a finished clean. The column keeps its width either way so every title still aligns. - The clean's own title, falling back to Clean when it has none. - The site: the location name only. No street address, no client name and no postcode on the list, because none of that helps you pick the right row. - At most one annotation, and never two. Lost property outranks lateness: either Lost property reported or Late, both in red ink. - A stamp reading Done on a finished clean, and a chevron on anything you can open. There is no card, no border and no shadow. Rows are separated by hairlines, the way entries in a ledger are. There is also no duration, no distance and no status chip on a list row: a running clean shows the clock instead of the time, counting 44m and then 1h 24m, with a line underneath reading "Started at 10:41". (The four words a clean can be. On the list only the mark colour is used; the label itself appears on the clean screen. Anything unrecognised falls back to Scheduled rather than rendering blank.) > Pulling the list down refreshes it, and there is no wording on the gesture at all: no "pull to refresh", no "release to refresh". The arrow rotates as you pull and spins while it works. It is disabled offline, which is the one time a cleaner is most likely to try it. ##### History and My time History is the same ruled list pointed backwards. A segmented control at the top picks the period (Month, Year, All Time, defaulting to Month), drawn as ruled lines with a teal index tab under the one selected rather than as a white capsule. Under it sits one readings block of four figures, its column rules made of its own 1px grid gaps: Cleans Completed, Hours worked, On-Time Rate and Avg Duration. Each finished clean pins its duration and its tick count to the end of the site line, as "1h 45m · 5/7". (History. Each day gets a day break and each clean one closed line, with the duration and the tick count pinned to the end of the site line. Completed cleans are deliberately not stamped "Done" here, because in this list everything is done and stamping every row would spend the ceremony on the norm. The only stamp is a red "Late" on a clean that started more than ten minutes after its booked time, and it is the only line that keeps a mark in the margin.) My time is the only place a cleaner tells you something rather than being told. It opens on a readings block of three figures (days available, days off, pending requests) and then the week, Monday to Sunday, on one ruled sheet: each day is a line with its hours on it and a switch at the end. The footnote under the sheet says what it is for: "Your manager sees this when they schedule. Turn a day off and you will not be assigned work on it." Where the Time & payroll module is on, a Holiday left panel sits under the week, above their requests: what they have left, the leave year it is about, and the taken and booked figures it came from. It is the same reading you see on their staff record, so the two can never disagree, and if nobody has recorded their entitlement it says so rather than showing them a zero. See Holiday balances. (My time opens on a readings block, then the week as one ruled sheet with the hours on the day's own line. New cleaners default to Monday to Friday, 08:00 to 17:00, with the weekend off. A time off request lands on your side straight away and comes back as Pending, Approved or Declined.) ##### Messages, and the Me tab Messages is the same conversation list you have in the web app, drawn for a phone. A search box, a filter that reads All and Unread (becoming Unread (3) when there are any), channels shown hash-prefixed as #operations, and a button that is always at the foot of the screen whatever else is on it: Message your manager. Opening a thread hides the tab bar, because a conversation is a place rather than a section. (Messages. A conversation is an entry too: when it last moved, in the rail; a mark in the margin only while it is waiting on you; who, and what was last said. Today's threads carry a clock time and older ones carry the date, because 14:02 against a message from three weeks ago is a true reading of the wrong thing.) Me is everything that is about the person rather than the work. It opens with their initials, their name and your company name, runs through eight labelled groups, and ends with a sign out and a version line reading "CleanFlo · Cleaner App". - Sync: One row with a count badge. Its subtitle reads Everything is saved, Waiting to send, Sending… or Could not be sent. Tapping it opens the queue. - Your kit: Equipment on loan to them, with due dates and a Request return button per item. - Request supplies: Read only here. Requests are raised from inside a clean, and this is where the answer appears as Pending or Fulfilled. - Push Notifications: Off until they turn it on. Blocked in the browser shows a line telling them where to unblock it. - Daily Briefing: On by default, sending at 07:00. A morning notification and email with the day's schedule; the send time can be moved in half hours between 05:00 and 10:00. - Preferences: Language, which is the 27-language picker, and Appearance, which is Light or Dark and has no "System" option. - Account: Name, email and company. All three are read only. - Security: A password change, needing a new password twice and at least eight characters. - Sign Out: Confirms first, with the line "Anything still waiting to sync stays on this device until you sign back in." (The Me tab: ruled sheets, one after another, with the leading glyph drawn as a bare mark in the margin rather than a tinted medallion. The Sync line is the one worth pointing out during training, because it is where a cleaner can see for themselves that the work they did in a basement has reached you.) ##### What a cleaner cannot see or do This matters more than the feature list, because it is the question a nervous owner actually asks. The cleaner app is a separate application, not your app with buttons hidden, and it queries only the rows that belong to the person signed in. They never see | Why it is built that way Any price at all | A clean shows its services and quantities and no money. No price is drawn on any screen in the cleaner app: no line total, no clean value, no invoice. Other cleaners' cleans | The schedule query is filtered to the cleans assigned to them. A colleague's round is not hidden from a list they could scroll; it is not fetched at all. Client records or contact details | They get the site: name, address, access notes, property type and the client tags on that location. Not the client's account, contract or history. Any manager screen | Clients, Staff, Invoicing, Quotes, Reports, Inventory, Health & Safety and Settings do not exist on this side of the product. Each other's pay, hours or performance | History shows one person's own figures. There is no league table and no comparison. What they can do is short and deliberate: confirm a shift, say they are on their way, start a clean, tick its checklist, add photos and notes, report lost property, complete it, ask for supplies, hand back equipment, set their weekly availability, request time off, send a message, and change their own language, appearance and password. That is the whole surface. > A cleaner cannot edit a clean, move it, reassign it or delete it. If a clean needs changing, it changes on your side and the phone picks it up. The one thing they control that you do not is the clean's actual start and end time, which is the point: those times are a record of what happened rather than what was planned. > Location is recorded at two moments only, the start and the completion of a clean, and the cleaner is told so in plain words before the first one. Nothing is captured between cleans, after work or on a day off. Under UK GDPR that notice and that limit are what make the processing defensible, so do not describe it to your team as anything broader than it is. **FAQs** Q: Does the cleaner app work on old phones? A: It runs in the phone browser rather than as a native install, so anything with a reasonably current Chrome or Safari will run it. Every input is at least 16px, which stops iOS Safari zooming in on focus, and the whole thing is built for one thumb in portrait. Q: Can I see the app the way my cleaner sees it? A: Not from your own login. An owner account opens the web app, and /cleaner is gated to staff accounts. The practical way to check is to sit next to a cleaner while they open it, which is also the only way you will find out whether your access notes actually make sense to somebody standing at the door. Q: What happens to the app when somebody leaves? A: Deactivating them on the Staff page signs them out and replaces the whole app with a dead end headed "Account Deactivated". Their finished cleans, times and photos stay exactly where they are on your side, because those are your records rather than theirs. Q: Is there a limit on how many cleaners can use it? A: No. CleanFlo is £19.99 a month with unlimited staff, clients and locations. Adding a tenth cleaner costs the same as adding a second. URL: https://cleanflo.io/help/the-cleaner-app/ --- #### Starting and finishing a clean The loop a cleaner repeats all day: opening the clean, starting it, ticking the checklist, adding photos and notes, reporting lost property, and what the finished clean tells you afterwards. One clean, from the moment a cleaner taps it on the list to the field report sitting in your clean drawer twenty minutes later. Every button in this guide is named exactly as the app names it. A cleaning round is the same short sequence over and over, so the app spends its whole design budget on making that sequence unmissable. There is one primary button on screen at a time, it is always docked at the foot where a thumb already is, and it never sits below the fold. ##### The loop, in seven taps 1. Open the clean: From the Cleans tab, tap the row. A scheduled or finished clean opens the clean screen; a clean already running goes straight back into it. The screen slides in from the side and the tab bar disappears, because a clean is a task rather than a place. 2. Say yes to it: On a clean that has not been confirmed yet the app asks Can you make this one? with one button under it: Yes, I'll be there. One tap. You see it as Confirmed on your schedule, which is the answer to the question you would otherwise have rung to ask. 3. Say you have set off: On my way is optional and takes one tap. From then on the clean reads "On the way since 08:12" on both sides, and it stops the app nagging the cleaner about being late. Somebody stuck in traffic who has already said so does not need telling. 4. Start it: Start clean is the solid teal button at the foot. It writes the real start time, flips the clean to In Progress on your schedule, and pushes the cleaner straight into the working screen. It does not wait for the network and it does not wait for GPS. 5. Work through the checklist: Tasks are full-width rows, at least 52px tall, whose control is a 26px check glyph that changes ink rather than a filled box. The count in the column head climbs (3/7) and so does the bar in the masthead. A ticked line is never struck through or greyed out, because the list is read again at handover. Nothing waits on a round trip: the tick lands and the write queues behind it. 6. Photograph and note anything worth noting: Add photo opens the rear camera rather than a file browser, up to twelve per clean. The notes box autosaves as they type. Anything found gets logged under Report lost property, which emails the client separately from the completion. 7. Complete it: Complete clean opens a confirmation that tells them what they are about to send: how many tasks are unticked, how many lost items will be reported. Yes, complete closes the clean, writes the end time and drops them back on the Cleans tab. ##### What the clean screen tells them Everything a cleaner needs before they knock is on one screen: a navbar, a dated head, then three ruled sheets grouped by the question they answer. No panels, no containers and nothing lifted. It has all been in your location records since you set them up; this is the first place it reaches the person walking up the path. - When: Scheduled start as "8:30 am", Duration as "45 min" or "2h 30m", and once the clean is running, Actual start. A late start relabels that line Actual start · ⚠ Late rather than colouring it, so the fact is in the words. A finished clean adds Completed at. - Where: The location name with the full address under it, the client tags on that site, Open in maps as a real link: it starts directions in the phone's own Google Maps, to the map pin on the property where the office has set one and to the address where they have not, and then the three fields that decide whether the visit goes smoothly: Getting in, which leads because standing on a doorstep unable to open a key safe is the failure this sheet exists to prevent, then About this property and Property type. - The clean: Clean type and Clean notes: whatever you wrote when you booked it. (A clean before it starts: a navbar, the date, then ruled sheets grouped by the question they answer. The committing key is docked at the foot in the one working ink, never below the fold, and on a clean booked for today a quiet "On my way" sits above it. "Getting in" is the line worth filling in properly for every site you clean.) > The seven client tags are matched by name and coloured accordingly: Key Holder, Pet On Site, Alarm Code, Parking Available, Access Instructions, Fragile Items and Eco Products Only. Anything else you tag a location with still shows, in grey. Spelling them the same way each time is what gets them coloured. ##### The working screen Starting a clean replaces the whole view with the running one. It opens with a dark masthead carrying a live timer labelled Time elapsed, counting 07:42 and then 2:14:09 in tabular figures so the clock does not jump about. Beside it sit small pills: "Started at 08:41", and Late start in amber if it was. Under the masthead the sections run in a fixed order: Services (the service lines on the clean, with Add-ons marked separately, and quantities but never prices), Checklist, Clean notes, Lost property, Photos, Request supplies and Take a break. The dock holds one button: Complete clean. (A clean in progress. The readings the dark masthead carries are the clock, the real start and the tick count; the count in the Checklist head is that last figure said again, because a cleaner glancing at the top of the screen should not have to scroll to find out how far through they are. Each task line is 52px with a check glyph that changes ink, and the three already ticked stay fully legible.) ###### Photos, notes and lost property - Photos are capped at twelve a clean, and the head shows the count as 3/12. At the limit the button disables and the note reads "You can attach up to 12 photos to a clean." Anything over 20MB is rejected with "That photo is too large. Max size is 20MB." Images are resized to 1600px wide before upload, which is what makes a dozen of them survive a bad signal. - Notes autosave about a second after typing stops, and are written again when the clean is completed. A cleaner who types a note and immediately locks the phone has not lost it. - Lost property is its own report, not a note. Report lost property opens two fields, Describe the item * and Where was it found? (optional), and Report item stays disabled until there is a description. Each item shows back as the description with "Found: under the sofa" beneath it. - Request supplies sits at the bottom of the same screen, because "we are out of blue roll" is a thing you find out on site rather than in the van. It searches your inventory, takes quantities, and the request lands on your side straight away. (The lower half of a running clean. Photos are squares laid on the page rather than rows in a gallery, and one taken with no signal shows immediately from the phone's own copy, carrying a small badge reading "Will upload when back online" until it goes. Everything here is a quiet control; the only solid key on the screen is Complete clean, docked at the foot.) ##### Taking a break Among those sections is Take a break. Tapping it stops the working clock and starts a break; the dock changes to a single End break button, and a pill appears beside the timer reading "On break since 12:04". Ending it puts them back to work. While a break is running, Complete clean is not on the screen. That is on purpose rather than an oversight: completing from a break would close the break at the moment of completion and record lunch as work. Ending it first is one tap and leaves the record saying what actually happened. A break survives the phone being locked, the app being closed, and the signal going. It is written to the device the moment it starts and syncs like every other action. > Breaks are unpaid unless you say otherwise. That is the usual arrangement for a rest break, and it is the setting that cannot quietly inflate your wage bill. Turn it on in Settings → Company → Breaks if your breaks are paid. The setting is read when a break starts and stored on it, so changing your mind later never restates a break somebody has already taken. Once a clean passes six hours without a break, a line appears beside the timer: "You have been on this clean over six hours. Take a break when you can." It says it once, it can be dismissed, and it never appears for somebody already on a break. It does not stop anybody working. The Working Time Regulations entitle a worker to a rest break of at least 20 minutes on a shift over six hours; CleanFlo shows the prompt and records the break, and whether your arrangements meet the regulations is between you and your own advice. A cleaner on a break also shows as On Break on their staff page, alongside On Site and Active. ##### Trading a clean with a colleague Where the Shift swaps module is switched on for your company, a clean that has not started yet carries a Request swap action. It opens a short sheet: Swap with, a picker of the cleaner's other active colleagues, and an optional Note for your manager. With nobody else active on the team it reads "No other active team members to swap with" instead. Nothing changes on the schedule until you decide. The request reaches you or a supervisor as its own row, headed Shift Swap Requests, on the cleaner's own staff page: approving it reassigns the clean to the named colleague in the same step, atomically, so the clean is never briefly unassigned or briefly on both people's lists. ##### Completing it Complete clean does not complete the clean. It opens a sheet headed Complete this clean? whose body is one of four sentences, picked by what actually happened. Situation | What the sheet says Everything ticked | "All tasks done" Some tasks unticked | "3 checklist items not yet ticked. You can still complete the clean." No checklist on the clean | "This clean has no checklist to tick off." Being closed after its day | "This clean was scheduled for Mon 3 Aug. Marking it done now records today's time, so your manager needs to know why." Anything found is repeated in the sheet as "2 lost property items will be reported to your manager", so nobody sends that by accident. The two buttons are Yes, complete and Not yet. (The completion dialog, which rises from the foot of the screen. It opens on a tinted mark, states one sentence about the checklist and does not list the unticked items, because they do not block anything. The lost property line is the only warning on it.) > A clean closed on a later day is treated differently. The timer is replaced by the scheduled date rather than inventing an elapsed time, and the masthead carries a pill reading Recording after the fact. A timer is deliberately never invented for a clean being closed after it happened. (A clean from an earlier day. It sits at the top of the Cleans list under "Needs completing", the explanation is written into the page as an annotation rather than raised on a banner, and the dock offers one thing. The wording throughout is blame-free on purpose: far more of these are cleans that were done and not tapped than cleans that were not done.) (The six answers, as radio buttons rather than a dropdown, in this order. "Something else" is the only one that opens a note box, and it will not submit empty: "other" on its own is a reason field that gives no reason.) The confirm button is never disabled. Pressing it with no reason chosen shows "Choose a reason so your manager knows what happened." rather than going quietly dead, because a button that stops responding tells nobody what is missing. Completing a clean also queues two emails to the client if you hold a contact address for them: a clean completion notice, and separately a lost property notice if anything was found. Both are queued rather than sent immediately, so a completion made in a basement still reaches the client once the phone has signal. ##### What counts as late Two different things are called late here, they use two different numbers, and only one of them is yours to set. The Late badge on the clean is fixed at ten minutes. The late-start alert, which is what actually reaches your phone before you go looking, is a number you set in Settings. The badge first. One rule, applied in one place: a clean is late if it is started more than ten minutes after its scheduled start time. That flag is written onto the clean at the moment of the tap and never recalculated, so a clean started at 08:41 against an 08:30 booking is late for good and a clean started at 08:39 never was. It then shows up in five places, in five different registers: - On the cleaner's clean list, as a red annotation reading Late, unless there is lost property on the clean, which outranks it. - On the clean screen, appended to the state line as · Late start. - On the running clean, as an amber pill reading Late start beside the timer. - In History, as the only stamp in that list: a red Late on the row. - In your clean drawer, as an amber badge reading Late next to the start time in the Field Report. The push notification you get when the clean does start is titled Late start rather than Clean started, with the cleaner's name and the job title. That is the whole of the badge. There is no score, no streak and nothing that accumulates. The alert is the other half, and it is the one that fires when the clean has not started. In Settings, under Late-start alerts, Alert after takes a number of minutes: 20 to begin with, anything from 0 to 240, and 0 switches late alerts off for the business entirely. It is one number for the whole company, not one per job type or per client. A clean still marked Scheduled that many minutes past its start time sends the cleaner a Running late? nudge and you a Job not started alert, in the same pass. The cleaner's nudge is skipped if they have already tapped On my way, and your alert then reads Job running late. Cleaner is on the way instead. Only today's cleans are checked, each clean alerts once and never twice, nothing more than three hours late alerts at all, and the sweep runs every five minutes, so an alert lands within about five minutes of the threshold rather than on the exact tick. The two numbers do not have to agree, and by default they do not: a clean started at 08:45 against an 08:30 booking carries the Late badge but never raised an alert, because it started before the twenty-minute mark. If you want them to line up, set Alert after to 10. ##### What you see afterwards Open the clean from your Schedule and the Clean details drawer gains two sections it did not have before the work happened. Field Report is the cleaner's own account: Started 10:41 with the Late badge if it applies, Completed 13:14, the completion notes in their own words, and Lost Property (2) listing each item with "Found: " and where. If the clean was started before its booked day it also carries an Early badge and the reason given. Verification is the two location stamps. CleanFlo takes a fix at the start and a fix at the completion, compares each against the property's own coordinates, and says in a sentence what it found. The default radius is 250 metres, which is deliberately generous: a phone fixes indoors to a hundred metres routinely, and wrongly doubting a cleaner costs far more than missing one. (The Clean details drawer after a completed clean. Field Report is what the cleaner said; Verification is what the phone said. Only a stamp genuinely a long way from the property is coloured as a problem.) A stamp can come back seven ways, and only two of them are ever flagged as a problem: Verdict | What it means At the property | The device was at the property address. Green, and the usual answer. Away from the property | Outside the radius, allowing for the fix's own error. This is the one that is coloured red. Location unavailable | The device could not get a fix, often the case indoors or in a basement. Amber, and extremely common in plant rooms. Location permission declined | The cleaner said no to location on their phone. They are allowed to, and were told so on their first run. Location too approximate | The fix was so rough it can neither confirm nor deny the address. Grey. A ±800m reading "confirming" a 250m radius would be theatre. Property has no coordinates | Your gap rather than theirs, with the fix offered inline as "Add coordinates to this property". Predates location tracking | One quiet grey line on cleans completed before the feature existed. Never a badge and never a colour. > Getting a GPS fix indoors can take twelve seconds, so CleanFlo never makes the clean wait for one. The status change is written first and alone; the location follows as its own record when it arrives. A cleaner who starts a clean and pockets their phone has still started the clean. > Two points per clean is the whole of it, and the cleaner is told exactly that before the first one is taken. If a client ever disputes a visit, the Verification section plus the timestamped photos is your evidence. It is not a tracking product and describing it to your team as one would be both wrong and, under UK GDPR, unwise. **FAQs** Q: Can a cleaner start a clean early, before the day it is booked for? A: Yes, and the app asks why. The button relabels itself Start early, and a sheet headed "Starting this early" asks Why are you starting it early? with five answers: client asked us to come early, today is the only day we can get in, working ahead of the round, covering for someone else, or something else. The reason is stored on the clean and shows in your Field Report next to the start time. Q: What if a cleaner forgets to press Complete and only notices the next day? A: The clean appears at the top of their list under Needs completing, with the note "Work from an earlier day that was never marked done." They can finish it off then, and the app asks for a reason. Far more of these are cleans that were done and not tapped than cleans that were not done, which is why the wording is blame-free throughout. Q: Can I override a cleaner who is mid-job? A: Yes, from Change Status in the clean drawer, but it confirms first: "The cleaner is currently working on this clean. Changing it to Done will override their progress." The button is labelled Override anyway, because it is a real override rather than a correction. Q: Do photos count against my storage? A: There is no photo allowance to worry about on the £19.99 plan. Twelve per clean is a practical cap rather than a billing one, and every image is resized to 1600px wide before it leaves the phone. URL: https://cleanflo.io/help/starting-and-finishing-a-job/ --- #### Working with no signal Cleaners work in basements and plant rooms, so the app assumes the signal will go. What gets queued, what happens on reconnect, and the few things that genuinely need a network. Cleaners work in basements, plant rooms and stairwells. CleanFlo is built on the assumption that the network is missing rather than present, so nothing a cleaner taps depends on it. Most software treats a lost connection as an error. In this trade it is a Tuesday. A cleaner spends the middle of their shift in a basement with a phone showing no bars, and a product that responds by throwing an error, or worse by quietly dropping the tap, teaches them to stop tapping. That is how you end up with a schedule full of cleans that were done and never marked. So the rule in the cleaner app is absolute: every write is applied locally first and queued. The screen changes on the tap. The network catches up later, or it does not, and either way the work is safe on the phone. ##### What happens when the signal goes Nothing visible, which is the point. The list stays on screen because it was painted from the phone's own copy in the first place. Taps keep landing. The only change is a small amber pill in the header, showing the word Offline on its own or the number of changes waiting once anything is queued. That pill is the cleaner app's own wording, not the banner you get in the web app; the two are different components and are described separately further down. (The Cleans tab with no signal, and it is the same page it always was. The only change is one small pill in the header, reading Offline on its own or the number of changes waiting once anything is queued, and the sync line at the foot. Every entry below is being read from this phone rather than from the server.) CleanFlo does not decide whether it is online by asking the phone. navigator.onLine answers a narrower question than the app needs: it is true whenever any network interface is up, which includes a site wifi with no route out, a captive portal at a reception desk, and one bar that never completes a request. Those three are exactly the conditions this app exists for. Instead it makes a real HTTPS request to the server and waits up to six seconds for an answer. A captive portal cannot fake that, because it cannot complete the handshake. (The three states the cleaner app's own header pill can show, and the whole of its offline vocabulary. Cached appears when the list on screen came from the phone rather than the server, which is normal and is not an error.) > Reads always paint from the phone's stored copy first, then update if the server answers. Even a failed online read falls back to the cache rather than showing an error screen. The phone does have to have opened the app online at least once to have a copy: a brand new phone taken straight into a basement shows "You are offline and this device has no saved copy of your schedule." ##### The queue Every change goes into a queue held in IndexedDB on the phone itself. Two properties of that queue matter more than anything else about it. - Order: "Started a clean" has to land before "Finished a clean", or your records are nonsense. The queue is strict first in, first out, and it stops at the first failure rather than letting later writes overtake a stuck one. - Liveness: A write that can never succeed used to be retried on every reconnect forever, blocking everything behind it. Each operation now carries an attempt count and is set aside after five tries so the rest can drain. The queue flushes in three ways: the moment the connection is verified back, when the service worker fires a background sync, and on a 30-second backstop timer that runs the whole time the app is open. A cleaner does not have to do anything, and in normal use never sees any of it. The queue does not hold table names and column payloads as far as the cleaner is concerned. Every operation is described in their own words, because a bare count ("3 changes pending") tells somebody that work of theirs is unsaved without telling them which work, and the only safe response to that is to redo all of it. This is the complete vocabulary: Label in the queue | What it was Started a clean | Pressing Start clean Finished a clean | Pressing Yes, complete Confirmed a shift | Yes, I'll be there Said you were on the way | On my way Recorded where you were | A location stamp at a start or a completion Updated a clean | Any other change to a clean Ticked a task | One checklist row A photo | A clean photo, with the file name beside it A file on a message | An attachment sent in a conversation A message | A chat message, with its first 60 characters beside it A reaction | An emoji on somebody else's message Marked messages as read | Opening a conversation A supply request | Asking for stock from inside a clean A time-off request | A request from My time Your availability | A change to the weekly availability switches An equipment return | Request return on a loan A change to your details | A profile change, including the first-run acknowledgement An email to a client | The completion or lost property email, with the address beside it A notification | A push to somebody else that has to go out A change | The fallback, which names the table rather than inventing a description > Times are stamped when the tap happens, not when the sync happens. A clean started at 08:41 in a basement and synced at 11:20 is recorded as starting at 08:41. Your reports, your hours and your on-time figures are all built on the real moment. ##### Where a cleaner checks The Me tab opens with a row labelled Sync carrying a count badge. Its subtitle is the whole status in three words: Everything is saved, Waiting to send, Sending… or Could not be sent. Tapping it opens the queue itself. (The Sync line is the first thing on the Me tab, above the kit and everything else, and it turns red the moment anything has been refused. This is the line to point at during training.) (The Sync screen with work waiting: the same ruled ledger as every other screen, with the time each change was written down the rail. Every line names what it is and when it was made, so a cleaner can see for themselves that the morning is on the phone and nothing has been lost.) When nothing is waiting the heading reads Everything is saved and there is one line under it: "Nothing is waiting. Every change you have made has reached the office." Offline with a queue, the heading is Waiting to send and the line is "Keep working. Everything below is saved on this phone and will send itself the moment you have signal." Above them both sits the honest connection reading: Online or Offline. ###### When the server refuses something After five failed attempts an operation is set aside rather than retried forever. Those appear in their own section headed Could not be sent, in red, with the server's own reason on the line ("Rejected by the server" or "Failed repeatedly" when there is nothing more specific). Each row gets a Discard and the section gets a Try again. (Rejected writes. The sync line carries the alert in the app's own words, and in the product that same sentence is a solid red band pinned across the very top of the whole app, above every screen, which opens this one when it is tapped. The wording is deliberate: the office refused these, so somebody has to decide. The alternative, a dismiss cross, threw away work that may have to be redone.) A rejected write is loud on purpose. It appears as a red banner across the very top of the whole app, above everything else, reading "2 changes could not be saved. Check and try again." Tapping the banner opens the Sync screen rather than dismissing it, because this is work somebody may have to redo. ##### What you see on your side While a cleaner is offline, your schedule shows the clean exactly as it was. There is no "cleaner is offline" indicator, and there deliberately isn't one: it would tell you nothing you can act on. What arrives when the phone reconnects is the whole sequence in order, with the real times attached. Your own web app has a sync banner of its own, pinned to the top of the window. It is a different component from the cleaner's and is explicitly hidden on /cleaner, so the two never appear together. It has exactly four states. (The four states of the banner in your web app, in the order they outrank each other. Only the first is an alert; the other three are quiet status lines, and the green one disappears by itself after three seconds.) - Failed outranks everything and is the only one announced as an alert to a screen reader. It reads "3 changes could not be saved. Please check and re-enter them." and drops to "…could not be saved. Please check and re-enter it." for a single one. It carries a dismiss cross. - Syncing reads "Syncing 3 changes…" with a turning arrow. - Saved reads "All changes saved" and removes itself after three seconds. It is confirmation, not a notice board. - Offline reads "Offline" on its own, or "Offline, 3 changes queued" once anything is waiting. > One thing does not survive a blackspot: the instant push notification. Clean alerts to the office are sent at the moment of the tap and are not queued, so a clean started with no signal reaches you as a status change on the schedule when the phone syncs rather than as an alert at 08:41. The clean record itself always arrives. The ping does not. ##### The honest limits Four controls are switched off while there is no connection, all of them because they exist to talk to the server and would otherwise just fail: - Pull to refresh on the Cleans list. - The refresh button in the header, whose label changes to "Offline, cannot refresh". - Send now on the Sync screen. - Try again on rejected writes. And two things genuinely need a connection: - Changing a password. It goes through the authentication service directly and cannot be queued. - Loading anything the phone has never seen. A list is cached the first time it is fetched. Screens with no stored copy say so plainly: "You are offline and this device has no saved copy" followed by what to do once there is signal. The queue is also device-local. It survives closing the app, locking the phone and signing out, which is why the sign-out confirmation says "Anything still waiting to sync stays on this device until you sign back in." It does not follow the person to another handset. In practice the only way to lose queued work is to lose the phone before it next sees a network, which is the same exposure a paper clean sheet has always had. > If you are being asked for evidence that a clean happened, offline work is no weaker than online work. The start and end times are the real ones, the photos carry the phone's own copy until they upload, and the location stamps queue as their own records behind the status change they belong to. Nothing is reconstructed after the fact unless the cleaner explicitly says it was, in which case the clean is labelled "Completed after the fact" with a reason attached. **FAQs** Q: How long can a cleaner work offline before something breaks? A: There is no time limit and no queue length limit. A cleaner can do a full day without signal and sync the lot on the way home. Photo bytes are held on the phone as well, up to 150 images, so even the evidence stays visible while it waits. Q: What if two cleaners change the same clean while both offline? A: It does not arise in practice, because a clean belongs to the cleaner it is assigned to and only they see it. Where it can arise is you changing a clean on your side while a cleaner is offline: their write lands when they reconnect and takes precedence on the fields it touches, which are the field report fields you were never editing anyway. Q: Does the cleaner have to remember to press anything to sync? A: No. Send now exists for the anxious, not because it is needed. The queue drains on reconnect, on a background sync from the service worker, and on a 30-second timer. Q: Our site wifi has a login page at reception. Does that confuse it? A: That is exactly the case the connection check was built for. A captive portal makes the phone report itself as online while nothing can actually get out. CleanFlo verifies with a real secure request to the server, which a portal cannot answer, so the app correctly treats it as offline and keeps queueing. URL: https://cleanflo.io/help/working-offline/ --- #### The app in 27 languages A checklist somebody cannot read is a checklist that does not get followed. The cleaner app ships in 27 languages and picks one from the phone itself, with no setup from you. A checklist somebody cannot read is a checklist that does not get followed. The cleaner half of CleanFlo is translated into 27 languages, and it picks the right one before anybody is asked to choose. British cleaning is not done in English. Walk into any commercial contract of ten people and you will find Polish, Romanian, Portuguese, Bulgarian, Albanian and Punjabi in the same van. That is unremarkable, and it is also the reason so much of this trade still runs on a WhatsApp voice note: text instructions in English get skimmed, half understood, and quietly ignored. So the cleaner app is translated in full, not partly. All 27 dictionaries are complete. Every button, every section head, every empty state, every error and every confirmation is written in the language the phone is set to, and the whole thing is decided before the cleaner has to find a settings screen. ##### The 27 languages This is the list, in the order the picker shows it. It is not alphabetical: English comes first, then the languages a British cleaning team is most likely to need, which is why Polish and Romanian sit above Spanish and German. In the picker | In English | Code 🇬🇧 English | English | en 🇵🇱 Polski | Polish | pl 🇷🇴 Română | Romanian | ro 🇧🇷 Português | Portuguese | pt 🇪🇸 Español | Spanish | es 🇫🇷 Français | French | fr 🇮🇹 Italiano | Italian | it 🇩🇪 Deutsch | German | de 🇳🇱 Nederlands | Dutch | nl 🇷🇺 Русский | Russian | ru 🇺🇦 Українська | Ukrainian | uk 🇱🇹 Lietuvių | Lithuanian | lt 🇧🇬 Български | Bulgarian | bg 🇨🇿 Čeština | Czech | cs 🇸🇰 Slovenčina | Slovak | sk 🇭🇺 Magyar | Hungarian | hu 🇦🇱 Shqip | Albanian | sq 🇹🇷 Türkçe | Turkish | tr 🇸🇦 العربية | Arabic | ar 🇵🇰 اردو | Urdu | ur 🇮🇳 ਪੰਜਾਬੀ | Punjabi | pa 🇮🇳 हिन्दी | Hindi | hi 🇧🇩 বাংলা | Bengali | bn 🇳🇵 नेपाली | Nepali | ne 🇸🇴 Soomaali | Somali | so 🇵🇭 Filipino | Filipino | tl 🇨🇳 中文 | Chinese | zh > Two of the flags are approximations rather than mistakes. Portuguese carries the Brazilian flag although the label is Português and the dictionary serves European and Brazilian Portuguese alike, and Punjabi and Hindi share the Indian flag. A flag is a visual anchor in a scrolling list, not a claim about nationality. ##### It picks the language itself Nobody has to be told to change a setting. The first time a cleaner opens the app it reads the phone's own list of preferred languages, in the order the phone ranks them, and takes the first one CleanFlo has a dictionary for. - The region is stripped, so a phone set to pt-BR or pt-PT both get Portuguese, and zh-Hans-CN gets Chinese. - If nothing on the phone matches, it falls back to English rather than guessing. - The choice is then written to the phone's own storage, under cleanflo_lang, and used from then on. An explicit choice always wins and is never overridden afterwards. Somebody who picks English on a Polish phone meant it, and the app will not quietly switch them back next time. Detection only runs when no choice has ever been made. > The choice is stored on the device, not on the person. It is not written to their staff record and it does not follow them to a new phone or a borrowed one. On a new handset the app detects again from scratch, which is almost always right anyway. ##### Where the picker lives Fifth tab, Me, then the sheet headed Preferences. It is the first line, led by a bare translate glyph in the margin and labelled Language. Under it sits Appearance, which is Light or Dark and has no "System" option. (The Me tab: ruled sheets one after another, no containers and nothing lifted. Language is one line among the preferences rather than a screen of its own, and changing it re-renders the whole app on the spot: no reload, no sign out, no confirmation step.) Tapping that line opens the phone's own picker over the page. All 27 arrive as ruled lines in the picker's order, and the one in use carries a tick rather than a highlight, the way a book is indexed rather than coloured in. (The picker, open. It is the phone's own select rather than a custom sheet, so it arrives as the wheel or the list the cleaner already knows how to use, and it takes effect the moment it closes. Ruled lines, in the picker's own order, each one written the way it is written there: the flag, a space, and the language's own name for itself. No English gloss and no language code, because somebody looking for their own language is not looking for the word "Bulgarian". The current one is indexed rather than highlighted.) ##### What a translated clean actually looks like Everything the app writes is translated. Everything you write is not, which is the right way round: a clean called "Weekly clean" stays "Weekly clean", the address stays the address, and a checklist item you typed as "Bins out to the store" reaches the cleaner in the words you chose. (A clean page in Polish. The sheet labels, the line labels and the committing key come from the dictionary; the clean's title, the address, the access notes and the property type are your own text and are untouched.) (The same working screen in Romanian. Sheet labels, column heads, the readings labels and the committing key are translated; the task lines are the ones you wrote against the service, so they read as you typed them.) Two things stay in English in every language, deliberately. Dates and clock times are always formatted British style: "Thursday 13 August 2026", "10:41", "2h 30m". A cleaner working in Britain reads British dates on the paperwork, on the door and in the diary, and translating only the app would make the app the odd one out. And property types are your own catalogue values rather than dictionary keys. The parts of the app most worth translating are the ones nobody thinks about until they go wrong. The sync queue is one of them: somebody who has just done four hours in a basement should be able to read the sentence telling them the work is safe. (The Sync screen in Polish, the same ruled ledger with the time of each change down the rail. The reassurance line is a full translation rather than a machine one: "Pracuj dalej" is "keep working", which is exactly what the English says and exactly what somebody in a blackspot needs to hear.) ##### Arabic and Urdu read right to left Two of the 27 are written right to left, and they are the two where getting it wrong is not a cosmetic problem. A left-to-right Arabic interface puts the back arrow, the chevrons and the progress fill on the wrong side of every screen, which makes the app read backwards rather than merely look untidy. So choosing Arabic or Urdu mirrors the whole cleaner app: the layout, the icons that imply direction, and the edge swipe that pops a clean screen, which flips to the other edge. Your web app is unaffected, because the direction is set on the cleaner app's own root rather than on the page: the two halves share a document and mirroring yours would help nobody. ##### Your side stays in English The web app is not translated. Neither are the notifications and emails that come to you when a cleaner does something: "Shift confirmed", "On the way", "Late start", "Clean completed", the availability changes and the time-off requests. That is a decision rather than an omission. The recipient of those messages is you, and the app has no way of knowing what language the owner of a business reads. Everything pointed at a cleaner is translated; everything pointed at the office is in English. The practical effect is worth stating plainly, because it is the thing that sells this feature. You write a clean once, in English, and it is legible to a Romanian cleaner, a Bulgarian cleaner and a Somali cleaner without you doing anything at all. No parallel rota, no translated instruction sheet pinned in the van, and no relying on whichever member of the team has the best English to relay it. > You do not configure any of this. There is no language setting on a staff record, nothing to switch on and nothing extra to pay for: 27 languages is part of the £19.99 a month, like everything else. A cleaner opens the app on a Polish phone and the app is in Polish. > If you hold RAMS or COSHH information that your team must understand, the translated app helps but does not discharge the duty. Health and safety information has to be communicated in a form the worker actually understands, and a translated interface around an English risk assessment is only half of that. Where the risk is real, translate the document too. **FAQs** Q: What happens if a language is missing a phrase? A: It falls back, in order: the chosen language, then English, then the key name itself. In practice the first two are all that ever run, because all 27 dictionaries are complete. The fallback exists so that adding a new string to the app can never leave a cleaner staring at a blank button while the translations catch up. Q: Can I set a cleaner's language for them from my side? A: No, and it would not help if you could. The choice lives on the phone rather than on the staff record, and the phone is nearly always right: somebody whose handset is in Romanian wants the app in Romanian. If somebody is stuck in the wrong language, the fix is thirty seconds on their own phone under Me then Preferences. Q: Are the translations machine generated? A: They are written translations held as complete dictionaries in the app, not run through a translation service at load time. That is why they work offline: a cleaner in a basement gets the same Polish as a cleaner on the high street, because the words are already on the phone. Q: Does the client portal have languages too? A: No. The 27 languages are the cleaner app. Your clients see English, as do you, and for the same reason: those are documents about money and contracts, and the person reading them chose to work with a British cleaning company. URL: https://cleanflo.io/help/languages/ ### Services & pricing #### Creating services and add-ons The catalogue every clean, quote and invoice line is priced from: creating a service, creating an add-on, what the base price and duration do, and where both turn up later. Services is one list of what you sell and what you charge for it. The price on a clean, the line on a quote and the amount on an invoice are all read back from this list, so it is worth an hour of your time early on. Most cleaning firms already have a price list. It lives in the owner's head, in an old PDF, or at the bottom of a quote sent to somebody in March. The trouble with all three is that nothing else can read them, so every clean gets priced again by hand and two clients end up paying different amounts for the same clean. CleanFlo keeps that list in one place and then reads it everywhere: the Services and Add-ons pickers in the clean drawer, the Add from catalogue button on a quote, and the global search. Get it right once and you stop typing prices. ##### The Services screen The sidebar item is called Services and the page it opens is titled the same. Everything on it is one table: your whole catalogue, services and add-ons together, ten rows to a page. (Services. One New service button in the header, four readings beneath it, and the Services & add-ons table with its All, Services, Add-ons, Unpriced and Inactive tabs.) The four readings under the header are counts of the whole catalogue, not of whatever the tabs are currently filtering to, so they do not move when you switch tabs. Each one is a button on to the rows behind it, and each tab carries the same count beside its own label. The sort control beside the search offers Name (A–Z), Name (Z–A), Type, Price (low to high), Price (high to low) and Duration (shortest first), and it sorts the whole catalogue rather than the ten rows on screen. ##### Services and add-ons: the difference There are two item types and the app treats them as two separate lists everywhere it offers them. A service is the clean. An add-on is something bolted onto a clean that would not be booked on its own. (The Type column carries one of two pills. Sky for a service, green for an add-on. Anything the app cannot recognise falls back to Service.) | Service | Add-on What it is | A clean somebody books | An extra somebody asks for on top Examples | Deep Clean, Changeover Clean, Weekly Office Clean | Oven Clean, Window Cleaning, Carpet Shampoo Second field | Est. Duration, in whole minutes | Unit, free text such as "per window" Where it appears | The Services picker on a clean, the Services tab of the quote picker | The Add-ons picker on a clean, the Add-ons tab of the quote picker Can be booked alone | Yes | In practice no: it is priced as an addition The split matters because the clean drawer draws them as two separate sections. Put window cleaning in as a service and it will not appear under Add-ons when somebody is booking a house clean and wants the windows doing as well. The type cannot be changed after the item is created, so it is worth pausing over. > The header gives you a button for each: Add Extra opens the drawer already set to add-on, and Add Service opens it set to service. Using the right button is the easiest way to avoid creating the wrong type. ##### Creating a service Press Add Service and a drawer slides in from the right. The title reads New service and changes to New add-on if you press the other side of the segmented control at the top, which is the quickest way to tell what you are about to save. (The New service drawer. Only Name and Base Price are required. The duration field appears for services and is replaced by a Unit field for add-ons.) - Name: Required. This is the string that appears in every picker, on every quote line and on the invoice, so write it the way you want a client to read it. The placeholder suggests e.g. Deep Clean, Changeover. If you leave it blank the drawer says Name is required. under the field. - Description: Optional, and marked as such. It shows as a second line under the name in the catalogue table and it is searched along with the name. Useful for the sentence that stops you being asked "does that include the oven?" every time. The placeholder is What does this include? - Base Price (£): Required, and labelled inc. VAT. This is the number that comes across into a clean, a quote line or an invoice line as the unit price. A blank or non-numeric entry gives Enter a valid price. and a negative one gives Price cannot be negative. - Est. Duration: Services only, in whole minutes, and optional. It steps in fifteens, so 120 is two hours. The catalogue table renders it back as 45m, 2h or 2h 30m. A bad value gives Enter a duration in whole minutes. and a negative one Duration cannot be negative. - Unit: Add-ons only, and optional. Free text: e.g. per window, per room. It sits in the same Duration / Unit column as a service's duration and it is printed verbatim, so keep it short. The footer is Cancel and Create. On an existing item the second button reads Save changes instead. Saving raises a small confirmation naming the item, and the new row appears in the table straight away, active by default. ##### Creating an add-on Same drawer, one field different. Press Add Extra in the header, or press Add-on / Extra on the segmented control, and Est. Duration is replaced by Unit. An add-on is priced per something rather than per hour, which is why the app asks for a unit rather than a length. (The New add-on drawer. The name placeholder changes with the type, and Unit takes the place of the duration field.) > The unit is a label, not a calculation. Setting per window at £4.50 does not make CleanFlo count windows. When the clean is booked you put the quantity in yourself, and the line total is price times quantity. ##### A faster way to start: the template library Typing services in one at a time is one way to build a catalogue. Press Browse templates, beside Add Extra and Add Service in the header, and a panel opens with 105 ready-written services and add-ons across fifteen categories: domestic, end of tenancy, deep cleaning, commercial, retail, healthcare, industrial, holiday lets, after builders, carpet and upholstery, windows, ovens, gutters and exterior, laundry, and a category of extras that fit almost any clean. (The Template Library. Categories down the left with a count against each, a search box that reaches every category at once, and a suggested price on every row that can be typed over before anything is added.) Every price and length shown is a starting guide, not a rate CleanFlo has researched for your area, so the price beside each row is a plain number field you can overwrite before you tick anything. Nothing reaches your catalogue until you press the button in the footer, which counts what you have ticked: it reads Add 2 to my catalog once two are ticked, and stays disabled at zero. A template you have already added keeps its place in the list with a small Added tag beside its name rather than disappearing, so you can carry on browsing another category and add a second batch without losing track of what already went in. What lands in your catalogue is identical to typing the same row in by hand: active by default, and free to edit or retire afterwards exactly like any other item. > The same panel is offered during setup too, above the manual form on the Set up your services onboarding step, so a new company can put together a starting catalogue in a couple of minutes instead of typing every line by hand. ##### How they show up on a clean This is the payoff. Open the clean drawer and two sections down from the location you get Services and, under it, Add-ons. Each is a stack of rows, and each row is a dropdown of your catalogue plus a Qty box. Every option in those dropdowns is written the same way: the name, a middot, and the base price to two decimal places. A service called Deep Clean at £180 reads Deep Clean · £180.00. An item with no price set shows just its name. The first option in the list is always , Select. (The Services and Add-ons pickers inside the clean drawer, and the Estimated Earnings block that adds them up. Only the two lists are read from your catalogue: the additional charge is typed in per clean.) Underneath, Estimated Earnings lists each chosen line with its own total (base price times quantity), tags the add-on rows so they are distinguishable from the services, and lets you add a one-off Additional charge that is not in the catalogue at all. That charge is also marked inc. VAT. If your catalogue is empty the pickers do not render at all. Instead you get a line of grey text: No services set up yet. Add them in Services. and, for the other section, No add-ons set up yet. Add them in Services. A clean cannot be saved without at least one service or add-on on it, so an empty catalogue blocks booking entirely. > Only active items appear in the pickers. Deactivating a service does not touch the cleans it is already on, but it does take it out of every list from that moment. That is the intended way to retire a price without losing the history behind it. ##### How they show up on a quote Quotes reach the same catalogue through a picker rather than a dropdown. In the quote drawer, under the line editor, Add from catalogue opens a small dialog headed Add Item with three tabs: Services, Add-ons and Products. The first two are this catalogue. The third is your stock list, and it carries a warning that stock prices are costs, not selling prices. (The Add Item dialog on a quote. Services and add-ons are separate tabs, prices are the base price straight from the catalogue, and only active items are listed.) Picking an item appends a quote line carrying the name as the description and the base price as the unit price, with VAT set to 20 if your company is VAT registered and 0 if it is not. From there it is an ordinary line you can edit, so the catalogue sets the starting point rather than fixing the number. > The price field is labelled inc. VAT because the number you type is the number a client is charged. If you are VAT registered, the invoice then splits that figure into net and VAT at the rate on each line. Deciding whether you quote inclusive or exclusive prices is a business decision to make once, at the start, and then hold to across the whole catalogue. **FAQs** Q: Can I change a service into an add-on later? A: No. The type control only appears when you are creating an item, because an edit that changed the type would silently move the item between the two pickers and out of whichever one your team is used to finding it in. If you need it as the other type, create it again and deactivate the original. Q: Do I have to fill in a duration? A: No, it is optional. It is an estimate used to give you a sense of the length of the work, and the catalogue table renders it back as 45m, 2h or 2h 30m. Cleans carry their own start and end times, so a duration here does not set the length of anything you book. Q: What happens to the catalogue if I am not VAT registered? A: Nothing changes on this screen. There is no VAT column and no VAT arithmetic anywhere in Services, and the "inc. VAT" hint on the price field is the only mention of it. VAT appears further downstream, on quote and invoice lines, and only when your company is marked as VAT registered under Settings. Q: How many services should I set up before I start booking? A: Enough to cover the work you do most weeks, which for most firms is between five and ten. Anything unusual can go on a clean as an additional charge or on an invoice as a custom line, so you are not blocked by a gap in the list. Q: Do I have to use the prices from the template library? A: No. Every suggested price is a plain field you can overwrite before you tick a template, and nothing is written to your catalogue until you press the add button. Items you do add can be edited or deactivated afterwards exactly like one you typed in yourself, so a suggested figure is never the final word. URL: https://cleanflo.io/help/creating-services/ --- #### Keeping the catalogue tidy Change a price and the question is always what happens to work already booked. The answer differs for cleans, quotes and invoices, and it is worth knowing before you edit anything. A catalogue is only useful while it matches what you actually sell. Prices go up, services get dropped and somebody creates "Deep clean" twice. This is how to keep the list honest without breaking the cleans and invoices behind it. Everything on this page happens in the same table you built the catalogue in. Each row has two buttons at its right-hand end, revealed when you hover over the row or reach it with the keyboard: Edit and, in red, Delete. Between the price and those buttons sits the Active switch, which is the control most people should be reaching for and the one most people miss. (A catalogue row in three states: active, inactive, and the row actions. An inactive item keeps its place in the table but is greyed, tagged and pulled out of every picker.) ##### Editing a price Press Edit and the same drawer you created the item in slides back in, filled with what is stored. Two things are different. The title reads Edit Service or Edit Add-on rather than New, and the type control at the top is not drawn at all: an item cannot change from a service to an add-on after the fact. The footer button reads Save changes. (The Edit Service drawer. No type control, and Save changes in place of Create. Everything else is the form you filled in when you created the item.) Save and a short confirmation names the item: "Deep Clean" updated. The table redraws with the new figure. Nothing else on the screen changes, and that understatement is the point: the catalogue is a price list, not a ledger, and editing it edits the list. ##### What a price change touches This is the question worth being precise about, because the honest answer is "less than you would expect". CleanFlo takes a copy of the price at each stage rather than looking it up again later, so putting a price up does not quietly rewrite your history. When you change a base price | What happens Cleans already booked | Nothing. The clean stored the price it was saved with, and its Items list still shows that figure. Cleans you book from now on | They pick up the new price the moment you choose the service in the picker. A booked clean you reopen and save again | It is rewritten at the new price. Saving a clean replaces all of its item lines using today's catalogue. Quotes already sent | Nothing. A quote line is a copy of the description, price, quantity and VAT rate. It never re-reads the catalogue. Invoices already raised | Nothing, at any status. An invoice line is its own row with its own stored unit price. Reports and the Outstanding figure | Nothing. Both read invoices and cleans, not the catalogue. > The third row is the one that catches people. If you put your Deep Clean up from £180 to £195 and then open a clean booked last month to move it by half an hour, that clean leaves the drawer priced at £195. Change the time on the calendar by dragging it instead, or accept the new figure deliberately. The chain runs one way and each link takes a copy: the catalogue sets the price on a clean, the clean sets the amount on the invoice line, and the invoice line is what the client is asked to pay. Once a link has been made, changing the one behind it does not reach forward. (A clean booked in July, opened after the price rise. Its Items list still reads £180.00, because that is the figure that was stored when the clean was saved.) ##### Retiring an item without deleting it There is no archive folder in CleanFlo, and nothing to move an item into. The Active switch is the archive. Turn it off and the item stays in the table with everything it ever earned still attached to it, but it disappears from every list your team picks from. (The Active switch in the catalogue table. It writes immediately, with no save step, and the tooltip tells you what pressing it will do rather than what it currently is.) The switch has no confirmation and no save button. It flips instantly, writes in the background, and rolls itself back if the write is refused. Its tooltip reads Active, click to deactivate or Inactive, click to activate, and a short confirmation follows: "Fridge Clean" deactivated. - The row is greyed: the type glyph fades, and the name and price are muted. - A small grey Inactive badge appears beside the name. - The item is dropped from the Services and Add-ons pickers in the clean drawer. - It is dropped from the Add Item dialog on a quote, which only ever lists active items. - The Active count in the header falls by one. The Services and Add-ons counts do not: they count everything. - Cleans, quotes and invoices that already reference it are untouched and keep showing it. > Deactivating is almost always the right move. It keeps the price you charged in 2025 attached to the work you did in 2025, while making it impossible for anybody to book it again by accident. Reversing it is one click. ##### Deleting an item The red Delete button removes the row outright. A confirmation appears first, worded exactly like this: Delete "Fridge Clean"? This can't be undone. Existing cleans that reference this service won't be affected. The buttons are Cancel and Delete, and the item vanishes from the table the moment the second one lands. > There is no undo, no bin and no restore. If you delete a service you have used, the item itself is gone even though the cleans and invoices carrying its name and price are not.,Keep Delete for genuine mistakes: the duplicate you created twice, the test item from your first afternoon, the typo you have already replaced. For anything that has ever been booked or billed, use the Active switch instead. (The two row actions. Edit is quiet, Delete is red, and both only appear once the row is under the pointer or the keyboard focus.) ##### Why a short catalogue quotes faster Quoting is where the state of this list shows. Building a quote line by hand means typing a description, a quantity, a unit price and a VAT rate four times over. Building it from the catalogue means opening Add from catalogue, pressing a name, and correcting the one number that is different for this client. That only works if the list is short enough to scan. The picker is a plain vertical list of names and prices with a search box above it, so a catalogue of nine items is one glance and a catalogue of sixty is a search every time. Two habits keep it in the first category. - Deactivate anything you have not sold in a year rather than leaving it in the list "just in case". Reactivating takes a click on the day somebody asks. - Resist creating a variant for every property size. One Deep Clean with the quantity changed on the line beats Deep Clean (1 bed), Deep Clean (2 bed) and Deep Clean (3 bed), all of which have to be repriced separately when your costs move. (The catalogue sorted by Price (high to low). Reading the list this way once a quarter is the quickest way to spot the item that has not moved with your costs.) Beside the pager at the foot of the table, Export CSV downloads the whole sorted and filtered catalogue as services.csv, with the columns Name, Type, Base Price, Duration / Unit and Active. That file is the easiest way to do an annual price review: open it in a spreadsheet, mark up what needs to move, then come back and edit the handful of rows that actually changed. > Searching this screen matches the description as well as the name, so a habit of writing one honest sentence in the description field pays off later. Type "oven" and you will find both the add-on called Oven Clean and the deep clean whose description mentions the oven. If a search finds nothing the table is replaced with No results over Nothing matches "oven" and a Clear search button, so a stray filter never looks like an empty catalogue. **FAQs** Q: If I put my prices up, do my recurring cleans go up too? A: Not on their own. Cleans already on the calendar keep the price stored against them. New occurrences you book after the change take the new price, and any existing clean you open in the drawer and save again is rewritten at the new price. If you want a whole recurring series repriced, the reliable way is to end the old series and book a new one. Q: Can a client see that I have changed a price? A: No. The catalogue is not exposed anywhere a client can reach. Clients see the quote you sent, the invoice you raised and, in the portal, their own cleans. All three carry the figures that were stored at the time. Q: I deleted a service by mistake. Can I get it back? A: Not from inside CleanFlo: the delete is immediate and there is no bin. You can recreate it with the same name, price and description in under a minute, and cleans that already carry its name and price are unaffected. This is the reason the Active switch exists. Q: What is the difference between an inactive service and a deleted one? A: An inactive service still exists. It sits in the table with an Inactive badge, keeps its price, stays out of every picker and can be switched back on. A deleted service is removed from the catalogue altogether. Both leave existing cleans and invoices alone, so the only real difference is whether you can ever use it again. URL: https://cleanflo.io/help/managing-your-catalogue/ ### Quotes & invoicing #### Your website A public page for your business at cleanflo.io/p/your-name: fourteen designs, your services, photos, areas and a quote form. Built in the app and live the same evening. Most cleaning companies have a phone number on a van, a Facebook page and no website at all, so somebody who wants to look you up before ringing has nowhere to look. This is that somewhere: one public page at an address of your own, built out of what CleanFlo already holds about your business, designed by answering four questions, edited in the app on an evening and live the same evening. Your page lives at cleanflo.io/p/brennan-cleaning: your own company's name in place of that one. It is a real, server-rendered web page, not a screenshot and not an app: Google can read it and index it, Facebook and WhatsApp can build a preview card from it, and it opens on a five-year-old phone on a bad signal because there is almost nothing on it to load. It is a builder, and what it builds is one page. You answer four questions, CleanFlo suggests one of fourteen designs, and you take it or look at the other thirteen. The fourteen are not fourteen colour schemes over one page: each is a different order. Blueprint shows a facilities manager your insurance before it describes a single service, because that is what they shortlist on. Sunrise puts what your clients said about you above what you charge. Deposit names a fixed price by bedroom before it says a word about you, because a tenant with a check-out on Friday is buying their deposit back, not a clean. What it will not do is worth saying at the top as well. There is one page and there will only ever be one: no blog, no page per service, no page per town. The sections it can hold are a closed set of fifteen: you can reorder them, switch them off and change how each one is arranged, but you cannot invent a sixteenth. And nothing you can press makes the page unreadable: the ten controls over its shape do not set colours at all, and the one colour you do set is adjusted for contrast whether you like it or not. > Nothing about your clients is on the page. No clean, no site address, no invoice, no name from your client list, and none of the photos your cleaners take on cleans. The only client words that ever appear are testimonials you typed in yourself, or ones a client was asked for and said yes to, and the only client numbers are totals. A count of finished cleans and an average rating. The address reuses your company's existing slug, the same one your client portal links and your public quote link already use, so a business has one identity rather than three. That also means it is shown to you but not editable: portal links containing that slug have already been emailed to clients, and changing it would break every one of them. If you genuinely need a different address, ask support and they will change it for you. ##### See a finished one first There is a finished example page at cleanflo.io/p/coastalcleaningdemo. Coastal Cleaning is not a real company: a bar across the top says so before you read a word of it, the reviews on it are invented and the form does not send, but everything under that bar is the real renderer doing the real thing, with a full set of services, photographs, questions and figures on it. The bar carries three menus: Design, Colours and Lettering. Change the first one and watch. The page does not recolour, it rearranges, different sections, in a different order, arranged differently, with a different menu at the top. That is the one claim in this article you should not have to take on trust, and it is ten minutes well spent before you start on your own. The demo is kept out of Google deliberately, so it is not competing with anybody's real page for anything. ##### The Web Page screen Web Page is the first item under Pipeline, the upper of the two groups inside Money in the sidebar, above Enquiries, Site Surveys and Quotes. It is filed with the money because it is where enquiries come from. Only the account owner sees it: a supervisor has no Web Page item in their sidebar and no route to it, because the page makes claims in the company's name. The screen is one bar and two columns, and it does not scroll as a whole. The columns scroll inside themselves, so the page you are editing never slides away from the controls that edit it. The bar carries your address, whether the page is live, whether the last thing you typed is saved, and the buttons. The left column is your page as a list, top to bottom. The right column is your page as a page: a live rendering of the real thing at its real address, drawn by the same code a visitor gets rather than a lookalike drawn twice. Click a band in it and that section's controls open on the left; rest on a row on the left and the band lights up on the right. (The Web Page screen before a page has gone live: one bar, the rail and the page. The bar is drawn on two rows here because this illustration is narrower than a laptop, where the address, the state, the save reading and the buttons all sit in one band. The right-hand pane is a live rendering of the real page, which a drawing cannot reproduce.) - The address: First thing in the bar, in a typewriter face, because it is what you paste into Facebook and read down the phone. It opens your live page in a new tab, and the two icons beside it copy the address and open the QR sheet. - A dot and three words: Not live yet before the first publish, Live once it is up, Unpublished changes whenever the draft has moved since. One glyph you can read from across the desk. - The figures, as a clause: On a live page the state is followed by · 214 visits, 6 enquiries in 30 days. That is the whole of the reporting on this screen and it is meant to be: a count of views and a count of quote requests, nothing about who, no cookie, no IP address, nobody followed anywhere. On a page nobody has visited yet it is left off rather than printing a nought. - Saving… / Saved: Every change writes itself to the draft about a second after you stop typing. There is no Save button to hunt for and nothing to lose by closing the tab halfway. - Desktop / Phone: Which width the right-hand pane renders at. Most of your visitors will be on the second one, so it is worth looking at both before you publish. - Undo and redo: They reach the words and choices on the panels, and not everything else. See Going live below, where what they do not reach is set out. - The publish button: Go live before the first publish, then Publish 3 changes with a count on it, then Up to date and disabled when the draft and the live page agree. - The ⋯ menu: Two items: Open your page, and Take offline on a page that is live. The second asks first. ##### Four questions, then a page A page that has never had a design opens on Four quick questions rather than on a gallery of fourteen, and one question fills the sheet at a time. Fourteen designs side by side is not a choice, it is a wall, and standing in front of one at nine in the evening is the common reason somebody who runs a cleaning company never gets a website at all. Every question can be skipped. The control reads Skip personalisation rather than a bare Skip, and the line under it says what skipping costs: We use what most cleaning companies pick. Skipping all four is a supported answer and not a mistake. It lands you on Sunrise, and the sentence explaining the choice says honestly that you did not tell us, rather than crediting you with an answer you never gave. - What kind of work is most of yours?: Homes, Offices and contracts, End of tenancy, Ovens, carpets, driveways, Windows and rounds, or A bit of everything. Three of those decide the design outright whatever else you answer: end of tenancy is always Deposit, ovens and carpets and driveways are always Reveal, windows and rounds are always Round. Those three trades have a shape, and no answer about your headcount should be allowed to override it. - How do you want people to reach you?: Ring me keeps your number on screen the whole way down. Fill in a form puts the quote form high and lets it do the asking. Either is fine offers both and shouts neither. Whichever you would rather answer on a Sunday evening. - Just you, or a team?: Just me, A small team or Several vans. This changes who the page is about: a person, or a firm. A solo cleaner's advantage over a franchise is that she is a person, and one of the fourteen introduces one before it quotes anything. - How should it feel?: Optional, and asked last: Friendly, Professional, Bold or Quiet. Colours and lettering only. By the time it is asked, the shape of the page is already decided by the three above it. Then a recommendation, We would start you on Sunrise, with the colours and lettering your last answer earned, and two near neighbours beside it. Show all fourteen designs opens the rest; they were always one press away, they are just no longer the first thing you meet. Each one in the rail leads with who it is for and then a sentence saying what the page actually does, because that is the difference between them and a 78-pixel thumbnail cannot show it. The design you are looking at is rendered at full size by the real renderer, not drawn as a picture. It arrives filled with example content: a made-up firm with a complete set of services, photographs and reviews, because a design cannot be judged on a page with one testimonial and no pictures. Switch Example content off and your own words go in instead. > Your answers are kept, so pressing Change design a fortnight later opens on the gallery rather than on question one, and Answer the four questions again is there when you want them. Nothing in the gallery is committed until you press the button that names the design you have highlighted, Use Metro, or Keep this design, and nothing is public even then. The line beside the button says so: Nothing changes for visitors until you press Publish. ##### The fourteen designs, and what each puts second A design is an order. Each of the fourteen decides which section a visitor meets after your headline, how every section is arranged, whether there is a menu at the top and what shape it is, how square the corners are and whether anything moves as you scroll. The quickest way to tell them apart is to ask what comes second, because that is the question the design is answering: what does this customer have to know before they will read anything else. Design | Who it is for | What comes after your headline Sunrise | Homes and regular rounds | Your reviews, before anything is sold. Blueprint | Commercial and contract work | Your credentials, before anything is described. For this buyer they are the product. Megaphone | Van-and-a-team local work | Your services as a numbered list. No menu at all, and your number at poster size. Gallery | Premium and specialist work | Your story as a magazine spread. One photograph and one line to open; the price list comes late. Meadow | Eco and non-toxic cleaning | Your story, before your prices, because this customer is choosing what you stand for. Metro | Multi-area operators | The towns you cover. The only question your visitor is really asking. Concierge | Bookings-first operators | The quote form, on the same ground as your headline. One screen, one action. Nocturne | Out-of-hours commercial work | Your credentials, then the shift on a timeline. Dark throughout. Heritage | Long-established family firms | Your figures and the year you started, then your story. It opens on your initials. Kindred | Solo cleaners and pairs | The team. You meet the person before the price, and the story is set as a signed note. Mosaic | Multi-service operators | Your services. The first screen is one grid: headline, photograph, figures and a review at once. Reveal | Transformation and specialist work | Your method, before any price. It opens on a before and after the visitor drags. Deposit | End of tenancy and move-out | A fixed price by bedroom, then your re-clean guarantee. Round | Rounds and regular visits | The streets you cover, then a published price for every kind of house. Every design carries four palettes and three letterings of its own. Sunrise's colours are Sunlit, Seaside, Peony and Dusk; Megaphone's are Signwriter, High vis, Forge and Electric, and they are not the same four under different names. A palette that turns the whole page dark says · dark beside it, because "Dusk" on its own warns nobody. They live under the Design tab, headed with the design's own name, Sunrise’s colours, and the line beneath says the rest: Each design has its own four. Switch design in the gallery and these switch with it. Switching design resets both to the first, which is right rather than annoying. The palette and the lettering are positions in a list that belongs to one design, so Metro's third is not Megaphone's third; carrying the number across would land you on a colour nobody chose. Over the top of both sits Your colour: one accent, worn by your buttons, your links and your marks. CleanFlo darkens it as far as it has to so the text on it always reads, on every palette. That adjustment is not a matter of taste, it cannot be switched off, and it is precisely why it is safe to hand you ten more controls underneath it. ##### Ten controls, and not one of them a colour Below the colours is a panel headed The page itself, and the sentence above it is the whole idea: Every one of these starts at "as the design does it". Change one and the rest still agree with each other. Each control opens on a tile reading Design’s choice, and every option is drawn rather than listed. Three to seven small pictures of what the option actually does, so choosing is a matter of comparing rather than imagining. Control | What it offers, besides Design’s choice Section backgrounds | All one colour · Every other one · Three colours in turn Section headings | On the left · Centred · Heading left, note right Spacing | Tight · Comfortable · Airy Text size | Smaller · Standard · Larger, larger suits an older customer base Corners | Square · Slightly rounded · Very rounded Buttons | Filled · Outlined · Filled, with a shadow · Underlined Photo look | As taken · Warm · Black and white · Aged · Soft-cropped · Darkened, applied to every photo so a set taken over two years reads as one set Between sections | Nothing · A thin line Menu at the top | A plain bar · A floating pill · Name centred · Just your number · Like a letterhead · Name and one button Movement | None · Subtle · Lively. Off is a real choice. Not one of them sets a colour, and that is deliberate. Every one is shape, rhythm, arrangement or motion, so there is no combination of the ten that produces a page somebody cannot read, which is the only reason it is safe to offer ten at once to somebody who has never chosen a corner radius in their life. Where a design already renders the value you are hovering over, the tile says Already how it looks rather than letting you press it and wonder why nothing happened. Gallery's photographs are already black and white; Megaphone's menu is already just your number. And when you have changed a few and want the design back, one line at the foot of the panel puts them all back at once. ##### Your page, top to bottom The left column has three tabs. Sections is your page in the order a visitor meets it. Design is everything above: the gallery door, the colours, the lettering, the ten. Content is the same material filed by what it is rather than by where it sits, because an owner who wants to add a photograph thinks "photos", not "the seventh band down". Under Sections, headed Your page, top to bottom, is one row for each of the fifteen, in the chosen design's own order. Every row moves up, moves down and shows or hides, and opening one replaces the list with that section's controls and a way back. A row with nothing behind it says Nothing here yet: a fact, not a telling-off, since a sole trader has no business with a team section and half of these are optional for most companies. The row | What it puts on the page | Left off when Headline & hero | Your logo or your name, your headline and tagline, the buttons, and whatever else the design puts up there: a portrait, your initials and the year, a grid of tiles, a before and after. | Never. It cannot be hidden and nothing can be placed above it. What we do | The services you ticked, with descriptions, durations and optional from prices. | Nothing ticked, or the row switched off. By the numbers | Cleans completed in the last twelve months, your average client rating, the year you started, and how many areas and services you list. | Nothing at all to put in it. No start year, no areas and no services either. Below their thresholds the two client figures are simply left out, and the band stays. Your guarantee | Your promise, on a band of its own. Not happy? We re-clean it free within 24 hours. | You left it blank. What clients say | Up to six testimonials, each with who said it. | None added. Our work | Up to twelve photographs you uploaded, with their captions. | No photos. About us | Your own paragraphs, and what you clean with if you filled that in. | You left it blank. Where we work | Your areas, your town, and Not on the list? Ask: we may still be able to help. | You listed no areas. How we work | The credentials you ticked, and your cover figures where you gave them. | You ticked nothing. How it works | Your steps, from the first call to the last check. | No steps added. Questions | The questions you get asked before every clean, with your answers. | None added. The team | First names and faces. | Nobody added. Find us | Your social links. | None filled in. Get in touch | Phone, email, WhatsApp row reading Message us, your hours and Read our Google reviews. | Each row is left out unless you filled it in. Request a quote | The same seven fields as your public quote link, on the page itself. | Switched off here. Switching it off in Settings leaves the band and swaps the form for your phone number and email. See below. Opening a section gives you its Arrangement first: how that band is laid out, named in words rather than in code. Your services can be Cards, a Price list, a Numbered list, a Schedule table, Tiles, biggest first, a Price grid or a Ticked list, no prices. Your photographs have six arrangements; your hero has nine, including Before and after, draggable and Your initials and the year you started. Every one of them opens on Design’s own. Under that, where the arrangement honours them: a Section heading in your own words instead of the design's, A line under the heading, a Background, a Width and a Heading position. Where an arrangement prints no heading at all, the heading box is not drawn, with one line saying which arrangement took it and that another will give it back. A greyed-out field reads as "yours once you find the trick", and there is no trick: the arrangement is the trick. > Three limits, said plainly. There are fifteen kinds of section and no way to add a sixteenth: no Add a section button and no delete, because a page that can be assembled out of anything is a page that can be assembled badly. The hero cannot be moved, cannot be hidden, and nothing can be placed above it. And a section with nothing in it leaves itself off the page entirely rather than appearing as an empty band with white space under it, which is why a half-filled page still reads as finished. ##### Five minutes to live The checklist at the top of the rail is the short version: four things have to be true before a page is worth showing anybody, and the fifth is worth doing if you have it. It disappears once the page is live rather than staying as a permanent scoreboard. Every change saves itself about a second after you stop typing: the bar reads Saving…, then Saved. 1. Open Web Page, and answer the four questions: Your address is already in the bar. If your page has never had a design, the questions open in front of it; answer them or skip them, and you land on a page that already looks finished rather than on a blank canvas. The checklist headed Five minutes to live then tells you which parts are not optional. 2. Write your headline: Under Name & headline. One line, up to 90 characters, saying what you do and where: Reliable domestic cleaning in Truro. It is the first thing a visitor reads. What Google prints above it is built from your name, your tagline and your town instead. See Getting people to it below. The tagline under it is a second line for the detail, Weekly cleans, end-of-tenancy and offices, across Cornwall. 3. Add your phone number: Under Contact & hours. It becomes a tap-to-call button at the top of the page and again in the bar that sits at the bottom of a phone screen. Add an email, your hours, a WhatsApp number and your Google review link here too. A UK 07… WhatsApp number is converted for you, and the screen shows you what it will be saved as. 4. Tick the services to show: They come from your Services catalogue rather than being retyped, so a price you change there is a price the page tells the truth about. Prices are hidden until you switch Show "from" prices on, and when they are shown they read from £85, never as a quote. 5. Say where you work: Your town, then the areas you cover as a list. Press Enter after each one, up to thirty. They read as Where we work on the page, and they are also how Google matches you to somebody searching for a cleaner in one of those towns. 6. Add a photo or two, if you have them: Optional, and the only item on the checklist that is. Read Photos, and whose they are below before you upload anything: this is the one part of the page with a rule that is not about taste. 7. Read the right-hand column, then press Go live: It is the finished page, not an impression of it. Look at it at Phone width as well as Desktop. When it reads the way you would say it out loud, press Go live. The toast tells you the address: Your website is live at cleanflo.io/p/brennan-cleaning. > You do not have to do it in one sitting, and nothing is public until you press Go live. Choose a design tonight, write the headline tomorrow, add a photo on Sunday. The draft is yours until you publish it, and the private preview link is the only way anybody else could see it. It carries a token, it is never cached and it tells search engines not to index it. ##### Photos, and whose they are The Photos panel says this above the upload button, before you have chosen a file, and it is worth reading rather than clicking past: Only upload photos you have the right to publish. Photos of a client’s home or premises need that client’s permission: the photos your cleaners take on cleans are never used here. The second half of that sentence is a promise CleanFlo keeps on your behalf. Clean photos live in a different, private store and there is no route from it to this one, not a filter, not a "use on my website" button, nothing. A client agreed to their kitchen being photographed as proof the work was done; they did not agree to it being on a public web page, and one mistaken query is all it would take if the two were ever joined up. > What you upload here is yours to answer for. A photo of your own van, your team, your equipment or a clean you have express permission to show is fine. A photo of somebody’s living room, taken on a clean, is not. Whichever phone it happens to be on. Up to twelve, a hard cap, each with an optional caption. Three of them can be given a clean: a Logo, a Cover photo: the picture behind or beside your headline, and the image that appears when your link is shared, and a Photo beside your story. ##### The numbers from your own book This is the part no template website can do. Under Proof there are two switches, both on by default, and both read straight from your CleanFlo records at the moment somebody opens the page, not frozen at the moment you published it. - Cleans completed in the last 12 months: A count of your finished cleans over the past year. It is not shown at all until there are at least 20 of them. - Average client rating: The average of the ratings your clients have left through the portal, to one decimal place, with the number of ratings beside it. Not shown until there are at least 5 ratings behind it. The thresholds are the product's, not yours: they apply whether the switches are on or off, and there is no setting that lifts them. A page reading "4 cleans completed" or "5.0 from one rating" is worse than a page with no figures on it, and a number that can be created by asking one friendly client is not evidence. Below the threshold the figure is simply left out, and if both are below it the whole band goes. Under the figures the page prints, in small type, where they came from: Clean counts and ratings come straight from Brennan Cleaning Ltd’s own CleanFlo records. The same panel carries What’s true about you: twenty-seven ticks in six groups, The basics open in front of you, the rest folded away with a count on each until you want them. The basics is what almost every householder scans, Fully insured, DBS-checked staff, Risk assessment on every clean, COSHH-trained, Uniformed team, Staff employed directly, not subcontracted. Accreditations is the one that decides commercial work: CHAS, SafeContractor, SSIP, Constructionline, TrustMark, without one of which you are not on a tender list at all. Then Trade bodies, Standards (ISO 9001, 14001, 45001, Cyber Essentials), Training and licences and Employment and reviews. Ticking Fully insured opens a cover figure, chosen from a list running £1m to £20m rather than typed. Asked as free text most owners write "5 million", and one of the three ways of writing it produces a page that says £5 public liability. > CleanFlo checks none of them and verifies none of them, and the panel says so above the list: Tick only what’s true. These are your claims, printed in your name: we don’t check them and the page never says we have. Tick only what you would be happy to be asked about by somebody standing in your doorway. ##### Testimonials, and the tick that gates them Up to six, under What clients say. You type the quote (up to 400 characters) and who said it (up to 80, Sarah, Truro is plenty), and the Add button stays disabled until you have ticked I have this client’s permission to publish this. > That tick is not a formality and not only a button state: the database refuses to store a testimonial without it, so a row that exists is a row somebody confirmed. A client’s words about you are their personal data, and publishing them is a decision only they can make. It is also why CleanFlo never lifts a testimonial out of your portal ratings or your clean feedback automatically, however tempting the shortcut is. A five-star rating is a private message to you, not a quote for your shop window. There is a longer road to the same place, above the box. What clients already said lists the sentences clients have actually left in your book, which no screen in this product used to show you. You cannot edit the words and you cannot type the name: the quote is the client's own message and the signature is their first name and the town the clean was in. Ask permission arms the row and names the person; Send it emails them, from you. The words go on your page only if that client answers yes. Two presses rather than one, because the thing being confirmed happens to somebody who is not in the room. ##### The quote form, and where it lands The Request a quote section is the same form as your standalone public quote link, on the page itself: name, business name, email, phone, where it is, what needs cleaning, and when would suit. Two of those are required and at least one way to reply is required, exactly as covered in Enquiries and the public quote form. It carries the same hidden field a bot fills in and a person never sees, and the same rate limit. What arrives lands in your Enquiries inbox at status New, badged in the sidebar like any other, and its Came from column reads Your website. A request through the plain link you paste into a message or embed on another site reads Quote form instead. That is the whole difference between them, and it is there so you can tell what your page is actually doing for you. > The Let anyone request a quote from your public link switch on Settings → Company governs both. Switch it off and the form disappears from your website too, on the next request rather than at your next publish, and the page offers your phone number and email instead: To ask for a quote, call 01872 555 0100 or email hello@brennancleaning.co.uk. A form that quietly threw submissions away would be far worse than no form. ##### Going live, publishing changes, taking it offline What visitors see is a snapshot, taken the moment you press the button. Everything you type between one publish and the next sits in the draft, visible to you in the right-hand column and to nobody else. That is deliberate: owners edit this at nine in the evening on a phone, and a half-typed headline should never be the thing a prospect reads. - Go live: The first publish. Available once the checklist's four required items are done, until then it is disabled, and hovering it says why: Finish the checklist first. Afterwards the bar carries the word Live. - Publish 3 changes: Every publish after that, with a count on it rather than a vague label, so you can see there is a gap between the draft and the live page and how big it is. What’s changed since it went live lists them before you commit, in the words the controls themselves use. - Up to date: The same button, disabled, when the published page and the draft say the same thing. Nothing to do. - Take offline: In the ⋯ menu, and it asks first: Take your website offline? Visitors will see a not-found page until you publish again. Nothing you’ve written is deleted. Everything you wrote stays exactly where it was; press Go live again and it comes back. Undo and redo reach the words and the choices on the panels: your headline, your areas, your colour, your design, the ten controls. They do not reach everything, and the bar says so rather than letting you find out: Undo steps back through the words and choices on these panels. Sections, photographs, reviews, questions and people save as you change them. Moving a section, hiding one, adding a photograph, a testimonial, a question, a step or a team member each write straight to their own record the moment you press. Press undo after one of those and it refuses that press, with a line saying so, rather than quietly rolling back the last sentence you typed instead. Under the publish button, shut by default, is Restore a previous version: the last five times you published, by date, with the one visitors are seeing right now marked. Picking one puts that version's words and choices back on the panels: your photographs, reviews, questions, people and prices stay exactly where they are, and it says all of that in the confirmation before it does anything. It does not touch your live page. Nothing changes for visitors until you press Publish, which is worth saying twice about a control people reach for while frightened. > A page that is offline, an address that never existed and a company that has switched the whole feature off all produce the same not-found page, word for word. Nobody can use your address bar to work out which of the three is true, which is the same rule the public quote form follows, and the reason it holds is that guessing addresses must never become a way to find out who is on CleanFlo. ##### Getting people to it A page nobody links to is a page nobody visits. Google will find it on its own eventually: it is a real indexable page, listed in its own sitemap, but the links you place yourself are worth more, and they are ten minutes' work. - Your Google Business Profile: The single highest-value place. Paste the address into the Website field of your profile. That is the link most local searchers actually click, and until now most cleaning companies have had nothing to put in it. - Facebook: The Website field on your page, and the button at the top of it. Post the link once as well: it unfurls with your headline, your tagline and your cover photo rather than as a bare address. - The van, the flyer, the business card: Press the QR icon in the bar. It shows a QR code for your address with Download SVG under it: an SVG scales to any size without going fuzzy, which is what a signwriter or a printer will ask you for. Somebody stuck behind your van at a junction can scan it and be reading your page before the lights change. - Everywhere you already write your phone number: Your email signature, your quotes and invoices, the note you leave on a doormat. The copy icon beside the address puts it on your clipboard. > One honest word about Google. Your page can turn up in ordinary search results. It can never appear in the map at the top of them: the three businesses with pins, which is what most people tap first. Only a Google Business Profile goes there, and nothing on this screen is a substitute for having one. There is also no box here for a Google title or description: they are worked out from your name, your tagline, your town and your about text, so the way to change them is to change those. Anybody selling you "SEO built in" is selling you a sentence. ##### The "Made with CleanFlo" line At the foot of the page, under your own name and town, sits one quiet line: Made with CleanFlo, linking back to cleanflo.io. It is set small, in CleanFlo's own teal rather than your colour, and it is the only thing on the whole page that is about CleanFlo rather than about you. It follows the switch you already have: Show "Powered by CleanFlo" to clients on Settings → Company. Switch that off and the line goes from your website as well as from your portal footer and your client emails. The wording on the page also changes with it, with branding off, the note under your figures reads "from the company’s own clean records" rather than naming CleanFlo. ##### If you do not want a website at all It is a feature module, like Messaging or Enquiries, and it has its own switch on Modules, under Account in the sidebar: Your website. Switch it off and Web Page disappears from the sidebar and the page stops opening for anyone, with the same not-found a stranger gets for an address that was never issued. > Nothing is deleted. Your design, your headline, your photos, your testimonials and your last published snapshot all stay exactly where they are, so switching the module back on gives you the page you had rather than a blank one. It arrives switched on, which costs nobody anything: no page is public until its owner presses Go live. **FAQs** Q: Can I use my own domain? A: Not yet. Your page lives at cleanflo.io/p/your-name, and a domain you own cannot be pointed at it today. If you already have a domain, link to the page from wherever it points, or put the address on your Google Business Profile and your Facebook page, which is where most people will click it from anyway. Custom domains mean DNS and a certificate per customer, and that is a bigger piece of plumbing than it looks from the outside. Q: Can I see a finished one before I build mine? A: Yes, cleanflo.io/p/coastalcleaningdemo. It is a made-up company, said so at the top of the page, with invented reviews and a form that does not send, and it is deliberately kept out of Google. The bar across the top switches the design, the colours and the lettering. Change the design and the page rearranges rather than recolours, which is the only way to see for yourself that the fourteen are fourteen shapes and not fourteen skins. Q: Can I add a section that is not on the list? A: No. There are fifteen kinds of section and the set is closed: you can reorder them, hide them, change how each is arranged and give each one your own heading, but there is no add and no delete. It is the limit that keeps every page built here from being assembled badly, and it is why a design that puts your reviews second can be relied on to keep doing it. If a section has nothing in it, it leaves itself off the page rather than showing an empty band. Q: Where do the numbers on my page come from? A: Your own records, read at the moment somebody opens the page. The clean count is your finished cleans over the last twelve months, and the rating is the average of what your clients left through the portal, with the number of ratings beside it. Nothing is invented, nothing is rounded in your favour, and neither is shown until there is enough behind it: 20 completed cleans for the count, 5 ratings for the rating. Below that, the figure is left off the page entirely. URL: https://cleanflo.io/help/your-website/ --- #### Enquiries and the public quote form A public, no-login page where a stranger can ask for a quote, and the inbox those requests land in. This is the step before a quote exists. Before an enquiry can become a quote, somebody who is not a client yet has to ask for one. CleanFlo gives you a public link for that, no login, no PIN, nothing about your business on it but your name, and an inbox on your side that turns a stranger's message into a real lead, then a real draft quote, without ever quietly turning them into a client. Before this existed, that first ask arrived however it arrived, a phone call, an email, someone stopping a cleaner in a car park, and turning it into a quote meant opening a blank drawer and typing everything out from scratch. An enquiry is the first lead object in the product: somewhere for that ask to land as a record, before it is a client, before it is a quote, and usually before it is anything you have priced. It is deliberately not a client. Most enquiries never become one, and creating a client row for every stranger who fills in a web form would poison the client list, the portal and every report that counts clients. An enquiry stays an enquiry, in its own inbox, until you decide what it is. ##### The Enquiries screen Enquiries sits in the Money group of the sidebar, directly above Quotes, the step before a quote exists gets the slot before it too. The item carries a count badge of its own, covered below. The page is titled Enquiries with the subtitle Leads from your public quote form, before they are clients, and the header carries Copy Public Link, Embed on your website and, once Your website is switched on, a Your website button that opens the builder. (The Enquiries screen. Three figures across the top, then the same search-filter-table shape every ledger in CleanFlo uses. Rows are clickable and open the enquiry.) - New: A count of enquiries sitting untouched at their starting status. This is the same number the sidebar badge shows. - Open: A count of New, Contacted and Quoted together, anything that is still a live lead rather than a finished one. - Won: A count of enquiries you have marked Won. Nothing here totals a value, because an enquiry never carries a price to total. The ledger carries five columns: Who, What they want, Came from, Received and Status. Who shows the business name if one was given, the person's name if not, with their email or phone underneath. The search box above it matches the name, business name, email, phone, message and location in one go, and the status tabs, All, New, Contacted, Quoted, Won, Lost, are Title Case to match Quotes' own tabs, deliberately. Three values appear under Came from today. Quote form is the standalone link described below, wherever you have put it. Your website is the same form on your own public page at cleanflo.io/p/brennan-cleaning, which carries it too, covered in Your website. Client referral (followed by via {client name}) is that same form reached through a client's own referral link (see Referrals in The client portal). The vocabulary holds two more, Added by you and Raised on site, reserved rather than decorative, for whenever a second way to log a lead by hand arrives. Quote form read Website until your own page existed, which was fair enough while the link was the only public form there was. It is not any more, and two rows both reading "Website" would name the same place twice. So the link is named after the link, and "Your website" is left to mean the page CleanFlo renders for you. ##### The form a stranger fills in The link opens a plain page at a URL shaped like app.cleanflo.io/brennan-cleaning/quote, the same company slug your client portal links already use, so it sits right next to a client's own app.cleanflo.io/brennan-cleaning/riverside-homes. There is no login and no PIN, on purpose: whoever is on the other end has never had an account with you and may never have one. The page renders your company's display name and nothing else about it, no address, no other clients, no prices. (The public form as a prospect sees it. No login, no PIN, no service picker and no price anywhere on it: it is an ask in plain language, not a quote request with line items.) - Your name and What do you need cleaned?: The only two required fields. Everything else can be left blank. - Email and Phone: Neither is required on its own, but at least one of them is, an enquiry with no way to reply is refused with Please leave an email address or a phone number so they can reply. - Where is it? and When would suit you?: Both optional free text, not a location picker and not a calendar. A prospect types "the flat above the bakery on Market Street" or "weekday mornings before nine" and that is exactly what lands in your inbox. - What do you need cleaned?: Free text, no service picker and no price. This form asks what somebody wants, not what it costs, pricing it is still your clean, the same as any quote you build by hand. A blank name gets Please tell us your name., a blank message gets Please tell us what you need cleaned., and a badly formed email or phone number is rejected before it can be saved as the only way to reach somebody. None of that is visible on the page itself, which also carries a hidden field a person never sees: a real visitor never fills it in, but a form-filling bot fills in every input it finds. A submission with that field set gets exactly the same Thank you screen a genuine one does, and writes nothing to your inbox. > The form is also rate-limited to a handful of submissions a minute from the same visitor, and a submission gets the identical 200 OK whether your slug is real, taking enquiries, or does not exist at all. A bad link and a link to a company that has switched the form off show the visitor the same page, too: This link isn’t right, or it isn’t taking enquiries at the moment. Neither the load nor the submit ever tells anyone which is true, see the FAQ. > CleanFlo will never hand a client the portal slug "quote": it is reserved, because that is exactly the address segment this page lives on. A client called Quote Ltd gets a different slug automatically rather than a collision. ##### Getting your link, and switching it off Copy Public Link, in the Enquiries header, is the only place the link is generated. The first time anybody presses it, CleanFlo builds your company's slug if one does not already exist yet, the same slug a client portal link would use, and copies the finished address straight to your clipboard. The button briefly reads Copied before going back. A Let anyone request a quote from your public link toggle sits on the Company tab of Settings, on by default. Switch it off and the link stops opening for anyone, useful for a company that is fully booked and does not want to advertise a way to ask. With it off, the Enquiries screen shows a standing notice: Your public quote form is switched off, so the link above will not open for anyone. Turn it back on in Settings → Company. > Turning the form off does not delete the address or break anything already sent. It only changes what the page does when somebody opens it, and the change is instant in both directions. ##### The five statuses (The enquiry status vocabulary, in the order a lead moves through it. Unlike a quote, an enquiry can jump straight from New to Won or Lost without ever passing through Quoted.) - New: Where every enquiry starts. The only status a submission from the public form can ever be written with. - Contacted: You pressed Mark contacted, a record that somebody has heard back from you, nothing more. Only offered while an enquiry is still New. - Quoted: Set automatically, and only automatically, the moment Convert to Quote genuinely saves a draft. There is no way to mark an enquiry Quoted by hand. - Won: You pressed Mark won. No reason asked, and it can be pressed from any status, an enquiry does not need to have been quoted first. - Lost: You pressed Mark lost, which always asks why. Also available from any status, for the same reason: plenty of leads die before they are ever priced. > The sidebar badge only counts enquiries still sitting at New, and it only clears one at a time, as each one is moved on to Contacted, Quoted, Won or Lost, not the moment you open the Enquiries screen. That is the opposite of the badge on Quotes, which clears as soon as the Quotes screen is opened. A lead you have read and left alone still reads as outstanding here. ##### Opening an enquiry Clicking a row opens a detail sheet titled with the enquiry's name, subtitled with their business name, and carrying the status pill in the header. Underneath sits everything they typed: when it was received, where it came from, their email and phone as live mailto: and tel: links, where the clean is and when would suit if they said, and the full message under What they asked for. (The enquiry detail sheet. The four action buttons change with the status: Mark contacted disappears once it has been pressed, and Convert to Quote disappears once a quote already exists for this enquiry.) Pressing Mark lost does not resolve the enquiry on the spot. It opens an inline reason picker, the same four reasons a declined quote uses, Price too high, Chose another company, No longer needed and Bad timing, followed by one reason that only enquiries get, Not a genuine enquiry, and finally Other with a free-text box, and a Mark lost button to confirm it. Not a genuine enquiry exists for exactly the spam that talks its way past the honeypot: a real person typing nonsense into a real form, rather than a bot filling in a field it should never have touched. > Won and Lost are the enquiry’s own outcome, not the quote’s. They are deliberately not kept in sync: an enquiry can be marked Lost without ever having been quoted at all, and a quote it produced can be declined while you still mark the enquiry itself Won on a revised price agreed by phone. If a quote exists, its own current status is shown here too (as Quote: QUO-2026-0XX) draft and so on, so you can see both, but pressing a button on one never rewrites the other. ##### Convert to Quote Convert to Quote has no dialog. It builds a real draft quote, a one-off recipient, the same shape the quote drawer's own New Recipient option writes, not a client, and takes you straight to the normal Quotes screen with it sitting there like any other draft you had built by hand. Converting never creates a client record: most enquiries never become one, and this is not the moment that decides it either way. Carried onto the quote | Left on the enquiry The business name if given, else the contact name, as the recipient | The quote number: its own QUO series, allocated fresh The email address, as the recipient email | The phone number, a one-off quote recipient has nowhere to put one The first line of what they asked for, as a single line item priced at £0.00 | Where the clean is, and when would suit: neither has a field on a quote The full message, word for word, into Scope of Work | The enquiry itself, still visible in the inbox at Quoted Everything else about the new draft is exactly as if you had built it yourself: Issue Date is today, Valid Until is thirty days out, the VAT rate on the line follows whether your company is VAT registered, and follow-up reminders are on by default. There are no prices filled in anywhere on it, an enquiry never carries a price, so a quote born from one is priced the same way every other quote is, by you. > The write happens in one order for a reason: the quote is created first, and only once it has genuinely saved does the enquiry's own status flip to Quoted. If quote creation fails partway through, the enquiry is untouched and still sits exactly where it was: it never silently looks handled when it was not. On the rarer failure where the quote itself saved but the enquiry could not be updated to match, you are told so directly, by name and number, rather than shown a false success: the quote is real, it just was not the enquiry that says so. Once an enquiry has a linked quote, Convert to Quote disappears from its detail sheet. Unlike converting an accepted quote to an invoice, which you can press more than once, an enquiry cannot be converted twice. **FAQs** Q: Can someone spam my public form? A: It is rate-limited and carries a honeypot a bot fills in but a person never sees, so an automated submission is silently discarded rather than rejected with an error. It also never tells the sender whether your company slug was even valid, a submission gets an identical response whether the slug names a real company, one that has switched the form off, or nothing at all, so it cannot be used to check which companies exist on CleanFlo either. Q: Does converting an enquiry to a quote create a client record? A: No. The quote is built as a one-off recipient, the same way the quote drawer's own New Recipient option works, and nothing about converting touches your client list. If the lead becomes a real client later, you add them the normal way. Q: Can I mark an enquiry Lost before I have quoted it? A: Yes, from any status. Plenty of leads die before they are ever priced, the clean was cancelled, they went with somebody else, or it was never a genuine enquiry, and Won and Lost do not require a quote to exist first. Q: Why is there nowhere to put a price on the enquiry itself? A: Because it is not a quote. The public form asks what somebody wants in their own words, not for a service and a quantity, so nothing about an enquiry is ever priced. Convert it and you price the resulting quote the same way you would build one from scratch. Q: Does opening the Enquiries screen clear the sidebar badge? A: No. The badge counts enquiries still at New and only drops as each one is individually moved on to Contacted, Quoted, Won or Lost. That is different from the badge on Quotes, which clears the moment the Quotes screen is opened. URL: https://cleanflo.io/help/enquiries/ --- #### Quoting for work A quote is priced work you have offered and not yet won. This covers building one, the five states it passes through, and the one conversion CleanFlo offers when it is accepted. A quote is work you have priced and offered but not yet won. CleanFlo keeps them on their own screen, on their own numbering, with their own statuses, until one of them turns into an invoice or runs out of time. Quotes and invoices share a lot of machinery in CleanFlo: the same line editor, the same VAT handling, the same catalogue picker, the same printed-paper look. What they do not share is a life cycle. An invoice is a demand for money and ends up paid. A quote is an offer and ends up accepted, declined or out of date. ##### The Quotes screen Quotes sits in the Business group of the sidebar, one above Invoicing. The page is titled Quotes with the subtitle Create and send quotes to clients, and there is a single button in the header: Create Quote. (The Quotes screen. Four figures across the top, then the ledger with its search, client filter and the six status filters. Rows are clickable and open the quote.) - Drafts: A count of quotes you have written and not yet sent. - Awaiting Response: A count of quotes that have gone out and not yet come back either way. - Accepted Value: A money total of every accepted quote. Work you have won and, usually, work you have not yet invoiced. - Total Quoted: A money total of every quote on the screen, whatever its status. Useful for a conversion rate, not for a forecast. The ledger below carries six columns: Quote, Recipient, Amount, Dates, Status and Actions. Dates is two stacked lines, Issued: over Valid until:, and the second turns amber and bold once the quote has expired. Actions holds View for every row and Edit only on drafts. Clicking anywhere else in the row opens the quote too. Above the table, three controls narrow the list: a search that matches the recipient name or the quote number, a client dropdown whose first option is All Clients, and the status filters All, Draft, Sent, Accepted, Declined and Expired. Ten rows to a page, and an Export CSV beside the pager that writes quotes.csv from the whole filtered set. ##### The five statuses (The quote status vocabulary. Every quote is in exactly one of these, and only two of the moves between them are yours to make by hand.) - Draft: Where every quote starts. Saving the drawer always writes a draft, whether you are creating or editing, so there is no way to create a quote that is already sent. Drafts are the only quotes that can be edited or deleted. - Sent: Written the moment the email provider accepts the message. If the client has no email address on file the send is skipped, the status still moves to Sent, and you are told so. - Accepted: You pressed Accept on a sent quote. There is no client-facing accept link and no signature block: acceptance happens in a phone call or an email and you record it here. - Declined: You pressed Decline on a sent quote. No reason field, no confirmation. The quote stays on the list so your conversion rate stays honest. - Expired: Set automatically. Once per visit to the screen, every quote still sitting at Sent whose Valid Until date is in the past is moved to Expired in one go. There is no warning beforehand and no "expires in three days" copy anywhere. > An expired quote cannot be accepted or declined. Those two buttons only appear while the status is Sent, so if a client comes back a week after the valid-until date you will need to build the quote again. Setting a longer Valid Until at the start is cheaper than rewriting it later. ##### Building a quote Create Quote opens a wide drawer titled New quote, subtitled Create a quote for a client. It reads top to bottom in the order a quote is written. (The top of the New quote drawer. Quote For chooses between a client on your books and a one-off recipient; Valid Until defaults to thirty days out.) - Quote For: A two-button toggle: Existing Client or New Recipient. The second is for somebody who is not on your books yet, and asks for a Name and an Email instead of a client. - Issue Date and Valid Until: Two date fields. Issue Date defaults to today and Valid Until to thirty days from today. Valid Until is the date the automatic expiry works from, so it is a real deadline rather than decoration. - Introduction: Optional. A short covering paragraph. On the printed quote it appears as a tinted box at the top with no heading above it, which is why it should read like the first line of a letter. - Scope of Work: Optional, and the field worth spending time in. It prints under its own Scope of Work heading and is the part of a quote that stops an argument six months later about whether the windows were included. - Line Items: The priced work. Every line has a description, a quantity, a unit price and, if you are VAT registered, its own VAT percentage. - Notes and Terms & Conditions: Both optional, both free text, both printed at the foot. There is no boilerplate: whatever you type is all the client sees. Terms is where payment terms, cancellation and insurance usually go. The line editor has a header row reading Description, Qty, Unit Price, VAT % and Total, plus an unlabelled column for the delete buttons. The VAT % column only appears when your company is marked as VAT registered, and when it does the section label carries the badge VAT registered · rates per item. (The line editor inside the quote drawer, with the running totals underneath. Add custom item gives you a blank row; Add from catalogue opens the picker.) Add from catalogue opens a small dialog headed Add Item with three tabs: Services, Add-ons and Products. Picking a service or add-on writes its name as the description and its base price as the unit price. Picking from Products takes the figure from your stock cost, which is why that tab carries the warning Product prices come from your stock cost, set the price you charge on the line. Lines taken from the catalogue carry a small lowercase tag in the description cell reading service or product, and that tag prints on the quote as well. Lines you typed yourself carry nothing. The footer has two buttons, Cancel and Create Quote. There is deliberately no separate "save draft": both would have written the same thing. Four things are checked before it saves, and the drawer jumps to the first one that fails: Please select a client., Please enter a recipient name., Please enter a recipient email. and Add at least one line item with a description. ##### Reusing a set of line items as a template Once you have added at least one item from the catalogue, a service, an add-on or a product picked through Add from catalogue, not a line you typed by hand, a Save as template link appears under the line editor. Clicking it opens an inline name field and a Save button, right there in the drawer. A template does not remember a price. It remembers which catalogue item was used and how many of it, nothing else. Catalogue prices move, and a template built in January should not still be charging January’s rates in June. > Loading a template always re-reads today’s catalogue price for every line. Put a service’s price up and every template built from it charges the new figure from that point on, with nothing to update on the template itself. A new quote’s drawer shows a Load template row above the line editor whenever you have at least one saved, the same quick-start row Clean templates already uses on the Schedule screen. Clicking a template’s chip replaces whatever is in the line editor with that template’s items, freshly priced. Templates themselves live behind a Templates button in the Quotes page’s own toolbar, next to Create Quote, carrying a small count badge once you have any saved. It opens a list of every template with a delete button on each row and a confirm-before-delete dialog. There is no rename and no edit-in-place: changing a template means deleting it and saving a new one. ##### The document your client receives Opening a quote replaces the whole screen with the quote itself: a breadcrumb back to Quotes, a row of actions, and then the paper. It is drawn in the accent colour and font you chose for your invoices, with your logo if you have uploaded one, so a quote and the invoice that follows it look like they came from the same company. (A quote as the client sees it. Note Quote For rather than Bill To, Quote Total rather than Total Due, the QUO number series, and no bank details anywhere: a quote is not asking for money yet.) Four details on that sheet are worth naming, because they are the ones people expect to match the invoice and do not. - The client block is labelled Quote For, not Bill To. You are not billing anybody yet. - The grand total row reads Quote Total, not Total Due. Nothing is due. - The number series is its own: QUO-2026-001, running separately from the INV series, so quote three and invoice three are unrelated documents. - There are no bank details. The BACS block belongs to the invoice; a quote deliberately does not carry one. The dates block on the right shows Issue Date, Valid Until and the status pill, so a printed quote says on its face whether it is still live. Behind the sheet on screen sits an offset pink carbon copy, the way an NCR duplicate book looks: it is there to say that this is a document with a counterfoil, and it is hidden when you print so only the top sheet is issued. > Print / PDF in the action bar calls your browser's own print dialog, and every browser can save that as a PDF. There is no server-side PDF and no download button, so "send me a copy" is a print to file and an attachment. ##### Sending it A draft quote gives you three buttons above the paper: Edit, Send quote and, in red, Delete. There is no send dialog. Pressing Send quote emails the quote there and then, with no subject line to write, no covering message to compose and nobody to pick as the recipient. Whatever you wanted to say should already be in the Introduction field. (The action bar changes with the status. Draft on the left, sent in the middle, accepted on the right. Print / PDF is on all three.) The email goes first and the status changes second, on purpose: a quote only reads Sent once it really has been. If your email provider refuses the message you are told The email to Marcus Hale was not accepted. The quote is still a draft. and nothing has moved. If there is no address on file at all the send is skipped and the toast reads Quote marked as sent (no email address on file), which is the honest way to record a quote you posted or handed over. > Once a quote is sent, Send quote disappears and editing is closed off. If you need to change a sent quote, build a new one: the client already has the old numbers. CleanFlo does still follow it up automatically from here (see below), but there is no way to trigger a one-off reminder by hand. ##### Chasing an unanswered quote A quote sitting at Sent with nobody replying is chased for you. CleanFlo sends two automatic follow-up emails, one three days after it was sent, one seven, reusing the same quote email with the cover message replaced by Following up on the quote below: it’s still open for you to accept. Nothing else about the quote changes. A Send follow-up reminders toggle in the quote drawer is on by default and can be switched off per quote, useful for a client you are chasing by phone instead, where a second email would be redundant. - A reminder never repeats: Each of the two stages fires at most once for a given quote. - Reminders stop the moment the quote does: Accepted, declined or expired, and no further follow-up sends: there is nothing left to chase once the quote has an answer or has run out of time. > There is no screen showing when the next reminder will fire, and no button to send one early. If a client needs chasing sooner than day three, that is still a phone call or a manual email, the same as before this existed. ##### When the client says yes Every quote email carries a real View and Accept Quote button, linking to a public page the client can open with no login and no PIN: it works even for a prospect who has never had a client-portal account. The page shows the quote itself, its line items and total, and two buttons: Accept Quote and Decline. Declining, from either side, is not quite one click. Pressing Decline reveals an inline reason picker, a preset list (Price too high, Chose another company, No longer needed, Bad timing, Other, with a free-text box when Other is picked) and a Confirm Decline button beneath it. The reason is optional but asked for every time, on the client’s page and on your own. You can still resolve a quote yourself from its own screen exactly as before, with the same Accept and Decline buttons above the paper, useful for a client who says yes on the phone. Both paths write to the same status, so a quote a client accepted through their link and one you marked accepted by hand look identical afterwards. > The first response wins. A client who opens the link after you have already marked the quote accepted by hand (or a second click on a link already used) sees a plain You’ve already responded to this quote page rather than a chance to change the answer. A quote accepted through the client’s own link, rather than by you, is surfaced two ways so it cannot be missed: a small badge on the sidebar’s Quotes item, counting quotes accepted but not yet seen, which clears the moment you open the Quotes screen; and a banner on the Dashboard. An accepted quote then offers exactly one thing: Convert to Invoice. > There is no convert to clean. CleanFlo cannot turn a quote into scheduled work, and nothing on this screen will ask you for a date, a time, a cleaner or a duration. Accepting a quote wins you the work; putting it on the calendar is a separate clean you book yourself on the Schedule. Convert to Invoice has no dialog, no confirmation and no message. It takes you straight to Invoicing with the new-invoice drawer already open and partly filled in. What arrives with it is narrower than most people expect. Carried across to the invoice | Left behind on the quote The client, pre-selected in Bill To | The quote number: the invoice gets its own INV number Each line's description | The issue date and the valid-until date Each line's unit price | The introduction and the scope of work Each line's quantity | The notes and the terms and conditions Each line's VAT rate | The service or product tag on each line Everything else on the invoice is fresh: the issue date is today, the due date is today plus your default payment terms, and the notes field is empty. If the quote went to a one-off recipient rather than a client on your books, the drawer opens with no client selected and you choose one, or switch to New Recipient and type the details again. The quote itself does not change. It stays Accepted, the Convert to Invoice button stays where it is, and nothing links the invoice back to the quote it came from. That means converting twice makes two invoices, so it is worth checking the ledger before pressing it a second time. > A quote is not a VAT invoice and cannot be used as one. If you are VAT registered, the document that has to carry your VAT number, the tax point and the VAT breakdown is the invoice you raise afterwards. Quoting VAT-inclusive prices to a domestic client and VAT-exclusive prices to a commercial one is normal practice, but whichever you choose, say so in the terms so nobody is surprised by the invoice. **FAQs** Q: Can my client accept a quote themselves, from a link? A: Yes. Every quote email includes a View and Accept Quote button linking to a public page, no login, no PIN, where they can accept or decline directly. This is separate from the client portal, which still shows cleans and invoices rather than quotes; the quote link works even for someone who has never had a portal account at all. Q: A quote expired but the client still wants the work. What now? A: Build a new quote. An expired quote cannot be accepted, because the Accept and Decline buttons only appear while it is still Sent. Opening the old one and reading off the lines takes a minute, and it also gives you the chance to reprice work you costed a month ago. Q: Does converting a quote to an invoice mark it as invoiced? A: No. The quote stays Accepted and carries no record of the conversion, and the invoice carries no record of the quote. If you need that trail, put the quote number in the invoice notes when you raise it. Q: Can I delete a quote once it has gone out? A: No. Delete only appears on drafts, and only from the quote itself rather than from a row in the list. A sent, accepted, declined or expired quote stays on the ledger permanently, which is what keeps the Total Quoted figure meaningful. Q: Why does my quote have no bank details on it? A: Because it is a quote. The BACS block is part of the invoice document only. Your bank details, sort code and account number live under Invoicing and print on invoices, where somebody actually needs to pay you. Q: If I put my prices up, do my saved quote templates still charge the old price? A: No. A template only remembers which catalogue item and how many, never a price, so loading it always charges whatever that item costs today. URL: https://cleanflo.io/help/quotes/ --- #### Surveying a site before you quote Walk a building room by room on the phone, then turn what you logged into a priced quote in one click. Site Surveys is the office half of that: what has been walked, and what is ready to quote. Quoting a building you have not seen is guessing, and quoting one you have seen is remembering. A site survey is the third option: walk it once, log every room as you stand in it, and let CleanFlo price the walk rather than the memory of it. Site Surveys is the third item under Pipeline in the sidebar, between Enquiries and Quotes, which is exactly where it sits in the work: something has come in, you have gone to look at it, and now it needs a price. It is a screen of two halves that live on different devices, and knowing which half you are on saves a lot of hunting. > Rooms are never typed in at the desk. There is no Add room button on this screen and there is not meant to be. A survey is started here or on the phone, the rooms and photos are captured by walking the site in the cleaner app, and the office turns the finished walk into a quote. The desk opens and closes it; the walk fills it. ##### The register The page header reads Site Surveys, subtitled "What's been walked, and what's ready to turn into a quote", with one action: New survey. Under it is the same register every other ledger in CleanFlo uses, headed Surveys with a count, a search box, a Filters pill and four status chips. (Site Surveys. Four columns and no more: who it is for, where it has got to, how many rooms were logged, and when the walk started.) - Subject: Who the survey is for: the client's name if it is linked to a client record, otherwise the prospect name you typed. Never both and never blank, because the database will not accept a survey with neither. The address sits underneath, or "No address on file". - Status: One of three. Draft is walked or being walked and not yet priced. Converted became a quote. Discarded came to nothing and was put away. - Rooms: How many rooms the walk logged. A draft showing 0 has been started and not yet walked. - Started: When the survey was opened, to the minute. It is the only date a survey has. The Filters panel adds four things the chips cannot: when it was started (a preset or a custom range), which client it belongs to, a sort (Newest first, Oldest first, Most rooms, Subject, A–Z), and an Only show group with four boxes: Turned into a quote, No quote raised, Has rooms logged and Not linked to a client. That last pair is the useful one. Tick No quote raised and Has rooms logged together and you have every building somebody walked and nobody ever priced. ##### Starting a survey New survey opens a sheet titled New site survey, subtitled "Who it's for. Rooms are added by walking the site in the cleaner app", which says the whole thing in a line. It asks one question and then a few details. 1. Say who it is for: Two routes, drawn as a pair of tabs. An existing client, picked from your client list, which ties the survey and everything it becomes to that record. Or a prospect, which is a name and an address typed in, for somebody who is not a client yet and may never be. 2. Add the address: For a prospect this is a free-text field. It is what the register shows under the subject and what the person walking the building will be looking for on their phone. 3. Leave a note if there is one: The field is placeholdered "Anything worth knowing before the visit". Access, a contact on site, the thing the caller mentioned. It is shown to whoever opens the survey next. 4. Press Start survey: The survey is created as a Draft with no rooms, and its detail sheet opens straight away. It is now available to walk on the phone. > A survey can also be started from the phone, standing outside the building, with no help from the office at all. Starting one here is for the case where the visit is booked in advance and you want the note about access to be on it before anybody arrives. ##### The walk itself This happens in the cleaner app, on the phone of whoever is standing in the building. It is a room at a time, and each room is three answers. - What kind of room: Seven types, in this order: Bedroom, Bathroom, Kitchen, Living / dining, Office, Communal area, Other. The type is not decoration: it decides how long CleanFlo assumes that room takes per square metre, and a bathroom is assumed to take roughly three times as long per square metre as an office. - How big it is: Either an exact figure in square metres, or a tier: Small, Medium or Large. A cleaner walking a building rarely has a tape measure, so a tier is a legitimate answer rather than a fallback. Where an exact measurement is given it always wins over the tier. - Anything worth saying, and a photograph: Free-text notes per room, and as many photographs as the room needs. Both come back to the office attached to that room, which is what makes a survey worth more than a number written on a hand. > The walkthrough runs in the cleaner app, which means it runs in all 27 languages and it runs with no signal. A basement plant room with no bars is exactly where a survey gets done, and the rooms queue on the phone and arrive when the phone next sees a network. Nothing about a walk depends on connectivity. ##### Reading a finished survey Any row opens a sheet titled with the subject and subtitled with the address, or "No address on file". Its first line is the reading: when it was started, and the note that was left on it. Under that is every room in the order it was walked, each with its type, its size, its notes and its photographs. A size reads one of three ways. An exact measurement prints as, for example, 18 m². A tier prints as Medium (approx.), with the word "approx." there deliberately, so nobody reads an assumption as a measurement. A room with neither reads No size recorded, and that room is the reason a conversion can fail. (A survey open at the desk. Rooms in the order they were walked, each with what it is, how big it is and what was said about it. There is no way to add one from here.) ##### Turning it into a quote Convert to quote sits at the foot of the sheet and is the point of the whole exercise. It is available only while the survey is a Draft and only once at least one room has been logged: a survey with no rooms has nothing to price, so the button is there but disabled. Pressing it builds a draft quote from the walk and takes you straight to it. The survey becomes Converted and keeps a link to the quote, so opening it again offers View quote instead. > The estimate is priced from your own services catalogue, not from an industry figure. CleanFlo works out what a minute of your time is worth from the prices and durations you have already set on your own services, and applies it to the walk. A company with no service carrying both a price and a duration has nothing to derive a rate from and falls back to a general figure, so the estimate is only as good as the catalogue behind it. Price your services properly and every survey after that is priced properly too. The quote it produces is a draft like any other. Nothing has been sent, nothing has been promised, and every line on it can be edited, added to or thrown away before it goes near a client. Treat it as a very well-informed starting point rather than an answer. If a survey comes to nothing, Discard puts it away. It asks first ("Discard the survey for St Marks Medical Centre? This cannot be undone.") and the survey becomes Discarded rather than being deleted: the walk, the rooms and the photographs all stay on file, out of the way of the drafts that are still live. **FAQs** Q: Why is there no Add room button? A: Because a room is something you stand in. Rooms and photographs are captured by walking the site in the cleaner app, and the office screen starts a survey and turns the finished walk into a quote. Typing rooms in at a desk would be recording a guess with the authority of a measurement. Q: Do I have to measure every room? A: No. Small, Medium or Large is a proper answer and the estimate uses a documented default area for each. An exact figure in square metres wins where you have one, so measure the rooms that matter and tier the rest. Q: Convert to quote is greyed out. A: Either the survey has no rooms logged yet, or it is not a draft any more. A survey with nothing walked has nothing to price, and one already converted or discarded is finished. Q: Can I survey somebody who is not a client yet? A: Yes, that is what the prospect route is for: a name and an address, with no client record created. If it turns into work, converting the survey to a quote is where that gets settled. Q: Where do the survey photos go? A: They stay attached to their room, inside the survey, and are visible to your team only. They are a separate store from clean photos and never appear on your public page or in a client portal. URL: https://cleanflo.io/help/site-surveys/ --- #### Raising an invoice The Invoicing screen and its two tabs, raising an invoice from the completed cleans CleanFlo has already gathered for you, the invoice form field by field, and how invoice numbers are made. An invoice in CleanFlo starts from work that has actually happened. The app keeps a running list of completed cleans nobody has billed yet, and the fastest way to raise an invoice is to let it write the lines for you. The old way of billing a cleaning round is to sit down on a Sunday with a diary and try to remember what got done. The failure mode is not fraud, it is forgetting: a clean goes in, gets cleaned, and never appears on a bill. CleanFlo closes that gap by linking each completed clean to the invoice that billed it, and showing you everything that is not linked yet. ##### The Invoicing screen The page is titled Invoicing with the subtitle Manage billing and track payments, and it has two tabs: Invoices and Settings. Everything in this guide happens on the first. The second is where your bank details and invoice branding live, and it is worth setting up before you raise anything. (The Invoicing screen on its Invoices tab. Four money figures, then the Uninvoiced Work banner, then the ledger. Overdue rows carry a red wash and a red due date.) - Outstanding: Everything invoiced and not yet paid: drafts, sent invoices and overdue ones added together. The single number most owners check first thing. - Overdue: The part of Outstanding that is past its due date. Red, because it should be. - Paid (30 Days): Money that has actually landed in the last thirty days, measured from when you marked each invoice paid. - Uninvoiced Work: Completed cleans with no invoice attached. This is money you have earned and not yet asked for, which makes it the most interesting figure on the page. The ledger below has six columns: Invoice, Client, Amount, Timeline, Status and Actions. Timeline is two stacked lines, Issued: over Due:, and the due line turns red once the invoice is late. Actions carries View on every row and Edit only on drafts, because a sent invoice is a document somebody already has. ##### The four statuses (The invoice status pills. Three of them are stored against the invoice. Overdue is not: it is worked out live from the due date every time the screen draws.) - Draft: Written but not issued. The only status you can still edit or delete, and the status every new invoice is created at, even the ones you create with Create & Send. - Sent: The email went out and the provider accepted it, or you issued it another way and there was no address on file. From here the invoice is a document in somebody else's inbox. - Paid: You pressed Mark as Paid. It comes off Outstanding and joins Paid (30 Days). - Overdue: Sent, unpaid, and past the due date. Never stored: the app compares the due date with today every time it draws the pill, so an invoice becomes overdue at midnight without anybody running anything. ##### Raising one from completed cleans When a clean is marked Done and has a client and a price on it, CleanFlo puts it into the uninvoiced pool. The amber banner above the ledger is that pool, grouped by client. Collapsed, it reads as one line: the number of cleans, the number of clients and the total sitting there. (The Uninvoiced Work banner expanded. Each client is one row, with up to three clean chips and a +n more chip, and its own Invoice Now button.) 1. Open Invoicing and look at the amber banner: If it is not there, nothing is waiting: every completed clean with a client and a price is already on an invoice. The banner only appears when there is something in the pool. 2. Expand it: Press the header and it opens into one row per client, each showing the clean count, the total, and up to three clean chips carrying the date, the location and the price. A fourth and beyond collapse into a +2 more chip. 3. Press Invoice Now against the client you are billing: The drawer opens with that client already chosen and every one of their uninvoiced cleans already written in as a line. You did not type anything. 4. Read the lines: Each clean-derived line is tagged with a small lowercase clean chip and reads as the clean's title, then the location, then the date in brackets: Weekly Office Clean, Bay View Offices (07 Aug 2026). The unit price is the price stored on the clean. Edit the wording freely, change a figure if you agreed something different, or delete a line entirely. 5. Check the dates: Issue Date is today. Due Date is today plus your default payment terms, which is fourteen days unless you have changed it under Invoicing → Settings. Both are editable per invoice. 6. Create the draft, or create and send: Create Draft saves it and leaves it for you to check. Create & Send saves it and emails it in one go. Either way the cleans on it are now linked to the invoice and drop out of the uninvoiced pool. > A clean only reaches the pool if it has a client and a price. A clean priced at nothing, or booked against a location with no client attached, will be finished and still invisible here. If a client's work never turns up in Uninvoiced Work, that is the first thing to check. ##### The invoice form, field by field Whether you arrived by Invoice Now or by Create Invoice in the header, you get the same drawer: New Invoice, subtitled Create a new invoice for a client. (The New Invoice drawer, opened from Invoice Now. The lightning notice at the top says how many completed cleans it has written in for you and reminds you that they are editable.) - Bill To: A two-button toggle: Existing Client or New Recipient. The first gives you a dropdown of your active clients. The second gives you a Name and an Email, for a one-off you are not keeping on the books. - The uninvoiced cleans notice: Only in create mode, only with an existing client selected. While it looks: Checking for uninvoiced cleans…. When it finds some: 4 completed cleans auto-added: £624.00 total over Edit or remove any lines below. When it finds none: No completed cleans waiting to be invoiced: add line items manually below. - Issue Date: Defaults to today. This is the date printed on the document, and for VAT purposes it is normally your tax point. - Due Date: Defaults to today plus your default payment terms. This is the date the Overdue status is worked out from, so it is not decoration: leave it blank and the invoice can never go overdue and can never be chased with a reminder. - Line Items: The invoice itself. Described below. - Notes: Optional. Free text, printed under its own Notes heading on the document. The placeholder suggests Payment terms, internal notes…, and it is worth remembering that anything you put here is on the copy the client receives. Changing the client after lines have been written clears the lines and starts again, which is deliberate: you should never end up billing one client for another client's work because you changed the dropdown halfway through. ##### The line editor The line editor is a small spreadsheet. Its header row reads Description, Qty, Unit Price, VAT % and Total, followed by an unlabelled column holding the delete buttons. The VAT % column is only drawn when your company is marked as VAT registered, and when it is, the section label carries a badge reading VAT registered · rates per item. (The line editor with four job-derived lines and the running totals beneath. The clean chip marks a line CleanFlo wrote from a completed clean rather than one you typed.) - Description is free text, placeholder Item description. A line with no description is silently dropped when you save, which is how the blank last row disappears rather than becoming a £0.00 line. - Qty takes decimals as well as whole numbers, placeholder 1. Useful for hours. - Unit Price is the price of one, placeholder 0.00. It is a net figure when you are VAT registered. - VAT % is per line, placeholder 20. Every new line starts at 20 if you are VAT registered and 0 if you are not. - Total is calculated and cannot be typed into. It is the quantity times the unit price, plus that line's own VAT. Add line item at the foot adds a blank row. The bin icon at the end of a row removes it, except when there is only one row left: an invoice always keeps at least one line in the editor. Underneath, the running totals read Subtotal, VAT and, in bold, Total. Note that the drawer says Total where the printed document says Total Due: same number, different audience. > There is no discount field and no per-invoice VAT switch. A discount goes on as its own line with a negative unit price, and whether VAT columns appear at all is decided entirely by whether your company is marked as VAT registered under Settings → Company. ##### Saving, and where the number comes from The footer holds three buttons: Cancel, Create Draft and Create & Send. On an invoice you are editing there is only one, Save changes. Both create buttons write the invoice as a draft first. Create & Send then emails it and only promotes it to Sent once the email provider has accepted the message. If the email fails, the invoice survives as a draft and you are told so plainly: Invoice saved as a draft: we could not email it to Marcus Hale. Open it and use Send Invoice to try again. Nothing is lost and nothing pretends to have gone out. Four things are checked before it saves, and the drawer jumps to the first field that fails: Please select a client., Please enter a recipient name., Please enter a recipient email. and Add at least one line item with a description. (The saved invoice as the client receives it. The number is assigned at save time, the totals are stored on the document, and the BACS block is drawn from your invoice settings.) The invoice number is generated by the database when the invoice is first saved, never by you and never editable afterwards. Its shape is a prefix, the year, and a three-digit sequence: the first invoice you raise in 2026 is INV-2026-001, the second is INV-2026-002, and the count starts again at 001 in January. The prefix defaults to INV and can be changed under Invoicing → Settings, which is how a firm running two trading names keeps two series apart. > The number is also the payment reference. It is printed twice on the document: once at the top beside the word INVOICE, and once at the foot in the bank details block, with a line asking the client to quote it. That is the whole mechanism by which a BACS payment gets matched to the invoice it paid. > If you are VAT registered, the document CleanFlo prints is intended to be a valid VAT invoice: your company name and address, your VAT number, an invoice number, the issue date, a description of the supply, the net amount, the VAT rate and amount, and the gross total. Fill in your VAT number under Settings → Company or it will not print, and check the finished document once against what HMRC expects before you send the first one. **FAQs** Q: Why is Create Invoice sending me to the Settings tab instead of opening the drawer? A: Because your BACS details are missing. Until a sort code and an account number are saved, an amber gate reading "BACS payment details required" sits above the ledger and both Create Invoice and Invoice Now jump to the Settings tab instead of opening the drawer. An invoice with no way to pay it is not much use, so the app blocks it rather than letting one out. Q: Can I invoice two clients on one invoice? A: No. An invoice belongs to one client or one ad-hoc recipient, and the uninvoiced pool is grouped by client for the same reason. Bill each one separately. Q: What happens to the cleans on an invoice if I delete it? A: They go back into Uninvoiced Work so you can bill them again. The confirmation says so before you press it, and afterwards you are told how many came back. Deleting is only available on drafts. Q: Can I raise an invoice for work that is not a clean in CleanFlo? A: Yes. Press Create Invoice in the header, choose the client, ignore the "no completed cleans waiting" line, and type your own line items. Nothing forces an invoice line to come from a clean. Q: Is there a recurring invoice? A: No. There is no recurring invoice, no duplicate and no credit note. What is recurring in CleanFlo is the clean: book a repeating clean, and each completed occurrence arrives in Uninvoiced Work ready to go on the next bill. URL: https://cleanflo.io/help/creating-an-invoice/ --- #### VAT and line items An invoice line is a description, a quantity, a unit price and a VAT rate, and the total is just those multiplied out. Here is the arithmetic, and what changes if you are not VAT registered. Every figure on a CleanFlo invoice comes from the same three numbers on each line: how many, how much each, and at what rate. Everything else is addition. This is how that addition works, and where it surprises people. A line item is the smallest unit of an invoice. It has a description, a quantity, a unit price and, if you are VAT registered, its own VAT percentage. Nothing else. There is no discount field, no per-invoice tax setting and no category, because those all turn out to be a line item with a different description. ##### The five columns The editor in the drawer and the printed document show the same information under slightly different headings, and it is worth knowing both because a client will quote the printed one back at you. In the drawer | On the document | What it holds Description | Description | Free text. Placeholder Item description. A line with no description is dropped when you save. Qty | Qty | How many. Takes decimals, so 2.5 hours is a valid quantity. Placeholder 1. Unit Price | Unit Price | The price of one, before VAT. Placeholder 0.00. VAT % | VAT | The rate for this line only. Placeholder 20. The document prints it as 20%. Total | Amount | Calculated, never typed. Quantity times unit price, plus this line's own VAT. (The line editor when your company is VAT registered. The badge beside the section label is the app telling you the rate is set per line, not once for the whole invoice.) The last column recalculates as you type, so you can see the effect of a rate change before you commit to it. The bin icon at the end of each row deletes that line, except when only one row is left: the editor always keeps one. ##### Why the rate is per line Most cleaning work in the UK is standard-rated, so most invoices are twenty per cent all the way down. CleanFlo still puts the rate on the line rather than on the invoice, for the cases where one bill legitimately carries more than one rate. - A disbursement recharged at cost, such as a parking or congestion charge paid on the client's behalf, which carries no VAT of its own. - Cleaning carried out in the course of constructing a new dwelling, which can be zero-rated when the conditions are met. - A line you deliberately want to sit at a different rate because your accountant has told you to. A new line starts at 20 when you are VAT registered and 0 when you are not, so the common case needs no thought at all. You only ever touch the column when a line is genuinely different. > The rate is stored as a number, not as a named scheme. CleanFlo does not know that 0 means "zero-rated" rather than "exempt" or "outside the scope", and it will not warn you if you put 20 on something that should not carry it. The classification is yours; the arithmetic is the app's. ##### The arithmetic, in order Four calculations, done in this order, on every invoice and every quote. - Line net = quantity × unit price. Nothing to do with VAT yet. - Line VAT = line net × the line's own rate ÷ 100. Zero for everybody who is not VAT registered, whatever is in the rate column. - Line amount = line net + line VAT. This is the figure in the Amount column of the printed document. - Invoice totals: Subtotal is the sum of the line nets, VAT is the sum of the line VATs, and Total Due is the two added together. Line | Qty | Unit Price | Rate | Net | VAT | Amount Weekly Office Clean, August | 4 | £130.00 | 20% | £520.00 | £104.00 | £624.00 Deep clean of new-build handover, Plot 14 | 1 | £180.00 | 0% | £180.00 | £0.00 | £180.00 Congestion charge, recharged at cost | 1 | £15.00 | 0% | £15.00 | £0.00 | £15.00 Totals | | | | £715.00 | £104.00 | £819.00 > The Amount column adds up to the Total Due, not to the Subtotal. Each amount already has its own VAT in it. If you sum that column by eye and compare it against the Subtotal you will always be out by exactly the VAT, and nothing is wrong. (The totals block on the printed invoice. Three rows when you are VAT registered, two when you are not, and the last one always reads Total Due.) The VAT row never prints the rate beside it. On an invoice with three lines at three rates there is no single rate to print, so the label stays bare and the breakdown lives in the line table where it belongs. Money is rounded to whole pence when the invoice is saved, so a line of three at £19.99 is stored as £59.97 and not as a long binary fraction. (A VAT-registered invoice with three rates on it. Your VAT number prints under the company address, the VAT column sits between Unit Price and Amount, and the totals carry a VAT row.) ##### When you are not VAT registered Plenty of cleaning firms are under the threshold and have no business showing VAT on anything. CleanFlo handles this with one switch, not with a rate of zero: turn VAT registered off under Settings → Company and VAT stops existing across the whole product. (VAT registration lives on the Company tab of the main Settings screen, not under Invoicing. The VAT number field only appears once the switch is on.) With the switch off, five things change and none of them need any further attention from you. - The VAT % column vanishes from the line editor on both invoices and quotes. - The badge reading VAT registered · rates per item is not drawn. - The VAT column vanishes from the printed document, leaving Description, Qty, Unit Price and Amount. - The VAT No: line under your company address is not printed, even if a number is stored. - The VAT row is dropped from the totals block, so Subtotal and Total Due are the same figure. (The same invoice from a business that is not VAT registered. Four columns instead of five, no VAT number under the address, and a totals block of two rows where the Subtotal and the Total Due agree.) > The switch is not retrospective in the way people expect. Turning VAT on today does not add VAT to an invoice you raised last month, because the printed document reads your current setting. If you cross the threshold mid-year, raise the historic invoices before you flip the switch, or check anything already sent. ##### Hiding the quantity column One more column is optional, for a different reason. Under Invoicing → Settings, the Display Options card carries a switch called Show the quantity column with the hint Off suits a company that prices a clean rather than an hour.. Turn it off and Qty disappears from the printed document. It stays in the editor, and the arithmetic is unchanged: a quantity of four at £130 is still £520 net, it just is not shown as four lots of anything. That suits a firm that prefers to write "Weekly office cleaning, August" against a single figure rather than itemise the visits. ##### What CleanFlo does not do about VAT > You must register for VAT once your VAT-taxable turnover goes over the HMRC threshold in any rolling twelve-month period, or if you expect to go over it in the next thirty days on its own. You can also register voluntarily below it, which some commercial cleaners do because their clients reclaim it anyway and it lets them reclaim their own input tax. The threshold changes: check the current figure on GOV.UK rather than trusting a number you read somewhere.,CleanFlo is not doing your VAT return. It stores a rate per line, prints a compliant-looking document and adds the numbers up correctly. It does not file anything, it is not Making Tax Digital software, it has no VAT scheme setting, and it does not know whether you are on cash accounting, the flat rate scheme or standard accounting. Export your invoices as CSV and give them to whoever does your books, or key the totals into your accounting package. The numbers are right; the return is still yours. Two practical consequences follow. First, set your VAT number under Settings → Company the day you register, because an invoice without it is not a valid VAT invoice and a client's bookkeeper will send it back. Second, keep the classification of each line consistent: if you decide a recharged parking fee is a disbursement, treat every recharged parking fee the same way, because the pattern is what an inspection looks at. **FAQs** Q: Can I set one VAT rate for the whole invoice? A: Not directly, but you rarely need to. Every new line starts at 20 when you are VAT registered, so an all-standard-rated invoice is already at one rate without you touching anything. The per-line column exists for the exceptions. Q: My prices in Services say "inc. VAT". Does that mean the invoice adds VAT twice? A: No, but it does mean you should decide which convention you are using. The catalogue price is copied into the Unit Price column, and the invoice then treats Unit Price as a net figure and adds the line rate on top. If your catalogue prices already include VAT, either store them net or set those lines to a rate of 0 so the number the client sees is the number you meant. Q: Why does my Amount column not add up to the Subtotal? A: Because the Amount on each line already includes that line's VAT, while the Subtotal is the sum of the net figures. The Amount column adds up to the Total Due instead. Both are correct and both are on the document. Q: Does CleanFlo handle the reverse charge or EU VAT? A: No. There is one rate box per line and no scheme handling of any kind. If you need a reverse-charge wording on the document, put it in the Notes field on the invoice, or in the invoice footer under Invoicing so it prints on everything. Q: Where do I turn VAT on? A: Settings, then the Company tab. It is the same place your company name, address and phone number live. Invoice branding and bank details are somewhere else entirely, under Invoicing, then Settings. URL: https://cleanflo.io/help/vat-and-line-items/ --- #### Sending and chasing an invoice Getting the invoice to the client and knowing when it has been paid. Overdue is calculated, not set, and recording a payment is one click with nothing to fill in. Raising the invoice is the easy half. This is the other half: getting it in front of somebody, knowing where it has got to, and recording the money when it lands. Opening an invoice from the ledger replaces the whole screen with the invoice itself. The sidebar and the table go, and you get a breadcrumb back to Invoices, a row of buttons, and the printed document beneath. Which buttons you get depends entirely on the status. ##### Sending it (The action bar on a draft. Edit, Send Invoice, Delete, and Print / PDF, which is on every status.) Send Invoice does exactly what it says and nothing more. There is no send dialog. You do not write a subject line, you do not compose a covering message, you do not pick a recipient and you do not get a preview-before-send: the recipient is the contact email on the client record, or the email you typed if the invoice went to a one-off recipient. The order matters. The email goes out first and the status is written second, so an invoice only reads Sent once it really has been. Three things can happen. - It goes: The status becomes Sent and you are told Invoice emailed to Marcus Hale. The send is written into the activity log as an email event, so there is a record of the date it went. - There is no address on file: The send is skipped, the status still becomes Sent, and the message is explicit about why: Invoice INV-2026-004 issued. There is no email address on file, so print or post it.. This is the honest path for an invoice you posted or handed over on site. - The provider refuses it: Nothing moves. You are told The email to Marcus Hale was not accepted. The invoice is still a draft. and the invoice stays a draft with Send Invoice still available to try again. If you used Create & Send in the drawer rather than opening the invoice afterwards, the same sequence runs. It creates the invoice as a draft, emails it, and only then promotes it. A failure there leaves you with a saved draft and a message telling you to open it and use Send Invoice. > Once an invoice is Sent it cannot be edited or deleted. Those two buttons only exist on drafts. That is deliberate: a document somebody already has in their inbox should not quietly change underneath them. If a sent invoice is wrong, agree the correction with the client and raise a second one. ##### Getting a PDF Print / PDF is on the action bar at every status. It calls your browser's own print dialog against the document on screen, and every modern browser offers "Save as PDF" as a destination in that dialog. There is no server-side PDF, no download button and no control over the filename. The print stylesheet strips the app away: white page, no shadow, no rounded corners, the paper stretched to the full width. What comes out is the document and nothing else. That is the file to attach when somebody asks you to resend, or to keep for your own records. > There is no resend inside CleanFlo. Send Invoice disappears the moment the status changes. When a client says they never received it, print to PDF and send it from your own email: that also gives you a copy in your sent folder, which is the thing you actually want when it becomes an argument. ##### Knowing where everything is The ledger is the tracker. The Status column carries the pill, the Timeline column carries both dates, and an invoice past its due date is marked in three ways at once: the pill turns red, the Due: line turns red, and the whole row takes a faint red wash. (Four rows of the ledger, one at each status. The overdue row is the only one that draws attention to itself, which is the point.) Above the table, the status filters read All, Draft, Sent, Paid and Overdue. The one worth pressing on a Monday morning is Overdue. ##### What Overdue means, and when it flips Overdue is not something you set and not something anybody presses. It is worked out fresh every time a screen draws, from one comparison: the invoice is Sent, it has a due date, and that due date is before today. Nothing else counts. - A draft is never overdue, however old it is. It has not been issued, so nothing is late. - A paid invoice is never overdue, even if it was paid three weeks after the due date. Paid is the end of the line. - A sent invoice with no due date at all can never go overdue. It also cannot be chased with a reminder, because there is nothing to count from. - An invoice flips at the turn of the day. Due on the 31st means it is still fine on the 31st, and overdue from the moment the 1st starts. Because it is computed rather than stored, the same invoice reads the same on the ledger, in the exported CSV and on the printed document. There is no background clean you are waiting for and no state to get out of sync. > If an invoice never seems to go overdue, check that it has a due date. The date field can be cleared, and an invoice with an empty Due Date sits at Sent forever, out of the Overdue filter, out of the reminders count, and out of your attention. ##### Chasing, politely When anything is overdue, a second button appears in the page header beside Create Invoice, outlined in red and counting what is waiting: Send 1 Reminder, or Send 3 Reminders, and so on. (The Invoicing screen filtered to Overdue. The header gains a reminders button counting what is late, and the ledger shows only the rows behind that number.) Pressing it asks first: Send a payment reminder to 3 clients? with the buttons Cancel and Send reminders. Each reminder carries the invoice number, the issue and due dates, the total, how many days late it is, and your bank details, so the client has everything they need to pay without replying to ask. An invoice is only eligible if it has both a client email address and a due date. Without a due date there is no honest way to say how overdue it is, so those invoices are skipped. If nothing at all qualifies, the dialog does not open and you get the reason instead: No overdue invoices have both an email address and a due date on file. You can also chase one at a time. Open an overdue invoice and the action bar carries Send Reminder beside Mark as Paid. Same email, one client. Two things can stop it, and both say so plainly: There is no email address on file for this invoice. and This invoice has no due date, so we cannot say how overdue it is. (The action bar on a sent invoice, and on an overdue one. Send Reminder is the only difference between them.) > These two buttons are the on-demand ones: nothing here waits for a schedule, and pressing either is always a deliberate choice you make after looking at the list, useful for a client you want to chase right now rather than waiting for the next automatic run. CleanFlo also chases overdue invoices on its own; see the next section for how that works and how to turn it off. ##### The automatic overdue chase ladder Beyond the buttons you press yourself, CleanFlo also chases automatically. A background run checks every overdue invoice once a day and, the moment one reaches 7, 14 or 30 days overdue, emails the client without you doing anything. It is not a fourth reminder bolted on top of the ones above: it uses the same reminder shape, sent for you, on a schedule you do not have to remember. There are three stages and each fires once. The copy escalates as the debt ages, and every stage carries the same information a manual reminder does, the invoice number, the issue and due dates, the total, how many days late it is, and your bank details, because the client still has to be able to pay from the email alone. - 7 days overdue: The first stage. A plain nudge: here is the invoice, here is what is owed, here is how to pay it. - 14 days overdue: Firmer in tone. The invoice is now visibly late and the email says so plainly. - 30 days overdue: The last stage, and it reads as the final notice it is. If a client has more than one invoice reaching a stage in the same run, they do not get several emails landing at once. CleanFlo combines everything that is due into a single statement email, listing every overdue invoice with its own total and days late, rather than three near-identical emails arriving in the same inbox within a second of each other. Two switches control it, one for the company and one for a single client. - Company-wide: A toggle under Invoicing → Settings turns the whole ladder off. Flip it and no automatic email goes out for anybody, the buttons on the invoice and in the page header still work exactly as before. - Per client: A toggle on the client record exempts just that one client while everybody else still gets chased, the one to use for a client you are already chasing yourself and do not want CleanFlo emailing over the top of. (The two switches: the company-wide one in Invoicing → Settings, and the per-client exemption on the client record.) > A stage never re-sends once it has fired for a given invoice. There is also no manual "send this stage now" button and no way to force the ladder to run outside its daily schedule, if you want to chase somebody immediately, that is what Send Reminder above is for. The two are independent: firing one does not affect the other. The UI has no clock counting down to the next automatic run either; the invoice's activity log is the record of what has actually gone out, not a countdown to what is about to. ##### Statutory interest and compensation For an overdue invoice to a business (not a private individual) CleanFlo can work out what you are legally entitled to charge under the Late Payment of Commercial Debts legislation: statutory interest on the debt, plus a fixed compensation amount. Consumer invoices never show this, because the entitlement does not exist for them. The interest is the Bank of England base rate plus a fixed 8%, run over however many days the invoice has been overdue. CleanFlo cannot look the base rate up for you, it moves, and there is no live feed to it, so it lives as a company-level setting under Invoicing → Settings, defaulting to 4.75%. Check it against the real figure occasionally and update it there; the calculation is only ever as current as what you have typed in. Alongside the interest, the legislation adds a fixed compensation amount that steps up with the size of the debt: £40 under £1,000, £70 from £1,000 up to £10,000, and £100 at £10,000 or more. Once a business invoice is overdue, a banner appears on the invoice itself with the calculated figure and an Add to Invoice button. Press it and CleanFlo writes the whole calculation onto the invoice as a single new line, described as statutory interest and compensation: one line, one figure, not a separate interest field and a separate compensation field. (The banner on INV-2026-002, 14 days overdue, before and after Add to Invoice is pressed.) Once added, the banner stops recalculating. What it shows from that point on is the figure that was actually charged, frozen at the moment you pressed the button, not a live number climbing with every extra day late. That is deliberate: recalculating against a total that already includes the interest you added would start charging interest on the interest, which the legislation does not intend and is not something you want to be doing. > This is optional, and nothing about it happens on its own: no stage of the automatic chase ladder adds it, and no reminder email mentions it. It is also a genuine entitlement under the Late Payment of Commercial Debts legislation, not a threat, so explain it plainly if a client asks rather than treating it as leverage. It exists to cover the real cost to you of a business paying late, and using it is no different from charging any other amount you are owed. ##### Getting paid online: the Pay Now link An invoice can also carry its own payment link, sitting on the page beside the BACS block rather than replacing it. - Company-wide: Set once under Invoicing → Settings → Online Payment and every invoice inherits it. - Per invoice: Set on one invoice, in the invoice drawer. Where an invoice has its own link, that is the one shown: it overrides the company-wide one rather than sitting beside it. Whichever is set, the printed and emailed invoice both grow a Pay Now button next to the payment details, and so does the same invoice in the client portal. Nothing about the BACS block moves or shrinks to make way for it: a client who prefers to transfer the money still can, and one who would rather click through and pay online still can. It is additive, not a replacement. The copy next to the button says plainly what CleanFlo is and is not doing: You'll be taken to {company}'s own payment page to pay. CleanFlo does not process this payment and cannot see when it's been made. That is accurate wording, not cautious wording. The link is whatever payment page you already have, a Stripe payment link, a PayPal.me address, a GoCardless mandate page, anything, and CleanFlo has no payment processing of its own built in. It hands the client a URL and nothing else. You still press Mark as Paid yourself, once the money is actually in the account, exactly as before. (The Pay Now block on an invoice with a link set, sitting beside the BACS details rather than in place of them.) ##### Recording a payment This is the shortest section in this manual, because there is almost nothing to it. Open the invoice and press Mark as Paid. That is the whole feature. There is no confirmation, no payment dialog and no form of any kind. CleanFlo does not ask for an amount, a date, a method or a reference. There is no Amount paid field, no Balance due field, no part payment, no payment plan and no allocation of a lump sum across several invoices. An invoice is either paid or it is not. Pressing it does four things. The status becomes Paid and the pill turns green. A short confirmation reads Invoice marked as paid. The invoice drops out of Outstanding and joins Paid (30 Days). And a notification titled Invoice paid is pushed to the company account, so whoever is not sitting at the screen still hears about it. (A paid invoice. The status pill in the meta row is the only thing that says so: there is no PAID stamp, no watermark, no "amount paid" line and no "balance due" line anywhere on the document.) > Marking an invoice paid cannot be undone from the interface. There is no "mark as unpaid" and no way back to Sent. Press it when the money is actually in the account, not when a client tells you they have sent it. For a part payment, the practical approach is to leave the invoice where it is and treat the balance as the thing you are chasing. The invoice number is the payment reference on the document, so a partial BACS payment still reconciles against it in your bank feed; CleanFlo just does not model the split. ##### The Outstanding figure Outstanding is the sum of every invoice that has not been paid: drafts, sent invoices and overdue ones together. It is the first of the four figures on the Invoicing screen and it also sits on the dashboard, second from the left, so it is usually the first number you see in a day. (Outstanding on the dashboard. The percentage compares it with last month, and down is good: it means less is owed to you than there was.) Because drafts count towards it, Outstanding also catches the invoice you wrote on Friday and forgot to send. If the figure looks wrong, filter the ledger to Draft before you go looking anywhere else: an unsent invoice is money you have not actually asked for. Two habits keep the number meaningful. Mark payments off the same week they arrive, so Paid (30 Days) reflects reality and Outstanding is not carrying money you already have. And press Export CSV beside the pager once a month: it writes invoices.csv from whatever the ledger is currently filtered to, with the invoice number, client, amount, both dates and the status, which is the file your bookkeeper will ask for anyway. > If a commercial client is late, the Late Payment of Commercial Debts legislation lets you charge statutory interest and a fixed compensation amount on a business-to-business debt, and CleanFlo now calculates that figure for you and can add it to the invoice as a line item. See Statutory interest and compensation above for how it is worked out and where the button lives. **FAQs** Q: Can I see whether a client opened the invoice email? A: No. CleanFlo records that the email was accepted by the provider and writes it to the activity log with the date and the recipient. There is no open tracking, no read receipt and no click tracking. Q: I marked the wrong invoice as paid. How do I undo it? A: You cannot, from the interface. There is no way back from Paid, and the invoice cannot be edited at that status either. Contact support if the figure matters enough to correct, and in the meantime the safest habit is to reconcile against the bank before pressing the button. Q: Why does my printed invoice not say PAID on it? A: Because CleanFlo does not print one. There is no PAID stamp, no watermark and no "settled" line on the document at any status. Payment state is shown by the status pill in the dates block at the top right, and nowhere else. If you need a receipt, print the invoice while it reads Paid: the pill is on the printout. Q: Can I send a statement of everything a client owes? A: Not as something you press, no. There is no manual statement, consolidated demand or account summary document: each invoice still stands on its own from your side, and filtering the ledger by client and exporting the CSV is the nearest thing to sending one yourself. The one exception is automatic: if a client has more than one invoice overdue in the same chase-ladder run, CleanFlo combines them into a single statement email rather than sending several apart. See "The automatic overdue chase ladder" above. Q: Does anything happen automatically on the due date? A: On the due date itself, just the status: it flips to Overdue and the row turns red. Nothing is emailed that day. But once the invoice has been overdue for a week, CleanFlo's automatic chase ladder takes over and starts emailing the client for you at 7, 14 and 30 days overdue, unless you have switched it off. See "The automatic overdue chase ladder" above. Q: Will CleanFlo email my client without me pressing send? A: Yes, for overdue invoices. Once an invoice is overdue, the automatic chase ladder emails the client at 7, 14 and 30 days overdue on its own, on top of anything you send by hand. You can turn it off company-wide under Invoicing → Settings, or exempt a single client from their client record if it is only one you would rather chase yourself. Q: Does CleanFlo take a cut of payments made through the Pay Now link? A: No. Pay Now just links to a payment page you already control, a Stripe payment link, PayPal.me, GoCardless, whatever you have set up. CleanFlo does not process the payment, cannot see when it lands, and takes nothing from it. You still mark the invoice paid yourself once the money is in your account. URL: https://cleanflo.io/help/sending-invoices/ --- #### Bank details and invoice branding Setting up the bank details every invoice carries, the payment reference that makes a BACS payment traceable, and the template, accent colour, logo and footer that make it look like yours. An invoice has to do two cleans: tell somebody what they owe, and make it easy to pay. The second one is entirely a matter of settings, and they are not where most people go looking for them. > These settings are not on the Settings screen in the sidebar. They live on a tab inside Invoicing: open Invoicing and press Settings, the second of the two tabs at the top of the page. None of the Settings screen's own sections is this one. (The two places called Settings. The sidebar one, on the left, is company details and your account. Invoice branding and bank details are on the second tab of Invoicing, on the right.) The split is not arbitrary. Settings → Company holds facts about the business: its name, address, phone number, company number, whether it is VAT registered and its VAT number. Invoicing → Settings holds everything about the document: how it looks, what it says at the bottom, and how somebody pays it. ##### What is on the tab Five cards, top to bottom, with one save bar at the foot that covers all of them. (Invoicing on its Settings tab. The BACS card carries a red badge until both required fields are filled, and nothing on the page saves until you press Save changes at the bottom.) ##### The BACS block This is the card to fill in first, because CleanFlo will not let you raise an invoice without it. Until both required fields are saved, the card carries a red badge reading Required to create invoices, an amber gate appears above the invoice ledger reading BACS payment details required, and both Create Invoice and Invoice Now bounce you back here instead of opening the drawer. (The BACS payment details card. Two of the four fields are required, and pressing save without them gives you the reason rather than a silent failure.) - Bank name: Optional. Placeholder e.g. Barclays. It prints as Bank on the document, and it is worth filling in: it reassures a nervous payer that they are looking at the right account. - Account name: Optional. Placeholder e.g. Star Cleans Ltd. It prints as Account Name. Banks now check the name a payer types against the name on the account, so this needs to be exactly what your bank has, not your trading name. - Sort code: Required. Placeholder 20-00-00. It prints as Sort Code. Free text, so type it in whatever form you want your clients to see. - Account number: Required. Placeholder 12345678. It prints as Account No., with the full stop. Each of the four is only printed when it has a value, so a half-filled block does not leave empty labels on the page. What is always printed, whatever else is missing, is the reference. ##### The payment reference At the bottom of the BACS block sits a fifth row you never fill in: Reference, holding the invoice number. Under the grid, one sentence spells it out, with the number in bold: Please quote INV-2026-004 as the payment reference so we can match your payment to this invoice. (The finished document with its BACS block. The reference is the invoice number again, printed in the accent colour, and it is the only field on the page a payer has to copy by hand.) It looks redundant. The invoice number is already unique, and it is already printed at the top of the page beside the word INVOICE. The reason it appears twice is that until it was labelled as the reference, nobody quoted it. A client would look at the bank details, type your sort code and account number into their banking app, put "cleaning" in the reference box, and send the money. It arrived, and there was no way to tell which invoice it was for. That is the whole mechanism. There is no payment link, no card processing, no direct debit and no bank feed inside CleanFlo. Matching a BACS payment to an invoice is a human reading their bank statement, and the reference is what makes that possible in seconds rather than by comparing amounts. > If payments regularly arrive with the wrong reference, the fix is usually at the client's end rather than yours: ask them to set the reference once as a saved payee. Repeat clients paying the same monthly invoice tend to save the payee and never look at the reference again, so getting it right on their first payment is worth an email. ##### Templates, colour and logo The first card on the tab is Template & Branding, subtitled Choose how your invoices look when printed or sent to clients. It offers three layouts, shown as small thumbnails you can pick between. (The three invoice templates and the accent colour. The colour is the only thing that changes across all three, so picking a template and then picking a colour is the whole of the branding decision.) - Classic: Described in the app as Bold full-width header. Your company name and address sit in white on a full-bleed band of your accent colour, with the word INVOICE and the number on the right. The most conventional of the three. - Modern: Accent lines, clean layout. A white header with your company name in the accent colour, the word INVOICE large on the right, and a rule underneath. This is also the layout every quote uses, whatever you pick here. - Minimal: Pure white, editorial. No band, no colour block. Your name uppercased, address and phone joined into one line, and a hairline rule. Reads as a letter rather than a form. - Accent colour: A colour picker and a hex box that stay in step. The default is #0E7490, a dark teal. It colours the header band on Classic, the company name and the word INVOICE on Modern, and the rule above the total on all three. - Invoice font: Four options shown as an "Aa" sample each: Modern, Clean, Classic and Mono. Classic is a serif and Mono is a typewriter face, which some firms use because it photocopies and scans without ambiguity. - Company logo: PNG, JPG or WebP, up to 2 MB, uploaded by pressing the dropzone. It prints at the top of every invoice and every quote. Once uploaded you get Replace and Remove beside it. The Preview button in the corner of the card opens a modal headed Template Preview showing your choices applied to a dummy invoice with two line items, so you can see the effect before you save. It does not use one of your real invoices. > Template, colour, font and logo are read at the moment a document is drawn, not stored on it. Change the accent colour today and an invoice you sent in March will print in the new colour if you reopen it. The figures never change, only the appearance, but it is worth knowing before you redecorate mid-year. ##### Defaults and display options Two smaller cards sit between the branding and the bank details. Document Defaults is subtitled Pre-filled values used when creating new invoices, and it decides what a new invoice starts with rather than changing anything that already exists. - Invoice number prefix, up to ten characters, defaulting to INV. Change it to CLN and your next invoice is CLN-2026-005. The year and the sequence are not yours to set. - Currency symbol, picked from £, $, €, A$, C$ and CHF. It changes the symbol everywhere money is shown, including the CSV export headers. - Default payment terms, one of 7, 14, 21, 30, 60 or 90 days. This is what the Due Date on a new invoice is calculated from. The default is 14 days. (Display Options. Two switches worth of decision: what size paper the document is laid out for, and whether the quantity column is printed at all.) Turning Show the quantity column off removes Qty from the printed document only. It stays in the editor and the arithmetic is unchanged: four visits at £130 is still £520 net, it is just presented as one figure rather than as four of something. ##### The invoice footer The last card is Invoice Footer. One optional textarea, whose placeholder suggests e.g. Thank you for your business. Payment terms: 14 days. Whatever you type prints centred in small italics at the foot of every invoice, above a hairline rule, and on every quote as well. There is no built-in thank-you line anywhere in CleanFlo. If your invoices are to say anything friendly at the bottom, this is the only field that will say it. It is also the sensible home for anything that has to appear on every document: your company registration number, a late-payment clause, a note that all cleaners are DBS checked, or a reverse-charge wording your accountant has given you. When you are done, the save bar at the foot of the tab has two buttons: Discard, which puts everything back to how it was when the page loaded, and Save changes. A tick and the word Saved appears beside them when it lands. Nothing on this tab saves as you type. ##### The one thing that is somewhere else Your VAT number is not on this tab. It lives with the rest of your company identity, on Settings → Company, behind a switch labelled VAT registered. Turn the switch on and a VAT number field appears beneath it, with the placeholder GB123456789. Two conditions have to be met before it prints. The company must be marked as VAT registered, and a number must be stored. Meet both and a line reading VAT No: followed by your number appears under your address on every invoice and every quote, in all three templates. Miss either and the line is simply not drawn, with no warning. > A VAT invoice that does not show your VAT registration number is not a valid VAT invoice, and a client's bookkeeper is within their rights to reject it and withhold payment until you reissue. The day your registration comes through, put the number into Settings → Company and print one invoice to check the line is there. It takes two minutes and it saves an awkward email a month later. The same split applies to your address and phone number, which also print on the document and are also edited on the Company tab. If your header looks wrong, that is where to go. If the bottom half of the page looks wrong, you are in the right place here. **FAQs** Q: Why can I not find invoice settings on the Settings screen? A: Because they are not there. The Settings screen in the sidebar holds your company and account details, not your invoice paperwork. Invoice branding, bank details, number prefix, payment terms and the footer are all on the Settings tab inside Invoicing, which is the second tab at the top of that page. Q: Can I put a QR code or a pay-now link on the invoice? A: No. CleanFlo does not take payments and there is no payment link, no card processing and no direct debit. The BACS block and the payment reference are how an invoice gets paid, and the reference is what lets you match the money to the invoice afterwards. Q: I changed my accent colour. Do old invoices change too? A: Yes, if you reopen or reprint them. The template, colour, font and logo are read fresh each time the document is drawn rather than being saved onto it. The numbers, dates and line items never change, only the appearance. Q: Do these settings apply to quotes as well? A: Mostly. Quotes use your accent colour, your font, your logo and your footer. They always use the Modern layout, whichever template you have chosen for invoices, and they never print the BACS block: a quote is not asking for money. Q: Can I have two different bank accounts for different clients? A: No. There is one set of BACS details per company and it prints on every invoice. If you genuinely need two, the invoice notes field is the only per-invoice place to say so. URL: https://cleanflo.io/help/bank-details-and-branding/ ### Stock & equipment #### Tracking stock How the Inventory screen tracks chemicals, consumables and PPE: the columns, the category filters, the per-item minimum threshold, the four stock statuses and the CSV export. Inventory is the answer to "have we got any more blue roll?". Every chemical, cloth, bin bag and pair of gloves gets a row, a quantity and a reorder point, and the screen shouts before you run out rather than after. Most cleaning companies discover they are out of something at eight in the morning, in a van, at a client site. The cost is not the £4 bottle of degreaser. It is the hour lost driving to a cash and carry, and the client who watched it happen. Inventory holds one row per thing you buy and use up: chemicals, consumables, PPE, small hardware and spare parts. Each row carries a quantity, a unit and a minimum threshold. When the quantity drops to or below the threshold, the row turns amber, the screen grows a banner, and an alert email goes out to you. ##### What the Inventory screen shows The page is titled Inventory management with the subtitle "Track supplies, equipment and consumables", and carries a single action, Add Item. Under the title sits a band of four counts, and those four are the whole picture at a glance. - Total SKUs: Every item on the catalogue, whatever its level. - In Stock: Comfortably above the minimum threshold. - Low Stock: At or below the minimum. Carries a warning dot. - Critical / Out: At or below half the minimum, or nothing left at all. Also dotted. The search box at the right of that band matches the item name only, not the notes and not the unit. Below it, the table is headed Current Stock with a count reading "24 items", and everything else on the page is a filter over that table. (The Inventory screen with two items under their threshold. Notice the reorder gauge inside the Stock Level column: the fill is scaled in the status colour and the small tick is where the minimum sits.) > None of the column headers sort. Sorting is the select beside the category strip, and it offers five orders: "Name (A–Z)", "Name (Z–A)", "Category", "Stock (lowest first)" and "Stock (highest first)". "Stock (lowest first)" is the one to use before a wholesaler run. ##### The columns, and the filters over them - Item: The name, with "Min threshold: 6" printed underneath it so the reorder point is never more than one glance away. - Category: A tinted pill. Chemicals, Tools, PPE, Hardware, Parts or Other. The category strip above the table filters on exactly these, plus "All". - Stock Level: Right aligned. The quantity in the status colour, then "/ 6 min", then a small gauge whose fill is the quantity and whose tick is the minimum. - Unit: Whatever you typed: "Case of 6", "Box of 100", "Each". - Status: One of the four labels below. - Actions: One ghost button with no header above it. It reads View on a healthy row and Restock on anything below the line. Both open the same detail sheet. Ten rows to a page. There are no row checkboxes and no bulk actions, so there is no way to delete twenty items at once: each one is deleted from its own sheet. Clicking an open row closes it again, which is a small thing you will use more than you expect when you are checking levels down a list. ##### The stock levels, and what each colour means One function decides the pill, the gauge colour, the alert and the CSV cell, so those four can never disagree. It reads the quantity against that item's own minimum threshold and returns one of four answers. (The four stock statuses. Three of them are the ones people talk about, but "Critical" is the band that actually saves you: it fires at half the minimum, while there is still time to order.) Status | When it applies | Colour In Stock | Quantity is above the minimum threshold | Green Low Stock | Quantity is at or below the minimum threshold | Amber Critical | Quantity is at or below half the minimum threshold | Red Out of Stock | Quantity is zero or less | Red The header band folds Critical and Out of Stock together into one figure, Critical / Out, because both mean the same thing to you on a Monday morning: order it today. The table keeps them apart because the difference matters when you are deciding what to do with a clean booked for tomorrow. > An item with a minimum threshold of 0 can only ever read "In Stock" or "Out of Stock". Half of nothing is nothing, so it skips the two warning bands entirely and goes straight from fine to empty. If you want warning, give the item a real threshold. ##### The threshold is per item, and it is the whole mechanism There is no global "warn me at 20%" setting. Every item carries its own Min threshold, and you set it when you add the item or from the Edit tab afterwards. The number to use is not "how many do we like to have", it is how many get used between one order and the next arriving. - A chemical you order monthly and get through at four bottles a month: threshold 4. - Gloves that come in boxes of 100 and last a fortnight, with a five-day delivery: threshold 1. - Something the wholesaler always has on the shelf and you can fetch the same day: threshold 1, because you are only warning yourself to pick it up. When either the low or the critical count is above zero, the alert banners appear above the table, critical first. Each one lists the offending items as clickable chips reading the name and a running quantity such as "0/5 750ml Spray", so you can go straight from the banner to the item. Alerts also leave the screen. Crossing a threshold sends you an email, deduped so one crossing sends one email. A toast confirms it on screen, naming the item that has gone low and saying the alert has been emailed to you, or counting them when several go at once. Going back above the threshold clears the flag, so the next crossing alerts again rather than going quiet forever. ##### Adding an item Add Item opens a drawer titled Add inventory item, subtitled "Track a new supply, tool or consumable". It is three short sections and takes about twenty seconds per line of a wholesaler invoice. (The Add inventory item drawer. The hint under the two number boxes is the only place the app explains the threshold rule, so it is worth reading once.) 1. Name it the way you order it: Use the wholesaler's name, not a nickname. "Eco Glass Cleaner" is searchable in six months; "the blue one" is not. 2. Pick a category: Chemicals is preselected. The category only drives the pill colour and the filter strip, so it is a sorting aid rather than a rule. 3. Set the unit of measure: This is free text and it is what makes the numbers mean something. "6" of a case is very different from "6" of a bottle. Leave it blank and it stores as each. 4. Enter the opening stock and the threshold: Opening stock is what is on the shelf right now. A positive opening stock writes a movement into the item's history with the reason "Restock / Delivery" and the note "Opening stock", so the ledger starts honest. 5. Add notes if the item needs them: The notes box is where the supplier, the account code and the cupboard it lives in go. It is internal and cleaners never see it. ##### How stock actually moves The Edit tab deliberately does not let you type a new quantity. Stock only ever moves through Adjust Stock, which forces a direction, an amount and a reason. That is what turns the History tab into something you can trust when a case of chemicals goes missing. (The Adjust Stock drawer, mid-adjustment. Once you enter a quantity, the preview shows the level you are about to land on in its new colour, so you can see a removal tipping an item into Low Stock before you commit it.) The reason list is fixed and short, and it is the list your history will be readable by: Restock / Delivery, Used on Clean, Damaged / Written Off, Returned to Stock, Audit Adjustment and Other. Switching the direction resets the reason to the sensible default for that direction, so an addition defaults to a delivery and a removal defaults to use on a clean. The other way stock moves is from the phone. A cleaner working a clean can raise a supply request, and those land in a Supply Requests panel above the table with a subtitle counting how many are awaiting fulfilment. Marking one Fulfilled decrements each item on it and writes a movement with the reason "Used on Clean" and a note naming the requester. (Supply Requests. The panel is only on the page while something is pending, so an empty inbox means an empty screen rather than an empty state.) > If a request is marked fulfilled but one of the stock decrements fails, the app tells you exactly which: "Marked fulfilled, but stock wasn't adjusted for: Blue Roll. Adjust manually." The request is still closed, so the item needs a manual adjustment. ##### Stock is one number, not one per site This is the thing people expect and do not get, so it is worth saying plainly. An inventory item holds a single company-wide quantity. There is no per-location stock, no transfer between sites, and no van as a stock location. An item has a name, a category, a unit, a quantity, a minimum and a notes field, and that is the whole record. What the product gives you instead is the notes field, whose placeholder literally suggests it: "Supplier info, storage location, reorder details…". If you keep a cupboard at two sites, the practical pattern is two items with the site in the name, each with its own threshold. It is a workaround rather than a feature, and it is honest to call it one. > Inventory answers one question well: what needs ordering. It is a reorder list with a history, not a warehouse management system. Set a real threshold on every item and it will do that one clean without being asked twice. ##### Getting the list out Beside the pager sits a ghost Export CSV button. It writes inventory.csv containing the whole filtered and sorted list rather than the page you are looking at, with the headers Item, Category, Current Stock, Min Threshold, Unit, Status. The Status cell carries the display label, so a spreadsheet reads "Low Stock" rather than a code. The toast confirms the count: "Exported 24 items". Filter to a category first and the export follows the filter, which is the quickest way to hand a chemicals-only order list to whoever does your buying. The export button is only on the page when there is at least one matching row, so an empty filter cannot produce an empty file. **FAQs** Q: Can I set stock levels per site or per van? A: No. Each inventory item holds one company-wide quantity, and there is no location field on the record. If you genuinely run separate cupboards, create one item per site with the site in the name and give each its own minimum threshold. The item notes field is designed for exactly this sort of detail. Q: Who gets the low-stock email? A: You do, as the account holder. Alerts are deduped against the item row rather than the browser tab, so one threshold crossing sends one email whoever caused it: an adjustment you made, a cleaner's supply request being fulfilled, or an item created below its threshold. Q: Why can I not just type the new quantity into the Edit form? A: Because it would break the history. Every change to a quantity goes through Adjust Stock, which records the direction, the amount, a reason and an optional note. The History tab then shows the last 20 movements with a timestamp, which is what you need when the numbers stop matching the cupboard. Q: What happens to the history if I delete an item? A: It goes with it. The confirm dialog says so: it reads "Delete "Eco Glass Cleaner"? This cannot be undone." If you only want an item out of the way rather than gone, export first, or leave it at zero so the row and its movements stay readable. URL: https://cleanflo.io/help/inventory/ --- #### Equipment and machines The Equipment register answers one question: who has the machine. It tracks condition and a maintenance history too, and it deliberately does not schedule servicing for you. Equipment is the register of things you own rather than things you use up: vacuums, rotaries, ladders, pressure washers, extension leads. Each one carries a condition, a status and a history of who had it. The line between Inventory and Equipment is whether the thing comes back. A bottle of degreaser is consumed and needs reordering, so it is inventory. A £400 vacuum is lent out, used, and returned, so it is equipment. They are separate screens because they answer separate questions: inventory answers "what needs ordering", equipment answers "where has it gone and what condition is it in". ##### The Equipment Register The page is titled Equipment, subtitled "Track equipment, loans and maintenance", with one action: Add Equipment. Four counts sit under the title, and the search box beside them matches on name or serial number, which is the one search on the site where typing a serial off a sticker is the fast route. - Total Items: Everything on the register, including retired kit. - Available: In the store, not lent to anyone. - Loaned Out: Currently with a cleaner. - Maintenance: Marked as being repaired or serviced. Carries a warning dot. (The Equipment Register. Condition and Status are two separate columns doing two separate cleans: Condition is how worn the machine is, Status is where it is right now.) The table is headed Equipment Register and holds ten rows to a page. As on Inventory, no column header sorts: ordering is the third control in the toolbar, offering "Name (A–Z)", "Name (Z–A)", "Category", "Status" and "Condition". The status filter beside it reads All Status in its default position, then Available, Loaned, Maintenance and Retired. ##### Categories, statuses and condition Three separate vocabularies do three separate things, and mixing them up is the commonest confusion on this screen. ###### Category: what kind of thing it is Six fixed categories, each with its own pill colour: Cleaning, Electrical, Access, Safety, Tools and Other. Cleaning is preselected on the add form. The strip above the table filters on these plus "All". Category is a sorting aid and nothing more: nothing in the app behaves differently because a machine is Electrical rather than Tools. ###### Status: where it is right now (The four statuses on the left and the four condition grades on the right. Status changes constantly; condition changes when something happens to the machine.) Status moves on its own as you loan and return. Maintenance and Retired are set by hand from the detail sheet, and an item in either gets no action button in its hero: you cannot loan out a machine that is away being fixed. ###### Condition: how worn it is Four grades, Excellent, Good, Fair and Poor, with Good as the default on a new record. Beneath the grade sits a free-text Condition notes field, and that is the field that does the real work. "Excellent" tells you nothing in six months. "Cable repaired Aug 26, watch the strain relief" tells you everything. > Downgrade the condition at the moment you notice, not at the moment you get round to it. Condition is one of the five sort orders, so a register sorted by condition is a repair list you did not have to write. ##### Who has it, not where it is This is the important correction on this screen. Equipment is assigned to a person, not to a site. There is no location field on an equipment record and no way to say "the rotary lives at Bay View Offices". The Assigned To column holds the name of the cleaner who currently has it out, and an em dash when nobody does. In practice that is usually the answer you actually wanted, because a machine is wherever the person holding it is working today. If you genuinely keep a machine permanently at one site, the honest options are to put the site in the machine name, or to put it in the condition notes. (The Loan Out drawer. The only required field is the cleaner: the expected return date and the notes are both optional, and the submit button stays disabled until the roster has loaded.) The cleaner list holds active cleaners only, alphabetically. Once loaned, the item's status flips to Loaned, the row shows the borrower, and the action button becomes Mark Returned. If the write half-fails, the loan row is deleted again rather than left behind, so a machine can never end up double-loaned. A cleaner can ask to hand something back from their phone. That marks the loan as return requested, and three things change: an amber banner appears at the top of the screen counting the items pending return, a small Return requested flag appears under the Loaned pill, and the action button becomes the urgent Confirm Return. That banner is the only warning banner on this page. ##### What one equipment record holds Add Equipment opens a drawer subtitled "Track a new piece of equipment", in four sections. The detail sheet afterwards shows the same fields as a four-cell grid, each reading an em dash when it is empty. (Adding a machine. Purchase date, replacement cost and warranty expiry are stored and displayed, and nothing in the app ever compares them against today.) The photo is worth doing. A picture of the machine with its rating plate visible settles most arguments about which of three near-identical vacuums came back damaged, and the thumbnail then appears beside the name in the register. Anything over 5 MB is refused outright with "That photo is larger than 5 MB. Choose a smaller image." ##### Maintenance is a log, not a schedule Open an item and there are three tabs: Details, Loans and Maintenance. It matters to be exact about what the last one is. Maintenance is a historical record of things that have already been done. There is no service interval, no next-service-due date, no reminder, and no notification. Nothing anywhere in CleanFlo compares a warranty expiry or a purchase date against today, so a warranty running out next Tuesday produces no warning of any kind. If you need reminding, that reminder has to live in your calendar, not here. (The Maintenance tab. Add Entry opens an inline form prefilled with today; entries list newest first with the date, who did it and what it cost.) The add form has four fields: Date and Description are required, Cost (£, optional) and Performed by (optional) are not. Save it and the toast reads "Maintenance entry added". With nothing recorded, the tab shows "No maintenance records yet." > CleanFlo does not track PAT testing as a feature and will not tell you when a test is due. What it will do is hold the evidence: log each test as a maintenance entry with the date, the tester and the cost, and the record is there when an insurer or a client's facilities manager asks for it. The obligation to keep electrical equipment safe under the Electricity at Work Regulations 1989 sits with you either way. The Loans tab beside it is the assignment history: one entry per loan with an Active or Returned chip, the borrower, and a composed line reading the loan date, then the due date, then the return date. Newest first. That tab is what you read when a machine comes back broken and you need to know who had it last. ##### Exporting the register A ghost Export CSV button sits beside the pager and writes equipment.csv with six headers: Name, Category, Serial Number, Condition, Status, Assigned To. A missing serial or borrower exports as an empty cell rather than a dash. That file is the closest thing CleanFlo produces to an asset register for an insurance schedule. It does not carry the replacement cost, so if that is what you are after, the figure lives on each item's Details tab and has to be read from there. > Unlike Inventory, the Equipment export button stays clickable when the filters match nothing. Press it on an empty register and you get an empty file and a toast reading "Exported 0 items". > Equipment answers who has it and what state it is in. It does not answer when it is next due a service, because that concept does not exist in the product. Keep the condition grade honest and log every repair, and the register earns its place. **FAQs** Q: Can I assign a machine to a site rather than a person? A: No. An equipment record has no location field, and a loan is always to a cleaner. The Assigned To column shows the borrower or an em dash. If a machine genuinely lives at one site, put the site in the machine name so it sorts and searches sensibly. Q: Will CleanFlo remind me when a service or a warranty is due? A: No. Purchase date and warranty expiry are stored and displayed, and nothing compares them against today. There is no service-due, maintenance-due or warranty-expiry warning anywhere on the screen. The only banner on the page counts items a cleaner has asked to return. Q: Can a cleaner see what they have on loan? A: Yes. Their Me tab in the cleaner app has an Equipment row with a count badge, reading "3 items on loan" or "Nothing on loan". They can ask to hand something back from there, which is what puts the item into the pending returns banner on your side. Q: What is the difference between Retired and deleting an item? A: Retired keeps the record, its loan history and its maintenance log, and simply takes the machine out of circulation: it can no longer be loaned. Deleting removes all of it, and the confirm says so. Retire anything you have disposed of, and delete only records created in error. URL: https://cleanflo.io/help/equipment/ --- #### Vehicles and the daily check The Vehicles register tracks your fleet: MOT, tax and insurance dates, who has the keys, a daily walk-around check filed from the cleaner app, defects, damage and service history. A van is a legal liability with an engine. Vehicles answers the questions that matter for one: is it taxed and MOT’d, who currently has it, has anyone checked it over today, and what has gone wrong with it. It never claims a vehicle is roadworthy, only what is recorded, and when. Vehicles is a company-level module, off by default for a company with no vans and on by default for everyone, the same switch every other optional subsystem in CleanFlo uses (Modules). Turning it off hides the screen and the cleaner app’s My Vehicle row entirely; nothing recorded is deleted, and switching it back on restores the register exactly as it was left. ##### The register The page is titled Vehicles, with one action, Add vehicle. Four figures sit under the title and double as filters: how many vehicles are on the register, how many are active, how many are off road, and how many have an expiry due or overdue. Tap any tile to narrow the table to it. (The Vehicle Register. The Expiries column shows the worst of a vehicle’s three tracked dates (MOT, tax, insurance) as a single chip, so a van with one expiry due reads as due even while the other two are fine.) The search box matches registration, make, model or the name of anyone currently assigned, so typing a driver’s name finds their van as readily as typing the plate. A registration is stored uppercase with the spaces stripped, so ln21 xyz and LN21XYZ are the same vehicle and the register refuses to hold the same plate twice. ##### Adding a vehicle (Adding a vehicle. Everything past the registration is optional: a van can go on the register today and have its MOT date filled in once you have it to hand.) Body type is Van, Car, Pickup, Trailer or Other; fuel type is Diesel, Petrol, Electric, Hybrid or Plug-in hybrid. Neither drives anything else in the product: they are there to sort and search the register, the same way Equipment’s category is a label and nothing more. ##### Who has it, and it can be more than one person Open a vehicle and its Assignment tab shows everyone who currently has it. A vehicle can carry a named keeper (the answer to “who was driving” when a PCN letter arrives three weeks later naming a date) and any number of other people alongside them, for a pool van the depot shares. The one rule the database enforces is the exclusive one: a vehicle can have at most one keeper at a time. Nothing caps how many other people are assigned, and nothing caps how many vehicles one person is assigned to. (The Assignment tab. Sarah is the named keeper; Arun is assigned too, without displacing her. Assigning a new person never silently ends anyone else’s assignment. That used to happen by accident, and the “Make primary keeper” switch is the one deliberate way to hand the keeper role over.) Ending someone’s assignment is its own button on their own row, so unassigning Arun never touches Sarah’s. Every assignment that has ever ended stays on the vehicle’s history: nothing is deleted, because the history is what answers a question about a date in the past. > A cleaner’s own Me tab shows every vehicle currently assigned to them, not just one. Someone who is the keeper of one van and also helps out with a second pool vehicle sees both, each with its own check and defect actions. ##### MOT, tax and insurance Three dates, each shown as a chip that reads In date, Due soon (within 14 days), Overdue, or Not on file when nothing has been entered. The wording is deliberate everywhere it appears: a screen says MOT recorded as expiring in 9 days, never this vehicle is legal. Nothing in CleanFlo can know that: the date on screen is only ever what somebody typed in, and it is wrong the moment a real MOT slips without the record being updated to match. > Nothing emails you before an MOT, tax disc or insurance policy runs out yet. The dates are recorded and shown (on the register, on the vehicle’s own page, and on the cleaner’s Me tab), but there is no reminder sent ahead of the date, the way there is for a contract renewal. Keep your own diary reminder until that ships. ##### The walk-around check A daily DVSA-style walk-around, filed from the cleaner app rather than by an office. Sixteen items grouped into Exterior, Tyres & wheels, Glass & visibility, Inside the cab, Load area and Fluids: lights, tyre tread, mirrors, the horn, warning lights on the dash, whether the load is secure, and so on. Each is marked Pass, Fail or N/A. Marking anything a Fail asks two more things there and then: a one-line note on what is wrong, and whether the van can still be driven: Yes, but it needs fixing or No, it should not be driven. The check’s own overall result is never typed in by the driver; it is worked out from the worst answer given. One item marked “should not be driven” makes the whole check read that way, even if every other item passed. (The Me tab gains a Vehicles row once the module is on, reading the vehicle’s make and model directly, or a count, for a driver assigned to more than one.) Filing a check does not stop a shift. There is no lock-out: a company can require checks in principle, but a driver who has not yet filed one today can still clock in: a cleaner stranded outside a client’s house unable to start work is a worse failure than a van driven with an unchecked wing mirror. A check marked should not be driven raises an alert to the owner and flags the vehicle, rather than physically stopping anyone. Like every other write in the cleaner app, a check queues through the offline outbox. Filed in a basement car park with no signal, it sends itself the moment the phone reconnects, in the same order it was filed. The whole screen is translated into all 27 of the cleaner app’s languages. ##### Defects and damage are two different things A defect is a fault: a note, a severity, and eventually a rectification. Most come off a walk-around check, but a driver can also report one mid-shift without waiting for the next morning’s check. A damage report is an event: a date, a location, a description, and room for a third party, an insurer and a claim reference once one exists. The two are kept apart on purpose: a scuffed bumper that will never be booked in for a repair is still worth recording as damage, without CleanFlo inventing a fault ticket that will sit open forever. Every defect is visible to the whole company, not just the owner: the point of filing one is that somebody else reads it. Marking one rectified is an owner action, from the vehicle’s own Defects & damage tab. ##### Service history A plain log, in the same spirit as Equipment’s Maintenance tab: date, kind (Service, Repair, MOT, Tyres or Other), odometer reading, what was done, who did it, and the cost. Logging a service with an odometer reading higher than the one already on file moves the vehicle’s own recorded odometer forward automatically: the figure on the register always comes from a real event, a check or a service, rather than being typed in by hand and left to drift. > There is no service-due date and no reminder here either, the same honest gap Equipment’s maintenance log has always had. Log what has already happened; keep the next-service date in your own diary. ##### What Vehicles does not do It is not a running-cost ledger. Fuel, insurance premiums and repair invoices are not recorded against a vehicle here: that is business expense tracking, a separate part of CleanFlo, and a vehicle’s service cost field is what was quoted for the work, not a receipt. It does not book an MOT, does not hold an operator’s licence, and does not do anything a tachograph would: CleanFlo assumes vans and cars, not HGVs. **FAQs** Q: Can two people be assigned to the same van? A: Yes. A vehicle can have one named keeper plus any number of other people assigned alongside them, and a person can be assigned to more than one vehicle at once. The only limit is one keeper per vehicle at a time. Q: Does CleanFlo warn me before an MOT or tax runs out? A: Not yet. The dates are recorded and shown as a due-soon or overdue chip wherever the vehicle appears, but no reminder email is sent ahead of the date. Keep your own reminder until that ships. Q: Does a failed walk-around check stop the driver clocking in? A: No. Filing a check is encouraged, not enforced with a lock-out, because a cleaner unable to start a clean at all is worse than one driving with an unrepaired minor defect. A check marked “should not be driven” does raise an alert to the owner. Q: What is the difference between a defect and a damage report? A: A defect is a fault: something wrong with the van, tracked through to a rectification. A damage report is an event (a collision, a scrape, a claim) and can exist on its own even when nothing was actually broken. Q: Can I turn Vehicles off if I do not run any vans? A: Yes, from Modules, under Account in the sidebar. It hides the screen and the cleaner app’s vehicle row; nothing already recorded is deleted, and switching it back on restores everything exactly as it was. URL: https://cleanflo.io/help/vehicles/ ### Health & safety #### Writing a risk assessment How to build a hazard register in CleanFlo: the 5×5 likelihood and severity matrix, the two scores every hazard carries, the review date, and printing the A4 document for a client. A risk assessment is the first document a commercial client asks for and the first one an inspector asks for. CleanFlo writes it as a hazard register: one row per hazard, scored before your controls and again after them. Most cleaning contracts of any size are lost on paperwork rather than on price. A facilities manager asks for your RAMS, you send a Word file somebody adapted from a template in 2019, and it names a site you no longer clean. The assessment in CleanFlo is built so that the version you hand over is the version that is live, carries a reference number, and shows its own working. Everything here is on Health & Safety, under the Risk Assessments tab. Writing one opens a full page rather than a drawer, because a register with eight hazards in it does not fit in a drawer, and because you will be in it for twenty minutes rather than twenty seconds. ##### Where assessments live The Health & Safety screen has four tabs: Incidents, Audits, Risk Assessments and Documents. The tab you are on decides the one button in the top right, so on this tab it reads New Assessment. A red count on the tab is the number of live assessments still sitting at High or Critical residual risk. (The Risk Assessments tab. Every row carries its reference, its hazard count and its worst residual risk, which is the figure a client actually reads.) - Assessment: The reference and the assessment date on one line, the title beneath. References are allocated by the server, so two people writing at once cannot collide. - Location: Free text. The site the assessment covers, or a dash if you left it blank. - Assessed By: Free text, whoever walked the site and wrote it. Not a staff record. - Hazards: How many rows the register holds. Right aligned, because you scan it. - Residual Risk: The worst residual score across the whole register, with its band. An assessment whose hazards were never scored shows an empty cell here rather than a band. - Status: Draft, Active, Under Review or Archived. - Actions: Open, though the whole row is clickable. The list pages at ten rows and has an Export CSV button beside the pager. That writes risk-assessments.csv with the columns Ref, Date, Title, Location, Assessed By, Hazards and Status: enough for a tender spreadsheet, not the assessments themselves. ##### The details at the top New Assessment opens a page headed New Risk Assessment, with a card called Assessment Details above the register. Only the title and the assessment date are required. Everything else is there because a client reading the printed document will look for it. (The Assessment Details card. The status you choose here decides whether the assessment is judged by your compliance score at all.) - Title: Required. Name the work, not the client, so the same assessment can cover three sites doing the same clean. - Location / Site: The site or building. Free text, and it prints in the header. - Assessed by: The person who did the assessing. It prints, and inspectors read it. - Assessment date: Required, and defaults to today. - Review date: Optional, and the one field people skip. Leave it blank and nothing chases you. Set it and CleanFlo starts counting. - Status: Draft while you write it, Active once it is adopted, Under Review while it is being reworked, Archived when the work has stopped. New assessments default to Active. - Scope / general notes: Prints as a block headed Scope & Notes above the hazards. Use it for what the clean is, where it stops, and which regulations you are working to. > Status is not decoration. Only Active and Under Review assessments are judged by the compliance score. A draft has not been adopted yet and an archive was deliberately retired, so neither describes how you work today and neither costs you points. ##### One row per hazard Below the details is the Hazard Register. Each hazard is a collapsible row, numbered, with the two scores shown on the right of its header so you can see the whole register at a glance without opening anything. Add hazard at the foot adds another. (One hazard, expanded. The two bordered blocks are Initial Risk and Residual Risk (after controls), and the control measures field sits deliberately between them.) - Hazard description: Required on every row. Describe the thing that can hurt somebody, not the accident. "Wet floor surface after mopping", not "somebody slips". - Category: Twelve options: Biological, Chemical, Electrical, Ergonomic, Fire, General, Machinery & Equipment, Manual Handling, Noise, Physical, Slips, Trips & Falls, and Working at Height. General is the default. - Who is affected?: Your cleaners are the obvious answer and rarely the whole one. Building occupants, contractors, the public, and on a medical site the patients. - Existing controls already in place: What you already do. This is what makes the initial score defensible rather than theatrical. - Initial Risk: Likelihood and severity as things stand, each 1 to 5. - Additional control measures required: The changes you are committing to. Sits between the two scores because it is the reason the second one is lower. - Residual Risk (after controls): Likelihood and severity once those measures are in place. A new hazard row arrives pre-set at 3 and 3 for the initial risk and 2 and 2 for the residual. Those are starting positions, not a recommendation. Every rating is five numbered buttons with the word underneath, and an unrated one reads Not rated. ##### The 5×5 matrix The score is the product of two numbers and nothing else: likelihood × severity, giving 1 to 25. The sidebar of the form states it in one line, "Score = Likelihood × Severity (1–25). Rate initial risk before controls, then residual risk after." Likelihood | The word CleanFlo uses | What it means on a clean 1 | Rare | You cannot recall it happening, and would be surprised if it did. 2 | Unlikely | Possible in principle. Not in the last few years. 3 | Possible | It has happened somewhere, to somebody, and could happen here. 4 | Likely | It will happen on this clean sooner or later unless something changes. 5 | Almost Certain | It happens routinely. Expect it this month. Severity | The word CleanFlo uses | What it means if it does happen 1 | Negligible | No injury, or nothing worth writing down. 2 | Minor | First aid on site. Back to work the same day. 3 | Moderate | Medical treatment, or time off work. 4 | Major | Serious injury, a long absence, or permanent harm. 5 | Catastrophic | A fatality, or several people seriously hurt. Multiply the two and the answer falls into one of four bands. These are the bands the whole product uses: the badge on the row, the colour of the matrix cell, the banner on the detail page, the box on the printed document, and the arithmetic behind your compliance score all read from the same table. Band | Score | What it says about the clean Low | 1–4 | Managed. Keep doing what you are doing. Medium | 5–9 | Acceptable with the controls named, and worth reviewing. High | 10–16 | Not acceptable as a residual. More control is needed. Critical | 17–25 | Stop and rethink the method before anyone goes on site. (The matrix from the Risk Guide sidebar, with one hazard plotted twice: 1 is the initial score of 16, 2 is the residual score of 6 once the controls are in. Moving down and to the left is the entire point of the document.) Read it the way the app labels it. The caption above the grid is literally ← Severity and the one below is Likelihood →, so severity climbs the left-hand edge from 1 at the bottom to 5 at the top, and likelihood runs left to right along the foot. Every cell shows its own product, and hovering one gives you the full sum, for example L4 × S5 = 20 (Critical). ##### Why you score the same hazard twice The initial score is the honest one. It is what the hazard is worth with only the things you already do standing in the way of it. Most people flinch at writing 16 or 20 in that box, and then write 6 instead, and in doing so throw away the only number that makes the rest of the document mean anything. The residual score is the claim. It says that with the specific measures written in the box above it, this hazard is now worth 6 rather than 16. The gap between the two numbers is your argument that your controls work, and the control measures field is the evidence for it. A client comparing three contractors is not reading your residual scores in isolation. They are reading the distance travelled and what you wrote in the middle. Which is why an assessment where every hazard scores 16 before and 15 after is worse than useless: it says you have looked at the clean and can do almost nothing about it. And an assessment where everything is 2 before and 2 after says you never looked. (The register summarised. The pair of scores per hazard is what the header row of each hazard shows while you edit, and what the printed document shows as two blocks with an arrow between them.) > Score the hazard as it really is, then score it again as it will be once you have done the things you have just written down. The residual number is not a softer version of the first one. It is a promise, and the control measures field is what you are promising to do. ##### "Not scored" is not the same as low risk A rating can be missing. A hazard imported from an older system, or a row somebody added and never came back to, has no likelihood or no severity, and there is no product to calculate. CleanFlo shows that as a grey chip reading Not scored, and it means exactly that: nobody has made a judgement about this hazard yet. It is deliberately not treated as 1, which would be a claim nobody made, and deliberately not treated as Critical, which is what naive arithmetic does with a missing number. An unscored hazard is skipped when CleanFlo works out the worst risk in the register, and it contributes nothing to your compliance score in either direction. An assessment whose hazards are all unscored has no overall residual risk at all, which is a different statement from "its risk is low". (The five states a risk badge can be in. The grey one is the absence of a score, not a fifth band, and it appears everywhere a score would: the row header, the detail page and the printed A4.) > A grey chip on a printed assessment is the one thing an inspector will circle. It is not a scoring error, it is a gap in the assessment, and the fix is thirty seconds in the editor. Open the hazard and press a number on both scales. ##### Overall residual risk, and the review date An assessment does not have an average risk. It has a worst one. CleanFlo takes the highest residual score in the register and bands that, which is why one Critical hazard among twelve Low ones makes the whole assessment Critical. That is the right behaviour: a client is not exposed to your average hazard. You see that figure in three places. In the Residual Risk column of the list. In a tinted banner on the detail page labelled Overall Residual Risk with the band word beside a warning diamond. And in a bordered box on the printed document with the same label, the number, and the band. While you are editing, the header of the Hazard Register shows Highest risk: with the worst initial badge, an arrow, and the worst residual badge. The Review date is what stops the document going stale. It is optional, and CleanFlo is honest about the consequence: an assessment with no review date set is never counted as overdue, because there is nothing to be late for. Set one and the day after it passes, that assessment starts costing you points under Assessments past review on your compliance score, two points each, until you either review it or move the date. > Under the Management of Health and Safety at Work Regulations 1999 every employer must assess the risks to employees and to anyone else affected by the work. If you have five or more employees you must record the significant findings, which is what this register is. There is no legal renewal interval: the duty is to review when there is reason to think it is no longer valid, or when the work changes.,In practice, commercial clients and framework buyers ask for an assessment dated within the last twelve months, so an annual review date is the usual setting, with an earlier one on anything involving work at height, confined spaces or a change of chemical. ##### Printing it for a client Open the assessment and the detail page has three buttons: Print, Edit and Delete. Print builds a standalone A4 document in a new window and sends it straight to your printer dialogue, from where every browser can save it as PDF. There is no template to choose and no options to set. If nothing happens, your browser has blocked the pop-up, and CleanFlo says so. (The head of the printed A4. The reference, the title, the five meta fields and the overall residual risk box, which only prints when something in the register has actually been scored.) (One hazard card from the printed document. Every rating prints as its word and its number out of five, and the two score blocks sit either side of an arrow at the top right.) The document ends with a footer carrying the date it was generated and the assessment title, so a printed copy on a client desk can be dated at a glance. An assessment with no hazards in it prints the line "No hazards have been recorded for this assessment." rather than an empty page, which is embarrassing but honest. The other half of RAMS lives on this same page. Scroll past the hazard cards and there is a Method Statement panel: there is no separate Method Statement tab. One statement belongs to one assessment, because a method statement only means anything alongside the hazards it answers, and clients ask for the pair. If the assessment has none yet, the panel offers Write the method statement. > Deleting an assessment removes every hazard row with it and cannot be undone, so CleanFlo asks first and names the reference in the question. If the work has simply stopped, set the status to Archived instead: the document stays readable and printable, and stops being counted by your compliance score. **FAQs** Q: Do I need a separate risk assessment for every site? A: No, and you generally should not. Assess the work, not the address: one "Commercial kitchen deep clean" assessment can cover every kitchen you clean the same way. Write a site-specific one when a site genuinely differs, for example a first-floor plant room with a fixed ladder, or a location with a client-imposed permit system. Q: Can my cleaners see the risk assessment on their phones? A: The risk assessment itself is a web-app document. What the cleaner app carries is the clean, its checklist and its notes, so the practical route is to put the control measures that matter into the clean instructions the cleaner actually opens on site, and to hand the printed RAMS to the site as part of the paperwork. Q: Why did my old assessment come up as Critical when I imported it? A: It should not any more. A hazard with a missing likelihood or severity now bands as Not scored rather than falling through to Critical, and it is skipped when the worst risk in the register is worked out. If you are still seeing an unexpected band, open the assessment and check whether a hazard is showing the grey chip. Q: Does changing the residual score change my compliance score straight away? A: Yes. The compliance score is recalculated from your live records every time the Health & Safety screen and the dashboard load. An active assessment whose worst residual risk is 10 or above costs four points, or eight if it is 17 or above, so pulling a hazard out of the High band with a real control measure shows up immediately. URL: https://cleanflo.io/help/risk-assessments/ --- #### Logging an incident Something went wrong on site and it needs writing down while it is fresh. The Log incident form, the four severities, and why an open incident keeps pulling your score down. Something happens on a clean, and the record you make of it in the next hour is worth more than anything you can reconstruct three months later. This is how CleanFlo takes that record. An incident in CleanFlo is any event on a clean worth writing down: a slip, a spill, a piece of equipment that failed, a cleaner who went on site without the right gloves, or a near miss that hurt nobody at all. The near misses are the ones people skip, and they are the cheapest safety information a cleaning business will ever get. Everything lives on Health & Safety, on the Incidents tab, which is the tab the screen opens on. The button in the top right is red and reads Log incident. > If somebody was hurt, the record goes further than this guide. It becomes an accident book entry: the injury, where on the body, the treatment, the time off, and whether the Health and Safety Executive has to be told. That is the Accident book tab, and it has its own guide. ##### The Incidents tab The list is one row per incident, newest first. Rows are tinted by status, so an open incident is tinted red and one under review is tinted amber before you have read a word of it. An amber count on the tab itself is the number still needing review, which is open plus under review added together. (The Incidents tab. The Incident cell carries the reference and the date it happened, with the type underneath. The two coloured rows at the top are the ones that are not finished with.) - Incident: The reference and the date it happened on one line, the incident type beneath. References are allocated by the server when you log it. - Severity: A pill: Low, Medium, High or Critical. - Location: Free text, whatever you typed on the form. A dash if you left it blank. - Staff: Who was involved, again as free text rather than a link to a staff record. - Status: A pill: Open, Under Review or Closed. - Actions: View, which opens the detail drawer. The whole row does the same. The search box beside the tabs reads Search incidents… and matches on the reference, the type, the location and the staff name. The list pages at ten, and Export CSV writes incidents.csv with the columns Ref, Date, Type, Severity, Location, Staff and Status. It exports what you are looking at, so a search filters the file too. A brand new account has nothing here, and the empty state says so without treating it as a problem. It is worth reading once, because it is the clearest statement of what this tab is for. (The Incidents tab before you have logged anything. Searching for something that does not exist gives you a different empty state, with the term you typed quoted back and a Clear search button.) ##### The Log incident form The button opens a drawer headed Log incident, subtitled "Record a new health & safety incident". Three sections, and only one field is genuinely required. (The Log incident drawer. Date and time defaults to right now, which is correct if you are logging it as it happens and wrong if you are catching up on Friday, so check it.) - Incident type: Nine options, in this order: Slip & Fall, Chemical Spill, Equipment Failure, Near Miss, Injury, Fire / Smoke, PPE Breach, Electrical Hazard, Other. Slip & Fall is the default, so change it. - Severity: Low, Medium, High or Critical. Defaults to Low. This is the field that decides what the incident costs your compliance score. - Status: Only appears when you are editing an existing incident. A new one is always logged as Open. - Date & time: Required, and defaults to the moment you opened the form. It is the time the incident happened, not the time you typed it up. - Location: Free text. Be specific enough to find the spot again: "main corridor, outside room 4", not just the building. - Staff involved: Full names. More than one is fine. - Description: The only required field. What happened. - Actions taken: What you did about it in the moment. Submit with nothing in the description and the form refuses, with the message "Please describe what happened." Everything else can be filled in later from the detail drawer. > Logging a new incident also emails a copy of the report to the account you are signed in as, and pushes a notification to the company. You will see the toast Incident report emailed to you. If the email fails, the incident is still saved and CleanFlo says so rather than pretending the whole thing failed. ##### What to actually write The description is the field that will still be read in two years, possibly by somebody with no reason to believe you. Write it in the past tense, name the place, and stop at what you know. "Wet floor sign was at the reception end but not the clinic end" is a fact. "Aisha was not paying attention" is an opinion, and it is the sort of opinion that reads badly when it is quoted back at you. - What was being done at the moment it happened, not just what happened. - Where exactly, to a room or a stretch of corridor. - Who was there, including anyone who was not your staff. - What was in place already: signs, gloves, guards, the dilution used. - What the outcome was, including "no injury" when there was none. A near miss with no injury still needs the sentence saying so. Actions taken is the other half, and it is the one that protects you. It is the record that you did something within minutes rather than at the next monthly meeting. First aid given, area closed, equipment taken out of service, client informed, method changed. If the action was "none", say that too, and say why. > Do not put a diagnosis in the description. "Aisha reported pain in her right wrist and was taken to the walk-in centre" is a record. "Aisha sprained her wrist" is a medical opinion you are not qualified to give and may turn out to be wrong. ##### Choosing the severity Four levels, and they are not decoration. Severity is one of the three numbers that decide how much an unresolved incident takes off your compliance score, so an honestly graded Critical costs five times what a Low does, and a business that grades everything Low is lying to its own dashboard. Severity | Use it for | Points at full weight Low | A near miss, a minor PPE lapse, a spill cleared with no harm done. | 2 Medium | First aid on site, minor damage, a chemical contact with no lasting effect. | 4 High | An injury needing treatment or time off, a significant chemical or electrical event. | 7 Critical | A serious injury, a fire, or anything that could easily have killed somebody. | 10 High and Critical do one other thing: they reset the Days Injury Free figure on the stat row above the tabs. That card counts whole days since the most recent high or critical incident, and where a business has never logged one it counts from the day the company record was created and says "No high or critical incident on record" underneath. (The two vocabularies. Severity says how bad it was, status says how far you have got with it. They are independent: a Low incident can sit open for months and a Critical one can be closed the same afternoon.) ##### From open to closed Every new incident is Open. Opening one from the list gives you a drawer headed with its reference and its type, with the severity and status pills, the location, the staff involved, the date, and the two blocks you wrote: What happened and Actions taken. (The incident detail drawer. Mark under review only appears while the incident is Open, and both buttons disappear once it is Closed.) - Open: Logged, nobody has picked it up. Counts at full weight against your compliance score. - Under Review: Somebody is actively working on it. Still counts, but at 60 per cent of the weight, because being investigated is genuinely better than being ignored. - Closed: Finished with. Drops out of the compliance sum entirely and out of the Open Incidents card. Mark under review is offered only while the incident is Open. Close incident is offered until it is closed. Both are one click with no form, and both are reversible: Edit Details reopens the full form with a Status select added, so an incident closed too early can be put back to Open. (Edit Incident. The Status select sits beside Severity and exists only here, which is why a new incident is always logged as Open: there is nothing else it could honestly be at the moment you write it down.) Everything the status change does is immediate. The pill on the row changes, the row tint changes, the Open Incidents card recounts, the amber badge on the tab recounts, and the compliance score is recalculated the next time either the Health & Safety screen or the dashboard loads. There is no nightly clean and no "apply" step. > Close an incident when the action is finished, not when the paperwork is tidy. If you have changed a method, replaced a machine or retrained somebody, close it. If it is still sitting on a list of things to do, leave it open, because that is what the score is measuring. ##### What an open incident costs you Your compliance score starts at 100 and things come off it. Unresolved incidents are the largest of the four categories that can take points, capped at 35, and each one is worked out from three multiplied numbers. - Severity, which sets the base: 10 for Critical, 7 for High, 4 for Medium, 2 for Low. - Status, which scales it: an Open incident counts at full weight, one Under Review at 0.6. A Closed one is not in the sum at all. - Age, which fades it: full weight within 30 days, 0.6 within three months, 0.3 within a year, and 0.15 after that. It never reaches zero, because an open record is still open. So the Medium incident logged this morning and still Open costs 4 × 1 × 1, which is 4 points. The High one from five days ago that somebody is reviewing costs 7 × 0.6 × 1, which is 4.2. A Low near miss left open for two years costs 2 × 1 × 0.15, which is 0.3: still there, still visible, no longer dominating the number. (The Unresolved incidents row of the score breakdown, opened. CleanFlo names every deduction, the record it came from and the reason, so the whole sum can be read back to a client.) The cap matters as much as the arithmetic. Twenty open low-severity incidents cannot take your score below 65 on their own, because this category stops at 35 points and CleanFlo tells you it has stopped: "Capped at 35 points for this category", with the number of points it declined to deduct. There is always a route back. ##### Your own reporting duty This is the part to be clear about. CleanFlo does not report anything to the Health and Safety Executive. There is no RIDDOR field on the form, no RIDDOR flag on the record, and no submission of any kind. Logging an incident here creates your internal record and emails you a copy. That is all it does, and it is deliberately all it claims to do. > Reporting under RIDDOR is your duty and it is separate from anything in this app. If an incident is reportable, you report it yourself through the HSE, to the HSE deadline. Nothing you do on this screen starts that clock or stops it. > A written record made at the time is worth more than any recollection, and in this country you may need it for three separate reasons. An employee has three years from the date of the accident to bring a personal injury claim under the Limitation Act 1980, by which point nobody remembers where the sign was. If you have ten or more employees you must keep an accident book under the Social Security (Claims and Payments) Regulations 1979. And where an incident is reportable under RIDDOR 2013 you must keep a record of it for at least three years.,For a cleaning contractor there is a fourth reason, and it is the commercial one. Facilities managers ask to see your incident history at tender and at contract review. A short, dated, dispassionate record with an action against it reads as a company that manages its work. A gap reads as a company that does not write things down, which is the same thing as a company nothing ever happens to, which nobody believes. Deleting an incident is possible from the drawer, under a danger heading, and CleanFlo names the reference in the confirmation and says it cannot be undone. Think hard before you use it. Correcting a record is what Edit Details is for, and a corrected record is defensible in a way that a missing one never is. **FAQs** Q: Can my cleaners log an incident from their phones? A: Not directly. The cleaner app carries cleans, checklists, photos and messages, and incidents are logged on the web app by whoever is managing. In practice the cleaner messages or rings you, and you log it, which is also how you end up with one consistent voice in the record rather than nine. Q: Does CleanFlo report to the HSE for me? A: No. There is no RIDDOR feature in CleanFlo at all. It keeps your own record and emails you a copy of the report when you log one. Deciding whether an incident is reportable, and reporting it to the HSE within the RIDDOR deadline, remains entirely your responsibility. Q: Why is my compliance score still down after I closed everything? A: Closed incidents drop out of the sum immediately, so the remaining points are coming from one of the other three categories: an overdue audit, an active risk assessment still carrying High or Critical residual risk, or an assessment whose review date has passed. Open Show working on the compliance card and it will name the records. Q: Should I log near misses? A: Yes, and grade them Low. A near miss costs two points at full weight and fades to almost nothing once it is closed, so the cost of recording one is negligible next to what it tells you. A pattern of near misses at one site is the cheapest warning you will ever get about that site. URL: https://cleanflo.io/help/incidents/ --- #### The accident book and RIDDOR Recording an injury properly, what RIDDOR asks of you, and how CleanFlo works out whether a report is due and by when. It never files that report for you. Somebody gets hurt on a clean. There is what you do in the next ten minutes, and there is what the law asks of you in the next ten days. This is the second one. An accident book entry is an incident that records somebody being hurt. It is the same record as any other incident, filled in further: who was hurt, what the injury was, where on their body, what was done about it and how long they were off. CleanFlo reads all of that and tells you whether the Health and Safety Executive has to be told. > CleanFlo does not report anything to the HSE, and it has not reported anything on your behalf. It works out whether a report is due and by when, and gives you somewhere to write down what you filed. Reporting is your duty as the employer and it stays yours. ##### Reporting it from site A cleaner opens Report something from the More menu, or from the job they are on, and picks Someone was hurt. That third option is what opens the injury questions; the other two are the near miss and the everything else. They tap where it happened on a drawing of a body, front or back, and can tap more than one place, because a fall usually takes two. Everything they tap is also a plain list underneath the drawing, ticked or unticked, for anybody who finds the list easier or is using a screen reader. The two are the same answer shown twice. > The only field that stops the report being sent is what happened. Everything else can be left blank. Somebody who has just been hurt should be able to type six words and press send, and the office can fill in the rest afterwards. It works with no signal. The report, the photographs and the witnesses are held on the phone and go up in order when the phone next has a connection, so a basement is not a reason for an accident to go unrecorded. The person filing does not have to be the person who was hurt. There is a Somebody else option that asks for a name and whether they are a contractor, a client or a member of the public. That last answer is not a label: it is what decides whether a trip to hospital is reportable at all. ##### What the office adds On the day of an accident nobody knows how long somebody will be off, so the field report does not ask. The office fills the rest in later, on the Accident book tab, from the incident itself. - Treatment: None, first aid on site, a GP, hospital, or the person died. Separate from it is a tick for whether they were taken from the scene to hospital, because somebody who went the next day of their own accord is a different case in law from somebody carried out of the building. - Time off: The first day off and the last. Leave the last one empty while they are still off: CleanFlo counts it every night and tells you the day it crosses the line. - Disease: One of the eight reportable diseases, with the date you received the written diagnosis. The clock runs from the diagnosis, not from the exposure, which is why the date is asked for separately. - Dangerous occurrence: A tick for the events in Schedule 2: a collapse, an escape of a substance, the failure of lifting equipment. Reportable whether or not anybody was hurt. ##### What RIDDOR says about it One line at the top of the entry, in plain English, saying whether it is reportable, under which heading and by when. You never type any of it. It is worked out from what is recorded, and it changes on its own if what is recorded changes. Heading | When it applies | By when Fatality | Somebody died | Tell them without delay. Report within 10 days Specified injury | One of the injuries named in regulation 4: a fracture other than to fingers, thumbs or toes, an amputation, permanent sight loss, a crush injury to the head or torso, a serious burn, scalping needing hospital treatment, loss of consciousness, or illness from working in an enclosed space | Tell them without delay. Report within 10 days Dangerous occurrence | One of the events in Schedule 2, whether or not anybody was hurt | Tell them without delay. Report within 10 days Non-worker taken to hospital | Somebody who does not work for you, taken from the scene for treatment of that injury | 10 days Occupational disease | One of the eight in regulation 8, once you hold a written diagnosis | 10 days from the diagnosis Over seven day absence | More than seven consecutive days off, not counting the day of the accident | 15 days from the accident > The seven day count is the one people get wrong, so it is worth spelling out. You start counting the day after the accident, not the day itself. You count weekends, rest days and anything else they would normally have off, because it is days of incapacity rather than days of lost work. Exactly seven days is not reportable. Eight is.,An absence of more than three days is a different thing again: recorded rather than reported, under regulation 12(1)(c). CleanFlo says so on the entry rather than saying nothing, because "no report needed" and "nothing to do" are not the same sentence. > An absence that is still running is checked every night. An accident that was not reportable on the Monday becomes reportable the following Tuesday with nobody having touched the record, and you get one notification on the night it crosses. That is the whole reason this runs on a schedule rather than only when somebody opens the page. Once you have filed with the HSE, record it: the date and the reference they gave you. The button says Record that I filed this, and that wording is deliberate. It is a note of what you did, not a submission. ##### Witnesses A cleaner can name whoever saw it, either a colleague from a list or anybody else by typing a name and a number: a caretaker, a client's receptionist, somebody who happened to be in the corridor. The office takes the statement afterwards and types it against the name. > A witness is never shown the injury they witnessed. They cannot see the record in the app, and the email telling them they have been named carries the reference and the date and nothing else: no injury, no part of the body, no treatment, not even who was hurt. Being present when something happened is not a reason to be told somebody else's medical details. ##### Who can see it - You and your supervisors see every entry. - A cleaner sees the entries about them and the ones they filed, in My reports in their own app. Nobody else's. - Somebody who filed a report about a colleague sees what they wrote and not the injury. They were the person filling in the form, not the patient. - A witness sees nothing at all. The injured person is emailed their own entry when it is recorded. It is their information and they should not have to ask for it. ##### Keeping it, and correcting it > Regulation 12 requires an accident book entry kept for at least three years from the date it was made, so CleanFlo will not let anybody delete one. Not a cleaner, not a supervisor, and not you. A near miss with nobody hurt can still be deleted; an entry recording an injury cannot. A report filed by mistake is retracted instead. It stays on file, marked as withdrawn, with the reason you give. The cleaner who filed it still sees it in their own app, marked the same way, which matters more than it sounds: a report that silently disappears teaches somebody not to file the next one. After three years the entry is anonymised rather than deleted. The names go, along with the injury detail, the dates off and the diagnosis date. What stays is the shape of what happened: the kind of injury, the part of the body, the days lost, the treatment. That half is your safety record, and it is worth more to the next person you employ than it is to anybody who could be identified by it. ##### What it does to your score An entry that is reportable, past its deadline and has no report recorded against it spends your whole incidents allowance on its own. That is deliberate. It is the only thing in the compliance score with a legal deadline attached, and closing the incident in CleanFlo does not clear it, because closing something here does not file anything with anybody. URL: https://cleanflo.io/help/accident-book/ --- #### Scheduling and completing audits An audit in CleanFlo is a dated commitment to check something, not a checklist. Here is how to schedule one, how it goes overdue on its own, and what that does to your score. An audit in CleanFlo is a dated commitment to check something, and a record that you did. It is deliberately not a scored form with a pass mark at the bottom. Be clear about what this is before you use it, because it is simpler than most people expect. An audit here is a title, a type, a site, a due date, some notes, and a status. There is no checklist to tick off inside it, no per-item scoring, and no pass or fail. Completing one is a single button. That sounds thin until you have run a cleaning business for a year. The thing that actually goes wrong is not that the PPE check was scored 82 rather than 91. It is that nobody did the PPE check in March, or April, and nobody noticed until a client asked. What CleanFlo tracks is the commitment and whether it was kept, and it makes the not-kept case impossible to miss. > An audit is a dated promise to look at something, and a record that you looked. The content of the check lives in the notes field as your own free text, or as a document in the compliance vault. CleanFlo tracks the date and the outcome of "done or not done", and nothing else. ##### The Audits tab Go to Health & Safety and pick Audits. The button in the top right changes to Schedule audit. The list is ordered by due date, soonest first, and a red count on the tab is the number currently overdue. (The Audits tab. The overdue row is tinted red and its due date is printed red, because a date that has gone past is the only thing on this screen worth reacting to.) - Audit: The title, with the first line of your notes underneath. This is the only place the notes surface without opening the record, so write the first sentence of them for this column. - Type: A tag. One of six, listed below. - Location: Free text: a site, an address, or your own store. - Due Date: The day it is due. Printed red once it has gone past. - Status: Scheduled, In Progress, Completed or Overdue. - Actions: View, which flips to Close on the row you have open. Clicking the row does the same thing. The search box reads Search audits… and matches the title and the location, not the notes. The list pages at ten and Export CSV produces audits.csv with the columns Title, Type, Location, Due Date and Status. Search first and the export follows the search, so you can hand a client a CSV of only the checks that mention their site. Search for something that is not there and CleanFlo quotes your term back at you rather than showing a blank table: "No audits match your search", then the term, then a suggestion to try an audit title or a site, with a Clear search button under it. It is a small thing, but an empty table with no explanation is how people conclude their data has gone. ##### Scheduling one Schedule audit opens a drawer headed Schedule audit, subtitled "Plan a new compliance check". Two fields are required: a title and a due date. The form refuses with "Title is required." or "Due date is required." if either is missing. (The Schedule audit drawer. Audit notes is the field that carries whatever the check actually consists of, because there is no checklist anywhere in this flow.) - Title: Required. Put the site and the interval in it, because the title is what you will be scanning six months from now. - Audit type: Six options, defaulting to Site Inspection. - Due date: Required. The audit is on time for the whole of this day and turns Overdue only once the day is behind it. - Location: Optional free text. A site or an address. - Audit status: Appears only when you are editing an existing audit: Scheduled, In Progress or Completed. A new audit is always Scheduled. - Audit notes: Optional, and in practice the most important field on the form. The placeholder tells you what belongs here: checklist items, assigned inspector, scope notes. > Because there is no checklist feature, the notes field is your checklist. Write it as a list of lines, and it becomes the thing you read off your phone while you walk the site. If the check has a formal form behind it, put the blank form in the compliance vault on the Documents tab and reference it here by name. ##### The six audit types The type is a label. It does not change the form, the fields or the scoring in any way, and it exists so the list can be scanned and the CSV can be grouped. These are the six, verbatim. Type | What a cleaning contractor typically puts here Site Inspection | A walk round a client site, usually with their facilities contact. The default, and the most common. Chemical Safety | Decant bottles labelled, dilution rates correct, COSHH sheets present and matching what is actually on the shelf. Equipment Check | Machines, leads and portable appliance testing. Cable condition on vacuums is the one that catches people out. PPE Audit | Gloves, eye protection, footwear and tabards, per cleaner or per site. Risk Assessment | A scheduled sit-down to re-read your assessments rather than an on-site check. Pairs with the review dates on the assessments themselves. General Compliance | Insurance still in date, training records current, anything that does not fit the other five. ##### Completing one Open an audit and the drawer is headed with its title, with the type underneath as the subtitle. Inside: the status badge, the location, the due date written as Due: and the date, the notes block, and one full-width primary button reading Mark as completed. (The audit detail drawer while the check is still outstanding. One button finishes it. There is no form to fill in first, no score to enter and nothing to pass.) Press it and three things happen at once. The status becomes Completed, a completion timestamp is stored, and CleanFlo confirms with the toast "Audit marked as completed". Reopen the record afterwards and there is an extra green line in the meta reading Completed followed by the date. The Mark as completed button is gone, because there is nothing left to do. The middle status, In Progress, is set from Edit Details rather than from a button. Use it for a multi-day check, or for one you have started and had to leave. It behaves exactly like Scheduled as far as the score is concerned: an In Progress audit past its due date is still overdue. (Edit audit. The Status section exists only on the edit form, and Overdue is not in the list, because Overdue is not something you can choose.) Underneath both of those, in its own danger area, is Delete Audit. CleanFlo asks first, quotes the audit title back in the question and says the deletion cannot be undone, then confirms with "Audit deleted". Deleting is for something you scheduled by mistake. An audit you decided not to do is a different thing, and the honest way to record that is to complete it with a note saying what you found instead, or to leave it overdue and take the points. > Completing an audit does not schedule the next one. There is no repeat setting on this screen, so a monthly check means twelve records a year. Most people book the next one straight after finishing the last, while they are already in the drawer. ##### Overdue, and what it costs Overdue is the one status you never set. It is worked out every time the screen draws, from two conditions: the audit is not completed, and its due date is strictly before today. It is never written to the record, which is why it does not appear in the Audit status select and why a completed audit can never be overdue no matter how late it was finished. An audit is on time for the whole of its due date. One due today is Scheduled all day and turns Overdue tomorrow morning, which is the behaviour anyone with a diary expects and is worth knowing before you go looking for a bug. (The four status pills. Three of them are stored on the record. The fourth is derived from the due date and today, and it overrides whichever of the first two is stored underneath it.) Overdue audits are one of the four categories that take points off your compliance score, capped at 25 in total. What each one costs depends on how late it is, and it is a step rather than a slope so that it can be explained in a sentence. How late | Points off | How CleanFlo words it Up to 7 days | 3 | "4 days overdue" More than 7 days | 5 | "12 days overdue" More than 30 days | 8 | "63 days overdue" So one chemical store check that slipped twelve days ago is five points off, and the score breakdown names it: the audit title on the left, "12 days overdue" as the reason, and the points on the right. Completing it removes the deduction immediately, and so does moving the due date, which is worth being honest with yourself about. (The Overdue audits row of the score breakdown. Every deduction is named and reasoned, which is the difference between a score you can argue with and a number you have to accept.) ##### Where audits show up elsewhere The Audits tab is not the only place these records are read from. Three other parts of CleanFlo count them, and it is worth knowing which number means what before somebody quotes one of them at you. - The tab badge: The red count on the Audits tab is the number currently overdue, and nothing else. Scheduled and In Progress audits are not counted, however many there are. - Your compliance score: Only overdue audits are deducted, capped at 25 points. Having no audits at all costs nothing, which is a real limitation: the score measures kept commitments, not the absence of them. - Reports: The Health & Safety tab of Reports carries a Compliance Rate reading, which is completed audits divided by all audits in the period, and an Audits Completed count beside it. With no audits at all, Compliance Rate shows a dash rather than pretending to be 100 per cent. > One wording to watch. The Reports figure prints its sub-line as "3 of 5 audits passed", which sounds like a result and is not one. There is no pass or fail on an audit anywhere in CleanFlo. It means three of five were completed, and that is the only thing the percentage measures. ##### Building a rhythm you can keep The failure mode with audits is not doing them badly. It is scheduling eleven of them in a burst of enthusiasm in January, missing all eleven by March, and watching a quarter of your compliance score disappear into a category you have stopped reading. Fewer audits, kept, beat more audits, missed. A rhythm that survives contact with a small cleaning business tends to look like this. One PPE audit a month, rotating round your sites rather than covering all of them at once. One chemical safety check a quarter, in your own store where the stock actually lives. One equipment check a quarter, timed to whenever your PAT testing falls. A site inspection per client per contract review, booked the day the review is booked. And one general compliance check a year, in the month your insurance renews. That is roughly twenty records a year, all of them keepable, and it gives a facilities manager asking about your inspection regime a real answer with dates against it. Export the tab to CSV and you can hand them the whole history. (The Audits tab before you have scheduled anything. The empty state is unusually direct about why the tab exists, because audits are the easiest part of compliance to simply never start.) > There is no statutory audit interval for a cleaning contractor, so nobody can tell you the "right" number. What the law does require is that you check your control measures are still working, which is what Regulation 5 of the Management of Health and Safety at Work Regulations 1999 means by arrangements for monitoring. Portable appliance testing has no fixed legal frequency either, but the Electricity at Work Regulations 1989 require electrical equipment to be maintained so as to prevent danger, and a dated Equipment Check record is how you show that you do. **FAQs** Q: Can I add a checklist to an audit? A: Not as a feature. There is no checklist UI, no per-item scoring and no pass or fail anywhere in the audit flow. What you can do is write the checklist as lines in the Audit notes field, which is exactly what the placeholder suggests, and keep any formal blank form in the compliance vault on the Documents tab. Q: Can audits repeat automatically every month? A: No. Each audit is one record with one due date, and completing one does not create the next. The practical habit is to schedule the following month before you close the drawer on the one you have just finished. Q: My audit is due today and shows as Scheduled. Is that right? A: Yes. An audit is on time for the whole of its due date and only becomes Overdue once that day has passed. The same rule is used for the badge on the row and for the points taken off your compliance score, so the two can never disagree with each other. Q: If I just move the due date, does the deduction go away? A: It does, immediately, because an audit that is not yet due is not overdue. That is a real hole and it is your judgement that fills it: moving a date because the scope changed is sensible, and moving it because the number was annoying you is how a compliance score stops meaning anything. URL: https://cleanflo.io/help/audits/ --- #### The compliance score The number on the dashboard is not a mood. Four things take points off it, each with its own arithmetic and its own cap, and knowing which one is costing you is how you move it. One figure, on your dashboard and at the top of Health & Safety, worked out from your own records. This is every point of it, including the arithmetic, because a score you cannot explain to a client is not worth having. The compliance score is a number between 0 and 100 derived from three things you already keep in CleanFlo: your incidents, your audits and your risk assessments. Nothing else feeds it. It is not an assessment of your business by us, there is no benchmark against other companies in it, and no part of it is a judgement anyone at CleanFlo has made about you. It is recalculated from your live records every time a screen carrying it loads. There is no nightly clean, no cached figure and no lag: close an incident and refresh, and the number has moved. ##### The two places it appears The score is shown twice, in two cards that are deliberately not identical. The dashboard card is the glance version, written to tell you whether to click. The card at the top of Health & Safety is the working version, and it will show you the whole sum. (The Compliance Score card on the dashboard, with work outstanding. The verdict counts categories rather than records, and each chip carries the number of individual deductions in that category. Both link straight through.) When every category is clean, the same card reads Nothing outstanding, with the sub-line "No open incidents, no overdue audits and no high-risk assessments." That verdict appears only when not one of the four categories holds a single deduction, which means the score underneath it is 100. There is no partial version of it. (The same card with nothing against it. Every incident closed, every audit on time, and no active assessment sitting at High or Critical residual risk.) ##### Before you have recorded anything A brand new account has no incidents, no audits and no assessments, and the arithmetic would happily give it 100. The dashboard refuses to do that, because telling a business it scored full marks on an inspection it never sat is worse than telling it nothing. So with no records at all the dashboard ring is empty, the number is replaced by a dash, and the card reads Not started with one line underneath: "Log an incident, schedule an audit or write a risk assessment and your score appears here." (The Not started state, on the dashboard only. One record of any of the three kinds is enough to replace it with a real score.) > This state exists on the dashboard card only. The card at the top of the Health & Safety screen has no Not started state: a company with no records deducts nothing, so it shows 100% and the "Nothing is outstanding" sentence. If the two cards seem to disagree on a fresh account, that is why. ##### Everyone starts at 100 The model is subtraction, and the card says so in its own words when you expand it: "Everyone starts at 100. Points come off for four things only, each capped so no single area can zero your score, and recent events count for more than old ones." Three properties follow from that, and they are worth understanding because they are what stop the number being nonsense. - Every deduction is named. Nothing is taken off anonymously. Each point comes from one identified record, with the reason printed beside it, so you can read the whole sum back to a client or to us. - Recent events weigh more than old ones. A hazard that materialised last week says more about how you run today than one from three years ago. Old records fade, but they never vanish while they are still open. - Each category is capped. No single category can take you to zero, so improving one area is always visible and there is always a route back. The four caps sum to exactly 100, which is why the worst possible state scores 0 and every lost point is attributable. (The Health & Safety screen. The compliance card sits above the stat row, and Show working expands it into the full breakdown.) This card words its verdict differently from the dashboard one. With nothing outstanding it reads "Nothing is outstanding. Every incident is closed, every audit is on time and no active assessment is carrying High or Critical residual risk." Otherwise it states the sum: the points deducted from 100, and which category cost the most. ##### The four categories, and their arithmetic Show working opens the breakdown. Four rows, always in the same order, each showing either No deductions or the points it has taken. A clean row cannot be expanded, because there is nothing inside it. A dirty one opens onto its own explanation and then every record behind it. Category | Cap | What is counted Unresolved incidents | 35 | Incidents whose status is Open or Under Review. Closed ones are not in the sum at all. Overdue audits | 25 | Any audit not marked Completed whose due date is already behind us. Unmitigated risk | 25 | Active or Under Review assessments whose worst residual score is 10 or more, which is High or Critical. Assessments past review | 15 | Active or Under Review assessments whose own review date has gone by. Assessments with no review date are not counted. ###### Unresolved incidents, capped at 35 Each open incident is worth three numbers multiplied together. Its severity sets the base at 10 for Critical, 7 for High, 4 for Medium and 2 for Low. Its status scales that: Open counts at full weight, Under Review at 0.6, because being actively worked on is genuinely better than being ignored. Its age then fades it: full weight within 30 days, 0.6 within three months, 0.3 within a year, and 0.15 beyond that. The reason printed against each one reads the three factors back to you, for example "Medium severity, still open, within 30 days". An incident with no date on it is treated as current, and a date typed in the future is treated as today rather than as a negative age. ###### Overdue audits, capped at 25 A flat step, by lateness: 3 points up to a week overdue, 5 once it is more than seven days, 8 once it is more than thirty. An audit is on time for the whole of its due date, so it only starts costing anything the day after. The reason reads "1 day overdue" or "12 days overdue". ###### Unmitigated risk, capped at 25 CleanFlo takes the worst residual score in each assessment, which is the risk that remains after your controls, and charges 4 points if it lands in the High band and 8 if it lands in Critical. Below 10 there is no deduction. The reason names the number, for instance "Worst residual risk 12/25 (High) after controls". ###### Assessments past review, capped at 15 A flat 2 points for each active assessment whose review date has passed, with the reason "Review was due yesterday" or "Review was due 40 days ago". This is the cheapest category to clear and the one most businesses leave running, because a review date set a year ago is easy to forget. (Two categories expanded. Each one prints its own explanation first, then the individual records with the reason and the points, so nothing is deducted anonymously.) ##### One score, worked out in full Here is the whole sum for a business with two live incidents, one late audit and one assessment still carrying High residual risk. Nothing is rounded until the end, and the final figure is rounded to a whole number. Record | Why it counts | Points INC-2026-031, Slip & Fall | Medium severity (4), still open (×1), today (×1) | 4 INC-2026-030, Chemical Spill | High severity (7), under review (×0.6), 5 days ago (×1) | 4.2 Quarterly chemical store check | 12 days overdue, so the middle step | 5 RA-2026-013, Window cleaning at height | Worst residual 12 of 25, which is High | 4 Total deducted | No category anywhere near its cap | 17.2 Score | 100 minus 17.2, rounded | 83 (The expanded breakdown for that business. The formula line, the four categories in their fixed order, the total, and the caps note at the foot with the number of incident records the sum was calculated from.) If a category ever does run past its cap, CleanFlo tells you rather than quietly discarding the surplus. The row gains a line reading "Capped at 35 points for this category", followed by how many further points were not deducted and why: so that no single area can take your score to zero. ##### The three tiers, and what they colour There are exactly three bands, and their thresholds are fixed: good at 90 and above, warn at 70 and above, and bad below 70. They are used to colour the ring and the percentage green, amber or red, and that is all they are used for. The tier is never printed as a word anywhere in the app. (The same card at three scores. The tier names are written under each ring for this guide only: in CleanFlo they exist purely as the colour of the arc and the figure in the middle of it.) > The number is not a grade and no threshold in it means anything legally. It is a running total of things you told CleanFlo about and have not finished. Treat 90 as the working target, because that is the point at which the ring turns green and the largest remaining deduction is usually a single record. ##### What deliberately does not count As much thought went into the exclusions as into the weights, and most support questions about the score turn out to be about one of these. - Draft and Archived assessments: Not scored at all. A draft has not been adopted and an archive was deliberately retired, so neither describes how the business operates today. This is also exactly what the Risk Assessments stat card counts, so the card and the score can never contradict each other on the same screen. - Unscored hazards: A hazard with a missing likelihood or severity is skipped, not treated as zero and not treated as Critical. An assessment whose hazards are all unscored has no residual risk figure and costs nothing. - Assessments with no review date: Never counted as past review, because there is nothing to be late for. Setting a review date is opting in to being chased. - Closed incidents and completed audits: Out of the sum entirely, the moment you close or complete them. History is kept, but it stops costing. - Everything else in CleanFlo: Cleans, invoices, staff records, inventory and the compliance vault contribute nothing. An expired insurance certificate in the vault is flagged on its own tab and does not touch this number. > On a very large history the card adds one more line: "You have more records than one page can hold, so this is calculated from your most recent ones." That appears when a list came back at its thousand-row ceiling. It is a statement that the sum is drawn from your most recent records rather than every record you have ever had. ##### Moving the number Work down the breakdown, largest first, because the rows are already sorted that way inside each category. Four moves cover almost every case. 1. Close the incidents that are actually finished: Most open incidents are open because nobody pressed the button, not because anything is outstanding. Open each one, read the actions taken, and press Close incident if the action is genuinely done. This is usually the largest single recovery available. 2. Do the overdue audit, or move its date honestly: An audit past thirty days is costing eight points. Doing it and pressing Mark as completed clears the deduction outright. Moving the due date also clears it, which is a real hole in the design and one you should only use when the scope has genuinely changed. 3. Get the High residual risks down: Open the assessment, find the hazard whose residual score is 10 or more, and write a control measure that actually lowers it. Four points if it is High, eight if it is Critical, and it is the only category where the fix improves the work rather than the paperwork. 4. Review the assessments that are past their date: Two points each. Read the assessment, change what has changed, and push the review date forward. If nothing has changed, say so in the notes and move the date anyway, because that is a review. What you should not do is manage the number rather than the work: deleting incidents, archiving assessments you are still working to, or pushing every review date out a year. All three raise the score and all three are visible to anyone who reads the records underneath it, which at some point will be a client. **FAQs** Q: Do my clients see this score? A: No. The compliance score is internal to your CleanFlo workspace and is not shown on the client portal, on invoices or on the printed risk assessment. What a client can be given is the underlying evidence: the printed RAMS, a CSV of your incidents or audits, and a private share link to a document in the compliance vault. Q: Why is my score not 100 when I have only just started? A: Because something you have recorded is already counting. The commonest causes on a new account are an audit scheduled with a due date in the past while you were entering history, and an imported risk assessment carrying High residual risk. Open Show working and the record will be named. Q: The dashboard says Not started but Health & Safety shows 100%. Which is right? A: Both, and they are answering different questions. The dashboard refuses to show a score for a business with no records at all, because 100 out of 100 for having recorded nothing is misleading. The Health & Safety card shows the arithmetic result, and with nothing to deduct that result is 100. Log one record and the two agree from then on. Q: Can I change the weights or the caps? A: No. The weights, the caps and the tier thresholds are fixed for every account, which is what makes the number comparable over time and explainable to somebody disputing it. The same inputs always produce the same score. Q: Does an old open incident keep costing me forever? A: It fades but it never disappears. After a year an open incident counts at 0.15 of its original weight, so a Low one is worth 0.3 points rather than 2. It stays in the sum because an open record is still open, and the honest fix is thirty seconds: close it. URL: https://cleanflo.io/help/compliance-score/ --- #### Waste transfers and duty of care Every hand-off of controlled waste, the note that proves it, and whether the person who took it was authorised to. Setup, carriers, season tickets and the register. If your business produces waste, the law makes you responsible for what happens to it after it leaves your hands, and asks you to be able to prove you passed it to somebody allowed to take it. That proof is a waste transfer note. Waste Transfers is where they get written, signed and kept. Waste Transfers sits under Compliance in the sidebar, beside Health & Safety, and the page is subtitled "Every hand-off of controlled waste, the note that proves it, and who was authorised to take it." Everything waste-shaped lives inside it, the setup included: a SIC code and an operating nation are fields printed on a note rather than application preferences, so filing them under general Settings would mean knowing they existed before you could go and look. > The duty of care under section 34 of the Environmental Protection Act 1990 applies to anyone who produces, carries or disposes of controlled waste, and a cleaning business producing waste in the course of its work is squarely inside it. In practice it means three things: describe the waste accurately, hand it only to somebody authorised to take it, and keep the paperwork.,The bag of rubbish you carried out of a client's house is commercial waste, not household waste, because you collected it in the course of your business. That is true even though it came out of somebody's home, and it is why most council recycling centres will not take it. > CleanFlo records that you met your duty of care. It does not file anything with a regulator on your behalf, and it never says you are compliant. What it shows you is what it actually checked and when it checked it: whether a carrier's registration was current at the moment you handed waste over, whether both signatures are on a note, and whether a hazardous consignment ever came back with its return. Those are facts. "Compliant" is a judgement, and it is not one software gets to make for you. ##### Opening the ledger The first time you open Waste Transfers, the page is one thing: a form headed Opening your waste ledger, with the note it is setting up drawn beside it. There is no register, no chart and no buttons in the header, because nothing can be recorded until this is saved. The database refuses a collection from a company with no producer details, so an empty register beside three buttons that could only fail would be worse than not showing them. Its subtitle is the whole reason it exists: "A waste transfer note is a legal record of handing waste to someone allowed to take it. Three answers set the header that goes on every note you sign." (The first run. The two required answers on the left, and on the right the header they land on, each reading settling in as its field is answered. On screen the right-hand sheet is drawn on document paper rather than as a second form: it is read, never filled in.) 1. Your trade: A five-digit SIC code, picked from a shortlist of the ones a cleaning business normally uses, with Other — enter a code at the foot for anything else. It is on your Companies House record and it is a required field on every note, which is why CleanFlo asks once rather than every time. 2. Where you mainly work: England, Wales, Scotland or Northern Ireland. Each runs its own waste rules and its own regulator, and this decides which set your notes are written under. Individual sites can sit in another nation, and that is set later under Setup. 3. Who takes it away: One question with two answers: A carrier always collects from us, or We sometimes take waste away ourselves. Most cleaning companies are the first. Answering the first is the end of setup; answering the second opens your own carrier registration. The panel beside the form is the note header itself, on document paper, filling in line by line as you answer. Underneath it a status reads Header incomplete — nothing can be recorded yet until every answer is in, then Header complete. That status watches the whole header, not just the required half: answer "we sometimes take waste away ourselves" and leave the registration number blank and it stays incomplete, because the sheet above it would still say "Not set yet" against Carrier. > Save and continue is followed by "You can change any of this later under Setup." That is true of every answer here, so do not stall on the SIC code. Pick the closest one, get on with the day, and correct it later if your accountant says otherwise. ##### If you take waste away yourself Answering We sometimes take waste away ourselves opens a worked example before it opens a form, because two things in that scenario catch people out and neither is guessable. - That rubbish is commercial waste, not household. Anything collected in the course of your business counts as commercial even though it came out of somebody's home. Most council recycling centres will not accept it, so you normally need a licensed transfer station or a commercial waste site. - Driving it makes you the carrier. That is what a waste carrier registration is for. Lower tier covers carrying only your own waste, which is the usual case for a cleaning company taking its own rubbish to a transfer station. - You log one collection. What you took, which site it came from, and where you dropped it. You sign it, and there is no carrier to countersign because the carrier was you. Keep whatever the receiving site hands you, a weighbridge ticket or their own note: that is the other half of the paper trail and it stays outside CleanFlo. Then the registration itself. There is a lookup first: type your company name or your registration number and CleanFlo checks the public register and fills in the rest. Or type the four fields by hand: Registration number (something like CBDU123456, on your certificate), Regulator, Tier and Expires. Leave the expiry blank if it does not expire: an England lower-tier registration does not. > Your own registration goes here, under Setup. It does not go in the Carriers list. Carriers is for the firms who collect from you, and a self-hauled collection is recorded with no carrier at all, because you are not a third party you handed waste to. The database enforces that, so looking for yourself in the carrier list will not work and is not meant to. ##### The five tabs Once setup is saved, the header grows a Log a collection button and a More waste actions menu holding New season ticket and Import a paper note. Below it, the area is five tabs, and the tab is in the address, so a copied link, a reload and the back button all land where you were. - Overview: Four attention tiles, then the period charts. It carries a badge when anything is outstanding, and it is the tab worth opening first. - Collections: The register: every collection ever logged, searchable and filterable, one row a note. Covered in Logging a waste collection. - Season tickets: One signed note covering up to twelve months of repeat collections, instead of a fresh note every week. - Carriers: Whoever takes your waste away, and whether their authorisation is current. - Setup: The three answers above, editable, plus your own carrier registration and any sites that sit in a different UK nation. ##### What needs attention The Overview opens on four tiles. Each one is a number and a line of subtext, and each is a link into the thing it is counting. A tile at zero says so in its own words rather than going blank. (The attention strip. Every tile reads the same way: what is outstanding, or the sentence that says nothing is.) - Awaiting the carrier: Notes you have signed and nobody has countersigned. At zero it reads "Every note is signed by both sides". - Open consignments: Hazardous loads whose Part E has not come back from the site that received them. At zero it reads "No consignee return outstanding". - Registrations to check: Carriers whose authorisation has lapsed, is close to expiring, or was never recorded. At zero it reads "Every carrier's authorisation is current". - Tickets to renew: Season tickets due inside the next 30 days. Its subtext is the warning: "Collections stop when one lapses". A rejected consignment gets its own line under the tiles rather than a tile of its own, because it outranks everything: "1 consignment was rejected on arrival and needs dealing with." It is a link into that row. Under the tiles the period charts read the last 12 months by default. Collections by month, what the waste was, who took it, how much moved, and whose waste it was. Two of those carry a sentence worth reading. How much moved totals per unit and never across them, because skips, sacks and kilograms are not the same measurement and there is no honest grand total to show. And Whose waste it was notes that a collection tied to a client is the one that client sees in their own portal, and the one that goes into their compliance pack at tender time. ##### Carriers, and whether they are allowed The Carriers tab is whoever takes your waste away. A carrier is a name, what kind of operator they are, a contact, and the thing that matters: their registration number and when it expires. That number is what a note shows as the authority the waste was carried under. For an England registration you can look it up rather than type it. CleanFlo checks the public register and fills in the number, the tier and the expiry from what it finds. Where the register has nothing to say, CleanFlo says that rather than guessing: a carrier with no registration on file is counted in Registrations to check and reads as unverified on every note it appears on. > Handing waste to somebody who is not registered to carry it is the duty-of-care failure the whole system exists to prevent, and "they turn up every Tuesday and seem fine" is not a defence. CleanFlo warns you at the moment of signing if the carrier you have picked has a lapsed or missing registration. It does not stop you: there are legitimate reasons to record a transfer that happened anyway. It records what it warned you about, and when. A carrier you no longer use is marked No longer in use rather than deleted, and drops out of the list unless you tick the box to show them. Every note they ever signed keeps their details exactly as they were on the day, because a note is a record of what was true then, not a live lookup. ##### Season tickets For waste you hand to the same carrier again and again, the law does not need a fresh note every week. One signed note, called a season ticket here and an annual transfer note elsewhere, covers up to twelve months of collections of the same waste to the same carrier. It is set up from More waste actions → New season ticket. A ticket is a row in the register with the waste it covers, its EWC code, the carrier, the dates it runs between, and its renewal state. An expired ticket is not a warning, it is a stop: collections logged against it are refused, and the row says so. > A ticket can carry staff can log from site, which is the reason most companies want one. With it on, a supervisor or cleaner can log a collection against that ticket from their phone as it happens, without an owner at a desk. Without a ticket, logging a collection is an owner's clean at the office. ##### Switching it off, and why it is different Waste Transfers is a module like Equipment or Expenses, with its own switch on Modules under Account. It behaves differently from every other one, and deliberately. Every other module disappears from the sidebar when it is switched off. This one does not. The screen stays reachable and opens as a read-only archive: everything already logged is fully readable, and nothing new can be recorded. A regulator can ask for a transfer note years after the toggle was flipped, and a record you cannot produce is not a record at all. **FAQs** Q: Do I need this if I only clean domestic houses? A: If you take rubbish away from a clean, yes. Waste you collect in the course of your business is commercial waste even when it came out of somebody's home, so the duty of care applies and most council recycling centres will not take it. If the householder puts their own rubbish in their own bin and you never touch it, that is their waste and not yours. Q: Why can I not log anything yet? A: The producer details have not been saved. A SIC code and an operating nation are printed on every note, and the database refuses a collection from a company that has not set them, so CleanFlo shows the setup form instead of the register until they exist. It is two answers and it takes a minute. Q: I take my own waste to the tip. Do I add myself as a carrier? A: No. Your own registration goes under Setup, and a self-hauled collection is recorded with no carrier on it, because you are not a third party you handed waste to. The Carriers list is only for the firms who collect from you. Q: Does CleanFlo tell the Environment Agency anything? A: No. It files nothing with any regulator on your behalf. It keeps your record, checks what it can check, and shows you what it found. Anything that has to be sent to a regulator is still yours to send. Q: What happens to my notes if I switch the module off? A: Nothing. Waste Transfers is the only module whose screen stays reachable while it is off: it opens read-only, every note is fully readable, and only new collections are stopped. The duty of care that produced those records does not switch off with the toggle. URL: https://cleanflo.io/help/waste-transfers/ --- #### Logging a waste collection The whole flow of one collection: describing the waste, signing it, getting the carrier to countersign, and closing a hazardous consignment when its return comes back. A waste transfer note is not a form you fill in and file. It is a chain of signatures, and it is finished when the last one is on it. This is what that chain looks like in CleanFlo, and what the register is telling you when it says a note is still open. Logging a collection is the daily act on this screen, and it has its own button in the header: Log a collection. The two rarer things sit behind More waste actions beside it, New season ticket and Import a paper note, because a ticket is set up a few times a year and importing history is catching up rather than working. > If the header has no buttons at all, your producer details have not been saved yet. Nothing can be recorded until they are, and the setup form is on the page instead of the register. See Waste transfers and duty of care. ##### The drawer, section by section The sheet is titled Log a collection and subtitled "A one-off collection. For a recurring collection under an existing season ticket, use the season ticket instead." It is four sections and a signature. (The drawer. Two named routes at the top rather than a checkbox, because who took the waste changes what the rest of the form is asking.) - Who took it away: Two named routes, not a checkbox: A carrier collected it, or We took it away ourselves. Picking a carrier opens the carrier list; picking self-haul shows the registration you saved under Setup and asks for the vehicle instead. A self-hauled collection is recorded with no carrier on it at all, and the database enforces that, so you will not find your own company in the carrier list. - The waste: An EWC code picked from a shortlist of the ones a cleaning business actually produces, with a free field for anything else (six digits, from the full List of Wastes). Then a plain-English Description, a Quantity and its Unit, and the Container it went in: a wheelie bin, a skip, sacks. All four are required, because all four are required on the note. - Transfer: The Date and Time it happened, optionally the Client and Site it came from, and the Place of transfer. That last one pre-fills from the site and is editable, because waste is not always handed over where it was produced. - Who received it: Optional, and headed as such. A name, and their signature if they are standing there. Left blank if nobody took it from you. > Tying a collection to a client is worth the two seconds. It is what puts the collection in that client's own portal, and what makes it available in their compliance pack when they go out to tender. An untied collection is still a valid record; it is just a record nobody else can see. Above the form sits a repeat picker rather than a field of it: if you have logged something like this before, it fills the form from the last one. It is hidden when you are importing a paper note, because a digitised note records something that already happened and is not a pattern to continue. ##### Signing, and the hierarchy declaration At the foot of the drawer, before the button, is a box that has to be ticked: "I confirm the waste hierarchy — prevention, preparing for re-use, recycling, other recovery, then disposal — was applied to this waste". That declaration is a legal requirement on a transfer note rather than a CleanFlo invention, and it is why it is a tick rather than a paragraph you scroll past. Then you sign. Your signature takes a finger, a stylus or a mouse, and the hint says where it ends up: "This mark prints on the note and appears on the copy the carrier and the client see." Sign and save writes the note, confirms with "Collection logged and signed.", and opens the record. ##### Hand it over The moment it is saved, CleanFlo shows a sheet headed Hand it over, subtitled "One signature is on the note. The second one finishes it." Its heading names the problem exactly: You have signed. Kernow Waste Services Ltd has not. Two routes out, and the first is the one to take whenever you can. - They are here, hand them the device: "They see what they are taking, sign it, and the note is finished before they drive off." It shows the carrier a plain summary of the load, asks for their name, their vehicle registration and a signature, and closes the note there and then. - They are not here, send them a link: "Copies a link that opens this one record. They sign it from their own phone." The link shows that one note and nothing else, and it stays valid. Once both signatures are on, the sheet says Signed by both parties and reminds you of something easy to forget: the carrier is entitled to their own copy. Print their copy produces the note; Copy the link sends it. Finish this later is always available, and a note left half-signed shows in the register as Awaiting the carrier until it is closed. > A note only you have signed is not proof of anything. It is your word that you handed waste to somebody, with no record that they agreed they took it. That is what the Awaiting the carrier tile on the Overview is counting, and why it turns from amber to red once a note has been sitting there too long. Chase it the same week: a driver who was there on Tuesday is much easier to get a signature out of than one who was there in March. ##### Reading the register The Collections tab is every collection ever logged. Search runs over the waste, the EWC code, the consignment code, the address and the client, and the filters narrow by date, client, carrier, waste class and state. Six columns, of which the last is the one that does the work. The State column does not say what last happened to a note. It says what the note is still waiting for, which is the only reading that tells you whether to do something about it. State | What it means | What to do Awaiting the carrier | You signed it. Nobody countersigned. | Send them the link, or catch them on the next collection. Amber until it has been waiting too long, then red. Awaiting Part E | A hazardous consignment whose receiving site has not returned its copy. | Chase the site. File the return when it arrives. Rejected on arrival | The receiving site refused the load. The row carries their reason. | Deal with it. This outranks every other state, including completeness. Complete | Every signature the note needs is on it. | Nothing. Self-hauled, signed | You took it yourself and signed it. There was no carrier to countersign. | Nothing. Keep the weighbridge ticket the site gave you. Self-hauled, receipted | The same, and somebody at the receiving site signed for it too. | Nothing. This is the better record of the two. Imported from paper | A note that existed on paper before you were recording them here. | Nothing. It is an archive and is not signed again. Every row carries a short reference, which is a handle for quoting a note down the phone ("the one ending 4F2A") rather than a legal identifier. A hazardous consignment has a real consignment code the law recognises, and that always wins. ##### One note, opened Any row opens the note itself. It is headed Waste transfer note, or Hazardous waste consignment note where the load was hazardous, with the waste as its title and the reference, the state and the date underneath. Two actions: Copy share link and Print. Under the head, before the note itself, is the Chain of custody: every signature the note needs, in order, ticked or outstanding, with who signed and when. For an ordinary transfer that is two links. For a hazardous consignment it is the four parts by name. (The chain on a hazardous consignment. Three links closed, one open, and the open one is what the register is reporting.) Then the note, in the sections a transfer note actually has: the waste, the transferor, the carrier, the transfer, the waste hierarchy declaration and the signatures. On a hazardous consignment those sections are labelled by their parts instead, and a fifth appears once the return is in. ##### Hazardous waste, and Part E Ticking This is hazardous waste in the drawer changes what is being written. It is no longer a transfer note, it is a consignment note, and it asks for more: a Consignment code as printed on the paper note, the Physical form the waste was in, and its Chemical composition. For a cleaning company this is the drum of solvent, the box of fluorescent tubes, the spent chemical from a deep clean. A consignment does not finish when the carrier drives away. The site that receives it has to send back its own copy saying what it did with the waste, and until that arrives the consignment is open. CleanFlo says so plainly on the record: Part E has not come back yet, with the explanation that "until then this consignment is still open, and CleanFlo has no record of what happened to the waste after it left." 1. Wait for the return: The receiving site sends it. Nothing in CleanFlo fetches it and nothing chases it for you, though the Overview counts how long it has been outstanding and turns red when it has been too long. 2. Open the note and press File the consignee return: The button is on the prompt at the top of the record, not buried in a menu. 3. Copy across what their copy says: Who signed, when, and the weight they confirmed on arrival. That confirmed weight is worth entering even when it matches yours, because a discrepancy is the thing you would want a record of later. 4. Or record that it was rejected: If the site refused the load, that is what goes on the return, with the reason. The note then reads Rejected on arrival in the register and outranks everything else on the screen, because a refused consignment is a live problem however many signatures precede it. ##### Notes that already exist on paper More waste actions → Import a paper note is for history: "A transfer that already happened, on paper, before you were recording them here. Copy across what the note says — it is locked as an archive the moment you save it, not signed again." The button reads Save the record rather than Sign and save, and the row reads Imported from paper for ever after. > This is the honest way to get two years of shoebox paperwork into one searchable register before a tender asks for it. An imported note never pretends to have been signed in CleanFlo, so nothing about the archive misrepresents itself: the paper note remains the original record, and this is its digitised copy. **FAQs** Q: The carrier has driven off and I never got their signature. A: Open the note and copy the share link, then send it to them. It opens that one record on their own phone and they can sign it from there. The note stays as Awaiting the carrier in your register until they do. Q: What EWC code do I use for general rubbish from an office clean? A: The shortlist in the picker covers what a cleaning business normally produces, and mixed municipal waste (200301) is the usual answer for general rubbish. Anything unusual takes a six-digit code from the full List of Wastes, typed in. Q: Can my cleaners log a collection themselves? A: Against a season ticket, yes, if the ticket is set to let staff log from site. Without a ticket, logging a one-off collection is an owner's clean, because it involves picking a carrier and signing a legal record. Q: I took it to the tip myself. Who signs? A: You do, and that is the whole chain. There is no carrier to countersign because the carrier was you. If somebody at the receiving site signs for it, record that too and the note reads Self-hauled, receipted, which is the better record. Keep whatever they hand you: a weighbridge ticket is the other half of the trail and it lives outside CleanFlo. Q: How long do I have to keep these? A: Two years for a waste transfer note and three years for a hazardous consignment note, as the regulations require. CleanFlo keeps them indefinitely and does not delete them when a module is switched off, so the answer in practice is that they are there when somebody asks. URL: https://cleanflo.io/help/logging-a-waste-transfer/ ### Reports & data #### Reading your reports What each of the eight Reports tabs answers, how the four fixed date ranges behave, why there are no comparison figures, and what the printed six-section document contains. Reports is eight tabs over the same data, each answering one question about the last week, month, quarter or year. Nothing on it is editable. It is the read-only end of the product. Everywhere else in CleanFlo you are putting information in. Reports is the one screen that only gives it back. The page is titled Reports & Analytics, subtitled "In-depth business intelligence across every area of your operations", and it carries exactly two controls in its header: the date range, and Print. ##### Four ranges, and nothing else The range control is a row of four buttons, not a dropdown. In order: Last 7 days, Last 30 days, Last 90 days and Last 12 months. Last 30 days is where the page opens. (The whole date control. There is no fifth button, no calendar icon and no way to type a date, so a report for one specific week in March is not something this screen can produce.) > There is no custom from-and-to date picker, and no date is displayed on screen at all: the range is only spelled out in words on the printed document. If you need a specific window, export the underlying CSV and filter it in a spreadsheet. The second absence matters just as much. There is no comparison against a previous period. No "vs last month", no percentage deltas, no up and down arrows. Every tile on this page is a flat number for the window you chose. The stat cards are the same component the Dashboard uses, and on Reports they are deliberately given no change value, so the footer of each tile is its caption and nothing more. There are no sparklines either. One more thing to know before you read any figure on this page: the range does not filter everything. Three things are filtered by it, and four are not. Filtered by the date range | Always company-wide Cleans, by their scheduled date | Clients Invoices, by when they were created | Staff Incidents, by when they occurred | Inventory | Audits So the Inventory tab shows your stock as it stands right now whichever range button is pressed, and Total Clients is every client on your books rather than the ones who booked something in the last week. That is the right behaviour for both, but it surprises people the first time they press "Last 7 days" and the client count does not move. ##### The eight tabs Under the header sits one tab strip, and only the tab you are looking at is loaded. In order: Overview, Financial, Sales, Operations, Staff, Clients, Inventory and Health & Safety. - Overview: Am I making money and is the work getting done. Revenue collected, cleans completed, what is outstanding, and who your busiest clients are. - Financial: Where every invoice stands. Collected, awaiting, overdue and draft, with the full ledger underneath. - Sales: Are the quotes turning into work. Conversion rate, average quote value, why the ones you lost got away, and how long the open ones have been waiting. - Operations: Is the schedule working. Completion rate, average clean duration, which days are busiest, and anything still unassigned. - Staff: Who is doing the work. Cleans per cleaner, estimated hours, completion rate per person. - Clients: Who is worth having. Cleans, revenue received and work booked, per client, with the last visit date. - Inventory: What is about to run out. Healthy, low and out, by category, with an attention list. - Health & Safety: Whether you are compliant. Audit completion, incidents by severity and type, and the score they produce. (The Overview tab on the default range. Four flat KPI tiles, the revenue bars, and the top clients table. Note that no tile carries a change arrow: the caption under each figure is the whole footer.) ##### The Sales tab Sales sits between Financial and Operations in the tab strip, the one tab on this screen reading quotes rather than invoices. It opens with four KPI tiles: Conversion rate, Average quote value, Outstanding and Declined. Like everywhere else on Reports, none of them carries a direction arrow: there is nothing here to compare against either. (The top of the Sales tab. Four flat KPI tiles, same as every other tab on this screen.) - Conversion rate: Accepted quotes divided by quotes actually issued, sent, accepted, declined or expired. A draft never counts on either side of that fraction: it was never put in front of a client, so it was never a chance to win or lose. - Average quote value: The mean value of every issued quote in the period, whatever became of it afterwards, a read on how big the work you are chasing tends to be, not a forecast of revenue. - Outstanding: Quotes still sitting at Sent, with nobody having said yes or no yet, a count and the money they add up to. - Declined: Quotes turned down in the period, a count and the money that went with them. > With no quotes issued at all in the selected range, Conversion rate does not fall back to 0%. The tile reads – and its caption reads No quotes in this period, because nothing happening and everything failing are different facts, and this tile, like the Health & Safety compliance figure elsewhere on this screen, refuses to blur them. Below the KPI row sit two panels side by side. Quote status is a donut of every issued quote by outcome, Accepted, Outstanding, Declined, Expired, with a legend underneath giving each a count and its share of quotes issued. Why quotes are lost takes only the declined ones and groups them by the reason given at the point of decline, most common first, each again a count and a share: this time a share of quotes declined, not of quotes issued. (Quote status and Why quotes are lost, side by side beneath the KPI row. Shown here as plain counts; on the real screen each row also carries its percentage.) The reason list is the same five options offered wherever a quote gets declined, in the app or from the client's own link: Price too high, Chose another company, No longer needed, Bad timing and Other. A quote declined before this list existed, or declined without one being picked, is not dropped or spread across a blank key: it collects in its own bucket labelled No reason given. Quotes outstanding by age buckets whatever is still sitting at Sent by how long it has been waiting for a reply: 0–3 days, 4–7 days, 8–14 days and 15+ days, counted from when the quote was sent rather than when it was drafted. (Quotes outstanding by age. A bar sitting in the 15+ bucket is the clearest single thing on this tab worth acting on, old enough that a phone call, not another wait, is what moves it.) Underneath sits the Quote ledger, Quote, Client, Status, Amount and Issued, sortable on every column, with the same ghost Export CSV button as the Invoice ledger. Two things worth knowing about it: it lists every quote in the period, drafts included, even though Conversion rate above excludes them entirely; and the exported file carries a sixth column, Decline Reason, that never appears in the on-screen table. (The Quote ledger on the Sales tab. That Draft row is real, the ledger lists every quote in the period regardless of status, even though the KPI tiles above only ever count the ones actually sent.) ##### Revenue and clean value are two different numbers The Clients tab keeps two money columns deliberately apart, and it is the single most useful distinction on this screen once you notice it. - Revenue is money you have actually received: the total of that client's paid invoices. - Clean value is the price of the work booked in the period, whether or not it has been invoiced, let alone paid. The Client Directory spells it out in its own subtitle: "Revenue is money received on paid invoices; clean value is the work booked in this period". A client whose clean value is high and whose revenue is low is either not being invoiced or not paying, and finding out which is the point of noticing. > Top Clients by Activity on the Overview tab is ranked by clean count, not by money, and it only ever shows five rows. It answers "who takes up most of my week", which is a different question from "who pays me most". ##### Satisfaction by location Sitting beneath the Client Directory is a second table, Satisfaction by location, subtitled "Rolling average of client ratings this period, against the same length of time before it". It averages the star ratings a client leaves against a completed clean through the client portal, grouped by Location, for whichever range button is pressed: Reports has never rolled ratings up this way before it. - Rating: The average to one decimal place, with the number of ratings it is built from alongside it (4.8 (12)) or, for a location with cleans in the period but nothing rated yet, the plain words No ratings recorded rather than a false zero. - Trend: That average against the equal-length period immediately before it: Improving in green, Declining in red, or a dash. The dash covers two different cases on purpose, the average genuinely has not moved, or one side of the comparison has no ratings to average at all, because a trend needs two real numbers, not one against a gap. (Satisfaction by location on the Clients tab. Harbour Lettings has cleans in the period but nothing rated, so the Rating column says so in words rather than reading a false zero, and its Trend is a dash rather than a guess.) > With no locations rated at all in the period, the whole table is replaced with No cleans in this period rather than a header sat over empty rows, once a clean is scheduled at a site, its ratings start tracking here. The same figure follows a location to its own page. Open a site under Locations and its header carries a rating chip reading, for example, 4.6 satisfaction (90d) alongside the property type and address, a fixed trailing ninety days rather than whatever range Reports happens to be set to, because the location page has no range picker of its own to borrow one from. ##### The operational tabs Operations and Staff are the two tabs to read when the money looks fine and the week still feels wrong. Operations opens with Completion Rate, Total Cleans, Avg Duration and Unassigned, and that last tile turns red the moment it is above zero. ("Cleans by day of week" counts completed cleans only, and always draws all seven bars starting at Sunday. A flat Friday against a heavy Monday is a rota problem, not a demand problem.) Underneath sits Cleans by Team Member, whose columns are Staff Member, Total Cleans, Completed, Cancelled and Completion Rate. Cleans with nobody against them collapse into a single row literally called "Unassigned", so that row is a workload figure and a warning at the same time. The Staff tab is the same population read the other way round. Its Total Hours Logged tile is captioned "Estimated from durations", and the word estimated is doing real work: these are the durations set on the cleans, not clocked time. Top Performer shows a first name only. > Cleans are grouped by the staff name stored on the clean, not by a link to the staff record. Rename a cleaner and older cleans keep the old name, which means one person can appear as two rows. If the numbers look split, that is why. ##### Every table behaves the same way There are ten tables across the eight tabs and they share one set of manners, so learning them once is enough. - Ten rows a page. The pager is hidden entirely at ten rows or fewer, and reads "1–10 of 24" on the left with "1 / 3" between the arrows. - Sorting is client-side over the whole row set, not just the visible page. Click a header to sort ascending, click again for descending. A few columns are deliberately not sortable: the Status column on the inventory attention list, and the Description column on the incident log. - Every card header carries a ghost Export button. The exceptions are the invoice ledger and the quote ledger, whose buttons both read Export CSV. - The export button is disabled whenever the table is empty, so you cannot download a file with only headers in it. - On a narrow screen each row becomes a card, titled by its first named column. (The Invoice ledger on the Financial tab. Overdue is computed live from a sent invoice whose due date has passed, so "Sent" here means sent and not yet late.) Each panel is also its own error boundary. If one query fails, that panel alone is replaced with "We could not load this", the reason, and a Try again button. The rest of the tab keeps working, and changing the range over data already on screen keeps the old result visible rather than flashing skeletons at you. ##### The printed report, section by section Print does not print the screen. It builds a separate document, in a fixed light palette with one section to a page, and hands it to your browser's print dialog. Choosing "Save as PDF" there is how you get a file to email. The button is disabled while any of the seven underlying queries is still loading, so you cannot print half a report. The cover carries the CleanFlo wordmark, the title Business Analytics Report, and three meta lines: "Period:" with the range label, "From:" with the start date, and "Generated:" with today. Every page after it is footed with the report name and range on the left and the generation date on the right. (The six sections of the printed document, in order. This is the artefact to hand an accountant, a bank or a prospective client, because unlike the screen it says in writing which period it covers.) > The printed tables are not the same as the on-screen ones. Section 3 lists every staff member with no pagination, and section 4 lists every client. If you want the complete picture on paper rather than ten rows at a time, print rather than screenshot. ##### The compliance figure, and when it says nothing The Health & Safety tab's Compliance Rate is completed audits divided by all audits. It is tinted green at 80 and above, amber at 60 and above, and red below that. What it never does is default to 100%. With no audits recorded at all, the tile reads an em dash rather than a number, the caption reads "No audits recorded yet", and the ring beside it draws no arc. A brand new account is not compliant by default, and the screen refuses to imply that it is. The heading below the ring switches with the rate: "Excellent Compliance", "Good Standing", "Needs Attention" and "Action Required". > Reports is a read of what you have already recorded. Its figures are only as good as the cleans you marked complete, the invoices you marked paid and the audits you closed off. Nothing on this screen can be typed into, and nothing here changes anything. **FAQs** Q: Why does the Sales tab show ", " instead of a percentage sometimes? A: Because no quotes were issued in that date range at all, which is a different thing from a 0% conversion rate. Zero out of zero is not zero percent, so the tile says so in words (No quotes in this period) rather than showing a number that would read as a real, and much worse, result. Q: Can I compare this month against last month? A: Not on this screen. Reports has no comparison period and no percentage change indicators of any kind. The nearest thing available is the Revenue trend and Monthly Revenue bar charts, which show one bar per month so you can read the shape yourself, or exporting two CSVs and comparing them in a spreadsheet. Q: Why does the Inventory tab ignore the date range? A: Because stock is a present-tense fact rather than something that happened in a window. Only cleans, invoices and incidents are filtered by the range. Clients, staff, inventory and audits are always company-wide, whichever button is pressed. Q: Why is my revenue lower here than on the Dashboard? A: Total revenue on Reports counts paid invoices inside the chosen range only, and the default range is the last 30 days. The Dashboard figure covers a different window. Switch to "Last 12 months" before comparing the two. Q: How do I get the report as a PDF to send to my accountant? A: Press Print and choose "Save as PDF" as the destination in your browser's print dialog. There is no separate download button, because the document is generated for printing rather than stored as a file. URL: https://cleanflo.io/help/reports/ --- #### Getting your data out Every CSV CleanFlo can produce: the seven from Reports with their headers, the per-screen exports from Clients, Invoicing, Inventory and Equipment, and Settings, Data Export for the lot. At some point a bookkeeper is going to ask you for a list of invoices and a list of clients. There are three places to get one, and none of them takes longer than a click. The quarter ends, the VAT return is due, and your accountant sends the same email they send every quarter. CleanFlo does not integrate with accounting software, so the answer to that email is always a CSV file. This guide is a map of which file, from where, with which columns in it. Every export in the product is one click. No dialog, no column picker, no date-range prompt. The file downloads with the name it was going to have, and a toast tells you how many rows went into it. ##### Three places to export from Where | What you get | When to use it Reports, from each card header | Seven purpose-built files, already summarised and filtered to the chosen date range | A quarterly figure, a client ranking, an incident list The screen you are on | The raw list you are looking at, obeying whatever filter is applied | The current client list, the overdue invoices, the stock order Settings, Data Export | Six whole tables, or all six at once, unfiltered and unsummarised | Year end, moving to another system, a GDPR request > For an accountant, the two files that answer nine questions out of ten are invoices.csv from the Invoicing screen and clients-report.csv from the Reports Clients tab. The first is the ledger, the second reconciles it against who the work was for. ##### The seven files Reports produces Each card on Reports that has a table under it carries a ghost Export button in its header. The invoice ledger is the only one whose button reads Export CSV instead. All seven follow the same rules: the button is disabled when the table is empty, and the file always covers the whole row set behind the table rather than the ten rows on screen. (The export control as it appears in every Reports card header: a ghost button beside the card title, never a toolbar of its own.) File | Tab it comes from | Columns top-clients.csv | Overview | Client, Cleans, Clean value, Avg per Clean. Only the five rows on screen, and money as bare two-decimal numbers with no symbol in the cell. invoices.csv | Financial | Invoice Number, Status, Amount, Issue Date, Due Date. Status is the effective one in lower case, so a late invoice exports as overdue. operations-by-staff.csv | Operations | Staff Member, Total Cleans, Completed, Cancelled, Completion Rate. Includes the "Unassigned" row, and the rate is written as "83%". staff-performance.csv | Staff | Staff Member, Status, Total Cleans, Completed, Hours, Completion Rate. Hours to one decimal with no "h" on the end. clients-report.csv | Clients | Client, Status, Cleans, Revenue, Clean value, Last Clean. The revenue and clean value headers each spell out in the header itself which is money received and which is work booked. inventory-report.csv | Inventory | Item, Category, Quantity, Minimum, Unit, Status, using the display labels rather than internal codes. incidents.csv | Health & Safety | Type, Severity, Status, Date, Description. Raw stored values, and the date is the first ten characters of the timestamp. Money columns in these files carry your own currency symbol in the header rather than in every cell, so a column of amounts stays numeric and a spreadsheet will sum it without being argued with. The success toast counts what went out: "Exported 14 invoices", "Exported 3 team members", "Exported 1 client". > Only three things on Reports obey the date range: cleans, invoices and incidents. Clients, staff, inventory and audits are always company-wide. So invoices.csv from the Financial tab is a quarter's worth of invoices, but inventory-report.csv is your stock as of now regardless of which range button is pressed. ##### The exports on the working screens Four of the list screens have their own Export CSV button beside the pager. These are rawer than the Reports files: what you see, in the order you sorted it, with the filters you applied. (Clients, with a filter applied. The export follows the filter, so filtering to one status and exporting is how you get a list of just your active clients.) - clients.csv: From the Clients table. Six columns: Name, Contact Name, Email, Phone, Status, Sites. "Sites" is the count of locations against that client, not their addresses. - invoices.csv: From the Invoicing screen. Six columns: Invoice Number, Client, Amount, Issue Date, Due Date, Status. An ad-hoc invoice with no client record exports its recipient name in the Client column. - inventory.csv: From the Inventory table. Item, Category, Current Stock, Min Threshold, Unit, Status, over the whole filtered and sorted list. - equipment.csv: From the Equipment register. Name, Category, Serial Number, Condition, Status, Assigned To. A missing serial or borrower exports as an empty cell. Note that invoices.csv exists in two different shapes. The one from the Invoicing screen carries the client name; the one from the Reports Financial tab does not, but is already cut to the date range. For a VAT quarter you want the Reports one. For a debt chase you want the Invoicing one, filtered to Overdue first. (What invoices.csv from the Invoicing screen looks like once it is open in a spreadsheet. The Amount column is a plain number, so it sums without being reformatted.) ##### Settings, Data Export: everything at once The fourth tab of Settings is Data Export, and it is a different kind of export. The other buttons hand you a view. This one hands you the tables. Its subtitle says what it is for: "Download your data as CSV files. This fulfils your right to data portability under GDPR." (The Data Export tab. Six tables, each with its own button, and one button underneath that does all six in sequence. In the app the four Settings tabs sit in a rail down the left rather than as a strip.) Each row exports its own table with a stable set of columns, and the files are dated: cleanflo_clients_2026-08-14.csv. The toast tells you the count, or tells you there was nothing there: "Clients exported (128 rows)." or "No clients to export." - Clients: Id, name, contact name, contact email, contact phone, created date. - Locations: Id, the client it belongs to, name, first address line, city, postcode, property type, created date. - Cleans: Id, title, scheduled date, start time, status, the staff name stored on the clean, created date. - Invoices: Id, client, status, issue date, due date, total, created date. No line items: this is the header row of each invoice, not its contents. - Staff: Id, full name, email, phone, job title, role, whether active, created date. Cleaners only. - Services: Id, name, type, base price, duration in minutes, created date. Export All Data runs all six in order. While it works, the button label becomes a progress line reading "Exporting Invoices (4 of 6)…", a thin progress bar appears, finished rows turn green with a tick and the row in flight tints brand. The result is one combined file, cleanflo_export_2026-08-14.csv, with each table separated by a comment line such as "# Clients (12)". The final toast reads "All data exported (243 rows across 6 tables)." > Every CSV the product writes is protected against formula injection: a cell starting with an equals sign, a plus, a minus or an at sign is prefixed with an apostrophe so a spreadsheet treats it as text. If you see a stray leading apostrophe on a client name beginning with a dash, that is why, and it is deliberate. ##### Invoices shaped for Xero or QuickBooks Underneath the six generic tables on Settings, Data Export sits a second, smaller block headed Accounting Software Export, with two rows: Xero and QuickBooks, each with its own Export CSV. These are not another copy of invoices.csv. They are built to match the column headers each product's own invoice-import screen already expects, so a bookkeeper can hand the file straight to Xero or QuickBooks' import step rather than remapping columns by hand first. Both flatten every invoice down to one row per line item, so a three-line invoice becomes three rows sharing the same invoice number: this is the shape both products' importers expect an invoice to arrive in. Draft invoices are left out entirely: a draft was never actually issued, so there is nothing yet for an accountant to book. Dates are written UK-style, day/month/year with slashes, which is the format both tools read by default. - cleanflo_xero_invoices_2026-08-15.csv: ContactName, InvoiceNumber, InvoiceDate, DueDate, Description, Quantity, UnitAmount, AccountCode. AccountCode is left blank on every row: which nominal code a line belongs to is a decision about your own chart of accounts, and only your bookkeeper can make it, usually during Xero's own import review step. - cleanflo_quickbooks_invoices_2026-08-15.csv: Invoice No, Customer, Invoice Date, Due Date, Item(Product/Service), Item Description, Item Quantity, Item Rate. Item(Product/Service) is written as a placeholder, "Cleaning Services", since matching a line to a specific item in your QuickBooks catalogue is the same kind of decision AccountCode is for Xero. > A VAT column, TaxType on the Xero file, Item Tax Code on the QuickBooks one, is only present at all when your company is marked VAT registered. It is not left blank for a non-VAT company: the column is missing from the file entirely, so nothing in either export implies a VAT scheme that does not apply to your business. > These headers are matched against each product's own documented invoice-import template, not built through a live connection to either one, so there is nothing to authorise and nothing that can go out of sync with your account. If there is nothing invoiced yet to export, the button tells you so rather than writing an empty file: "No invoiced line items to export yet." If Xero or QuickBooks rejects a row on import, do not fight the file: fall back to the general Invoices export from Settings, Data Export while support looks into what your account's Xero or QuickBooks export actually produced. ##### What to actually send your bookkeeper A practical sequence for a VAT quarter, assuming you are on the standard scheme and accounting on invoices raised rather than cash received. 1. Set the range on Reports: Open Reports and choose "Last 90 days". It will not line up exactly with a VAT quarter, which is why the next step matters. 2. Export the invoice ledger: On the Financial tab, press Export CSV on the Invoice ledger card. You get every invoice created in the window with its status, amount, issue date and due date. 3. Trim to the quarter in a spreadsheet: Sort on Issue Date and delete the rows outside your quarter. This is the step the missing custom date picker costs you, and it takes about a minute. 4. Add the client names: If your bookkeeper needs to know who each invoice was for, take invoices.csv from the Invoicing screen instead, which carries a Client column, or send clients.csv alongside. 5. Print the report as a PDF for context: The printed Business Analytics Report states the period in words on its cover and gives the same figures in a form a human can read. Send both: the CSV to work from and the PDF to check against. > HMRC requires VAT-registered businesses to keep their VAT records and account for at least 6 years, and those records must be kept digitally under Making Tax Digital. A CSV sitting in a downloads folder is not a filing system: keep exports somewhere backed up, named by period, alongside the invoices themselves.,CleanFlo holds your financial records for 7 years in line with those obligations, and your data is not deleted if your subscription lapses. That is not a substitute for your own copies. Exporting at each quarter end takes a minute and means a lost password on a Friday afternoon is an inconvenience rather than a problem. > Reports exports summarise. Screen exports mirror what you filtered. Settings, Data Export hands over the tables. If you are ever unsure which to use, take all six from Settings: it is the only export that cannot leave something out. **FAQs** Q: Does CleanFlo connect to Xero, QuickBooks or Sage? A: No, and there is no API for one. For Xero and QuickBooks specifically, Settings, Data Export has a purpose-built CSV in each product's own expected column shape, so nothing needs remapping on the way in. For anything else, including Sage, everything still leaves as a plain CSV that you or your bookkeeper map by hand the first time. Q: Does this connect directly to my Xero or QuickBooks account? A: No. It produces a CSV file shaped to match what those two products expect from a manual import: there is no live API connection, no login to either service, and nothing is sent anywhere on your behalf. You choose when to export and when to bring the file in. Q: Do the exports include invoice line items? A: No. Both invoice exports give you one row per invoice with its total, not the services and quantities inside it. If a line-level breakdown is needed, the individual invoice can be printed from the Invoicing screen. Q: Can I export data for one client only? A: Not from Settings, which always exports whole tables. From the Invoicing screen you can filter to a single client and then export, and the file follows the filter. The same trick works on the Clients, Inventory and Equipment tables. Q: Why does my spreadsheet show odd characters in the accented names? A: It should not: the report exports are written as UTF-8 with a byte order mark, which is exactly what Excel needs to read them correctly. If characters look wrong, the file has probably been opened through an import wizard with the wrong encoding selected rather than by double-clicking it. URL: https://cleanflo.io/help/exporting-your-data/ --- #### Timesheets The hours each cleaner would be paid for in a period, everything still waiting on a decision, and how to change a figure with the reason kept. Owner-only. Your cleaners already clock in and out. This is where those clocks become something you could hand to a payroll system: what each person worked, what is unpaid, what is still waiting on you, and what you changed and why. Find it under Money → Timesheets, after Reports. It is owner-only: a supervisor does not see it. Approving hours authorises money to leave the business against pay rates a supervisor is not allowed to see, which is the same reason they cannot open Profitability. > CleanFlo produces the timesheet. It never produces the payslip. There is no PAYE here, no National Insurance, no pension, no statutory sick pay, and no figure called "net pay". Those belong to your payroll system, which holds the tax codes and is the thing HMRC holds liable. ##### The period, and the four figures It opens on the fortnight ending today, which is the commonest UK pay cycle for hourly staff and covers a weekly one twice over. Change either date and it reloads: the dates are part of the query rather than a filter over everything, so a long history does not get slower to look at. - Would be paid: The hours that would actually go on a payroll import, if you exported the period as it stands. Nothing unresolved is in this figure. - Unpaid breaks: Recorded, shown, and not paid for. Off by default; see Starting and finishing a clean. - Waiting on you: Entries that cannot count until somebody decides. This is the number that matters. - People: How many cleaners recorded any time in the period. > The total and the waiting count are always shown together, deliberately. A total with four unresolved entries behind it is not the same fact as a clean one, and a screen that showed only the first would teach you to trust it. When there is genuinely nothing left, the page says so in a line at the top rather than leaving you to notice the absence of warnings. ##### The three things that wait on you - A proposal: Either travel time CleanFlo found between two of that day's cleans, or something a cleaner asked to have counted: training, a meeting, standby. It carries Accept and Decline. Until you accept it, it is worth nothing: the database will not let a proposal be paid at all. - A flagged entry: Time that arrived from your existing records but could not be trusted as-is: it overlaps another clean the same person was clocked into, it was started and never finished, or it runs longer than eighteen hours. It carries Amend and Resolve. - An open entry: Somebody clocked in and never clocked out. It shows a dash rather than 0h, because "we do not know yet" is not the same as "worked no time". Amend it to close it. > Resolve on a flagged entry is not just tidying. The flag is what lets that entry sit alongside another one covering the same hour; clearing it puts both back into the paid total. If they still overlap, CleanFlo refuses and tells you to amend one of them first, which is the right answer rather than an obstacle. ##### Finding travel between cleans Find travel time looks through the period for gaps between one clean finishing and the next starting, for the same person, on the same day. Each one it finds is offered as a proposal for you to accept or decline. It offers the gap and nothing more. CleanFlo does not know how far apart two of your sites are and will not pretend to; what it knows is that somebody finished at 11:00 and started again at 11:25. Gaps under two minutes are not offered (that is two clocks being tapped) and neither are gaps over two hours or ones that cross midnight, because those are gaps in the day rather than journeys, and offering them would invite you to accept a lunch break as paid travel by clicking through a list. > Why this is worth doing at all: for National Minimum Wage purposes, travel between assignments during the working day is working time. A cleaner doing four cleans across a town can spend ninety unrecorded minutes travelling, and an hourly rate that looked like £12.50 was really nearer £10.20. Running it twice over the same period offers nothing new, so it is safe to press whenever. ##### Changing a figure Amend opens the start and finish times with a required box asking why. It shows what the phone actually clocked beside each field, and works out what the change does in hours: "Adds 16m: 3h 46m becomes 4h 2m", so the decision is made in the terms it is actually about. The reason is not a formality. It is kept permanently, it cannot be edited or deleted afterwards by anyone including you, and the cleaner it is about can see it. That is what makes an approved period defensible six months later, when somebody asks why a Tuesday says 07:58. The clocked times never move. An amended line prints both on the line itself, without anything to open: 08:00–12:00 · clocked 08:14–12:00 · arrived early, waited for keys. That is on purpose: your answer to "why does this say 07:58" should not depend on whether you thought to click. > An amendment that would make two entries overlap is refused, with the reason. So is amending an entry that has already been locked into an approved pay run: those are settled, and the way to fix one is a correction in the current period, which is how payroll corrections work everywhere else. ##### If you do not want any of this Time & payroll is a module, on by default, under Modules. Switching it off hides this screen and the Employment tab, takes the break control off the clean screen, and stops new time being recorded. It does not stop cleans being clocked in and out. That is how the schedule knows a clean started, and the late alerts and your client's clean report both depend on it. Nothing already recorded is deleted, and it all reappears intact if you switch it back on. **FAQs** Q: Where does the time come from? A: Your cleaners clocking in and out on their phones, which they already did. Every clock-in now also writes a line to the timesheet, alongside the clean's own record, so the clean still knows when it started, and the timesheet is a separate thing you can change without rewriting history. Q: Why does one cleaner have entries I never saw them create? A: Almost certainly the historical import. When timesheets were switched on, every clean with a clock-in became a line, and any that could not be trusted as-is came in flagged rather than being dropped or quietly trimmed to fit. They are all listed, with the reason on each. Q: A clean is split into two lines with a break in the middle. Is that right? A: Yes. Somebody is either working or on a break, never both, so starting a break closes the working line and coming back opens a new one. The clean's time is the two added together, and the break sits between them where you can see it. Q: Can I export this to my payroll software? A: Not yet. The export, shaped per provider, is the next piece of this work. What exists now is the record it will be built from, which had to be right first. Q: Can a cleaner change their own hours? A: No. They can clock in and out, start and end a break, and ask for something to be counted, and that arrives here as a proposal worth nothing until you accept it. They can read their own record, including any amendment you made and the reason you gave, which is the point. URL: https://cleanflo.io/help/timesheets/ --- #### Mileage claims Cleaners claiming for journeys in their own vehicle, and approving them at the HMRC rate. Nothing is owed until you approve one. A cleaner who drives their own car between two of your cleans is out of pocket, and the honest way to settle that is the HMRC mileage rate rather than a guess or a tank of fuel. Mileage is where those claims arrive, and approving one is what turns it into money. Mileage is the middle tab of Payroll, under Money out in the sidebar, between Timesheets and Pay runs. It appears only when both the Time & payroll and Mileage claims modules are on, and it carries a count in the tab itself when anything is waiting on you. Everything on it reads the tax year, not the pay period. HMRC's rate steps down after a certain number of miles per person per year, so a claim only makes sense against the year it was driven in. > A claim arrives as Waiting and is worth nothing at all until you decide on it. The figure shown beside a waiting claim is labelled Estimated, and it is an estimate for a real reason: the rate depends on how many miles that person has already had approved this tax year, and the database resolves that at the moment you approve rather than when the claim was filed. Approve two claims in a different order and the second one can land on a different rate. That is the rule working, not a fault. ##### What is waiting on you The tab opens on Waiting on you with a count of how many there are to decide. Each claim is one row: who drove, the date, the miles, the vehicle, where from and where to if they said, any note they left, and the estimate with its working shown underneath. (The Mileage tab. The working under each estimate is the sentence that stops an approval being a leap of faith.) The two decisions sit on the row itself. Approve confirms with "Approved at the HMRC rate for that point in the tax year." Rejecting asks for a reason first, in a field placeholdered "Why, so they know", and confirms with "Rejected, and the reason is on the claim." The reason is not optional politeness: it is what the cleaner sees, and a rejection with no reason is a rejection they will ask you about in person. When there is nothing to decide the section is replaced by a single line: "No mileage claim is waiting on you." A tax year with no claims at all reads "No mileage claimed in this tax year", with the explanation that claims arrive when a cleaner files one for a journey in their own vehicle. ##### The rates, and the band These are HMRC's Approved Mileage Allowance Payment rates, which are statutory figures rather than a CleanFlo setting. Cars and vans step down after the first 10,000 miles in a tax year, per person. A motorcycle and a bicycle are flat however far they go. Vehicle | First 10,000 miles | Beyond 10,000 Car | 45p a mile | 25p a mile Van | 45p a mile | 25p a mile Motorcycle | 24p a mile | 24p a mile Bicycle | 20p a mile | 20p a mile The 10,000-mile point can fall inside a single journey, and CleanFlo says so rather than rounding the whole claim to one rate. A cleaner on 9,950 approved miles claiming 100 gets 50 at 45p and 50 at 25p, and the working under the estimate reads exactly that. > Paying the AMAP rate and no more keeps the payment free of tax and National Insurance, and it does not have to be reported. That is the whole reason to use the statutory figure rather than an amount you have picked. Pay above it and the excess becomes taxable, which is a conversation with your accountant rather than something CleanFlo can settle for you. > Do not pay mileage and reimburse the fuel for the same journey. The mileage rate already includes fuel, along with wear, insurance and everything else the car costs. Expenses refuses a fuel-category reimbursement for exactly this reason: the category is not offered while filing one. Claim the miles, or record fuel for a company vehicle as an ordinary purchase, never both. ##### Filing one on somebody's behalf Record a journey at the top of the tab opens a sheet of the same name, subtitled "Filed as waiting, the same as one a cleaner sends in. Approving it is what sets the rate." It is for the journey somebody told you about in the van rather than filed on their phone. - Who drove: The cleaner it belongs to. The claim is theirs from that point on, and it counts towards their band for the year. - When: The date it was driven. It decides which tax year the claim falls in, so a late claim is still rated against the year it happened. - Miles: The distance. Fractions are fine. - Vehicle: Car, Van, Motorcycle or Bicycle, which is what picks the rate. - From, To and Note: All optional, all worth filling in. They are what makes the claim recognisable in three months. Add the claim files it as Waiting, exactly as if the cleaner had sent it in. You still have to approve it, and that is deliberate: filing and deciding are two acts even when the same person does both. ##### What happens to an approved claim An approved claim carries its resolved rate for good, and it goes out on that person's next pay run as its own named line rather than being folded into their gross. It is money being paid back, not earned, and somebody checking a total needs to be able to see the difference. A claim's four states are Waiting, Approved, Rejected and Paid, the last set once the pay run carrying it is settled. **FAQs** Q: Why did the amount change when I approved it? A: Because the rate is resolved at approval, not at filing. It depends on how many miles that person has already had approved in the tax year, and the 10,000-mile band can fall inside the journey you are approving. The figure before you approve is labelled Estimated for exactly this reason. Q: Can I pay a different rate from HMRC's? A: Not from this screen. The statutory rates are what CleanFlo applies, because paying them and no more keeps the payment free of tax and National Insurance. A company that wants to pay something else is making a decision this screen has not been built to offer yet. Q: A cleaner used a company van. Can they claim mileage? A: No. The AMAP rate is for somebody using their own vehicle and covers the cost of running it. Fuel for a van the business owns is an ordinary company purchase and belongs in Expenses. Q: Where do I turn mileage off? A: Modules, under Account in the sidebar. It hides the tab and stops new claims being filed; every claim already made stays exactly as it was. Switching Time & payroll off takes Mileage with it, whatever this switch says, because Mileage is a tab inside Payroll. Q: A claim was rejected by mistake. A: File it again with Record a journey, on the same date and the same distance, and approve that one. A rejection carries its reason and stays on file rather than being reversed, so the record shows what actually happened. URL: https://cleanflo.io/help/mileage-claims/ --- #### Building and approving a pay run Turning a period of approved hours into what each person is owed, locking it, and handing the file to your payroll package. A pay run is the moment a fortnight of clocked hours stops being a timesheet and becomes what somebody is owed. It is built from a period, checked, and then approved, and approving it locks the lot. Pay runs is the last tab of Payroll, subtitled "What each period came to, and what approving it locked." Its ingredients are the hours on the Timesheets tab, any approved mileage, and any expense reimbursement owed. Nothing is built automatically: you pick a period and build the run. ##### Building one Two date fields, From and To, and a button that builds the run for that period. Before there is one at all, the tab reads No pay run yet, with the reassurance that matters: "Pick a period and build one. Nothing is locked or paid until you approve it." Once there is more than one run, a row of chips across the top lets you move between them. Each chip is the period and its status: Draft, Approved, Exported or Paid. (A draft run. The headline is the gross, the hours behind it and the head count; every line underneath shows its own working, so a figure can be checked rather than trusted.) A line names its own working rather than presenting a total on trust: the basic hours, then overtime, holiday and sick where there are any, then approved mileage, then any expense reimbursement, then the hourly rate it was all costed at. The reimbursement is deliberately named on the line rather than folded into the gross, because it is money being paid back rather than earned, and somebody checking the total needs to see the difference. ##### A dash, never a zero > Somebody with no pay rate on file has no honest figure, so CleanFlo shows a dash and says why. It never shows £0.00. A run that quietly totals nothing for a person who worked 32 hours is the single worst thing this feature could do, and it is worth a moment of friction to make it impossible. The run's own headline carries the count as well, so it is never something you have to spot on one row: "One person has no pay rate on file, so their hours are not in this total. Set their rate on the Staff page and build the run again." The fix is to set the rate on their staff record, then build the period again. The database refuses the approval too, so this is not a warning you can accidentally walk past without being asked. ##### Approving, and what it locks > Approving is irreversible. Every hour in the run is locked and cannot be amended by anybody afterwards: a mistake found later becomes a correcting line in the next period, never an edit to this one. CleanFlo puts that sentence next to the button rather than in a message after it, because it is not a consequence to discover by pressing something. 1. Check the lines: Every person, their hours by kind, and the rate each was costed at. This is the last moment any of it can be changed. 2. Press Approve this run: It does not approve. It asks, and the question is the consequence: "Approving locks every hour in this run. After that a mistake can only be corrected in a later period, never edited here." 3. Confirm with Yes, approve and lock: CleanFlo confirms with "Approved. Every hour in it is locked now." The run's status becomes Approved and the screen says when. Where somebody is unrated the wording changes to match what you are actually agreeing to. The warning reads "Approving now leaves those people's hours unvalued in this run. They will not be paid for them here", and the button says Approve anyway rather than Yes, approve and lock. It is allowed, because sometimes a run has to go out and one person's rate is a separate problem. It is never allowed quietly. A draft you no longer want is removed with Delete draft, which confirms with "Draft deleted." Nothing about the underlying hours is touched: a run is a reading of the timesheet, not the timesheet itself, so deleting a draft and building it again gives you the same figures. ##### Handing it to your payroll package Export for payroll appears only once a run is settled, and that restriction is the point: a file built from a draft would be an import of figures still able to change. The database refuses it too. The sheet is titled Export this pay run and subtitled with the period and one promise: the file is built in your own browser and downloaded, and nothing is uploaded or stored. Pick a Payroll package and press Download the file. - BrightPay: The import format BrightPay expects. - Xero Payroll UK: The import format Xero's UK payroll expects. - Generic CSV: For anything else, and for your accountant to map by hand. Pay elements go out as separate lines rather than one lump per person, so your package can map basic, overtime, holiday, sick, mileage and reimbursement to its own codes on import. The period is written on every row, which is how you can tell later that you have already imported a given run. > A person with no payroll reference blocks the export outright, because the file would not import for them: their line has nothing for the payroll package to match against. The message names who, and the reference is set on their Employment tab under Contract. A person with no pay rate is a softer case and is simply left out of the file, on the reasoning that importing their hours as nothing is worse than importing nothing at all. Before you download, the sheet tells you what you are about to get: how many lines, across how many people. After an export the run reads Exported and shows when, and in which format. **FAQs** Q: I approved a run with a mistake in it. A: It cannot be edited, by anyone. Correct it as a line in the next period. That is the model rather than a limitation: a locked run is a record of what you agreed to pay, and a record that can be quietly changed afterwards is not worth keeping. Q: Somebody shows a dash instead of an amount. A: They have no pay rate on file. Set it on their staff record and build the period again. CleanFlo will not show a zero for hours somebody actually worked, and it will not approve around it without asking you explicitly. Q: Why can I not export a draft? A: Because the figures in it can still change, and a payroll import of numbers that might move is worse than no import. Approve the run first, which is what fixes those figures as the record. Q: Does CleanFlo pay anybody or file anything with HMRC? A: No. It works out what each person is owed and hands you a file. Paying wages and filing RTI are your payroll package's clean, and CleanFlo does not touch either. Q: Where do expenses and mileage come into it? A: An approved mileage claim and an approved reimbursement both ride out on that person's next run, each named on their line rather than folded into the gross, because they are money being paid back rather than earned. URL: https://cleanflo.io/help/pay-runs/ --- #### Recording expenses and reimbursements What the business bought, with the receipt and the VAT split, and reimbursing a cleaner who paid for something themselves. Owner-only, and nothing is deleted when the module is off. Labour has always had a rate. CleanFlo has priced a clean from it since the beginning. Everything else a clean actually costs, from the chemicals to the van to the insurance, had nowhere to go. Expenses is where it goes: what the business bought, and what it owes somebody who paid for something themselves. Expenses is a company-level module, on by default and off for a business that would rather not track this yet (Modules). Switching it off hides the screen and refuses new spend at the database, not only on screen; nothing already recorded is deleted, and switching it back on restores the ledger exactly as it was left. It is also owner-only. Expenses is money-out: the company’s whole cost base, its suppliers, its insurance premium, its rent. CleanFlo keeps money and the sales pipeline off a supervisor’s reach the same way Invoicing already is. A supervisor’s sidebar never shows this screen at all. ##### One ledger, two kinds of spend Every row is one of two things, and they differ only in who is owed money at the end. A company purchase is the business paying directly, by card, transfer or direct debit, and nobody is owed anything: it is simply recorded. A staff reimbursement is a cleaner spending their own money on the business’s behalf, and it carries a status that walks through Waiting → Approved or Rejected → Paid, the last of those set once it rides out on that person’s next pay run. (The Ledger tab: every purchase, plus a reimbursement once it has been decided. A reimbursement still only waiting on you lives in the Reimbursements tab instead, so it is never counted twice.) ##### Recording a company purchase Record an expense opens one sheet for both kinds of row. Type defaults to Company purchase, so the common case (the business bought something) needs nothing extra: a date, a category, what it was, an optional supplier, and the net amount. (Recording a purchase. The total updates as you type, and a receipt is optional: the field is there for the record, not a gate on saving.) A company that is not VAT registered never sees a VAT field at all: it enters the full amount paid as the net figure, and the database refuses a VAT amount from that company outright rather than trusting the screen alone to keep it off. A registered company may still record zero VAT, for a zero-rated or exempt purchase; that is a real answer, not a missing one. > The Vehicle registration field is free text, not a picker into the vehicle register, because a receipt for a van the company no longer runs still has to say which one it was. ##### Filing a reimbursement Switch Type to Staff reimbursement and a Who spent it field appears. There is no reimbursement screen in the cleaner app yet, so v1’s route is the same one mileage claims use: the owner files it on the person’s behalf, exactly as it would arrive by text message in a small firm. The self-service policy that will let a cleaner file their own is already built into the database, ready for the screen that will use it. > Fuel is never offered as a category while filing a reimbursement. The mileage rate already prices the petrol in, so reimbursing a fuel receipt on top would pay for the same journey twice. That is refused at the database, not only hidden on screen. Claim mileage for the journey instead, or record fuel for a company vehicle as an ordinary purchase. ##### Approving or rejecting a reimbursement Every reimbursement still submitted sits in the Reimbursements tab, under Waiting on you, with the amount they claimed and what it was for. Nothing is owed until you decide. (The queue. Rejecting asks for a one-line reason so the person knows why; approving needs nothing more: the amount was typed and evidenced at submission, so there is no rate left to resolve.) Approving stamps who decided it and when, and the reimbursement rides out on that person’s next pay run, the same mechanism a mileage claim uses. A reimbursement cannot be approved twice, and a company purchase cannot be approved at all: it was never a request in the first place. ##### Categories A fixed list rather than one you edit. A settings screen and a migration for a list almost nobody touches was not worth building. It runs: Consumables, Equipment, Fuel, Vehicle, Staff costs, Insurance, Subscriptions, Professional, Marketing, Premises, and Other. > Equipment is the one category worth a second look. A £900 machine is capital, and an accountant treats it differently from a bag of cloths. CleanFlo captures the spend either way: it does not attempt to apply tax law on your behalf, only to say, once, that a larger purchase here may be worth treating as an asset. ##### Receipts A receipt is optional and attaches as a JPEG, PNG, HEIC or PDF up to 20MB, held in a private store, never a public link, so nobody with the address alone can open a document with your bank details on it. You see your own company’s receipts; a cleaner sees only their own. A cleaner who filed a reimbursement cannot remove the receipt behind it once it is in (the same reason they cannot edit or withdraw the claim itself), but you can, which is what clears an upload nothing ever came to reference. ##### Getting it out Export CSV on the Ledger tab downloads every row in the period you have set (type, date, category, supplier, net, VAT, gross, who it was reimbursed to), ready for a bookkeeper or an accounting import, the same shape every other export in CleanFlo uses. ##### Turning Expenses off From Modules. It hides Expenses from the sidebar and stops any new purchase or reimbursement being recorded: the database itself refuses the write, not only the screen. Nothing already entered is deleted, and every receipt stays exactly where it was. Switch it back on and the ledger reappears precisely as you left it. **FAQs** Q: What is the difference between a purchase and a reimbursement? A: A purchase is the business paying directly, by card payment or supplier invoice, and nobody is owed anything. A reimbursement is a cleaner spending their own money on the business’s behalf, and it moves through a waiting, approved or rejected, then paid status until it rides out on their pay run. Q: Can a cleaner file their own expense yet? A: Not in v1. There is no expenses screen in the cleaner app yet, so today the owner files a reimbursement on somebody’s behalf. The database policy that will let a cleaner self-serve is already built, ready for that screen. Q: Can I claim mileage and reimburse fuel for the same trip? A: No. The HMRC mileage rate already covers the fuel, so a fuel-category reimbursement is refused outright: the category is not even offered while filing one. Claim mileage for the journey, or record fuel for a company vehicle as an ordinary purchase. Q: What happens to VAT if my company is not VAT registered? A: The VAT field does not appear. Enter the full amount paid as the net figure. The database refuses a VAT amount from a company that is not registered, because it has nothing to reclaim it against. Q: Can I turn Expenses off if I do not want to track it yet? A: Yes, from Modules, under Account in the sidebar. It hides the screen and stops new spend being recorded; nothing already entered is deleted, and switching it back on restores everything exactly as it was. URL: https://cleanflo.io/help/expenses/ ### Messages & alerts #### Messaging your team Messaging inside CleanFlo attaches to the business rather than to somebody's phone. Channels, direct messages, what a cleaner sees, and what a WhatsApp group eventually costs you. Messages is the conversation your team is already having, moved inside the product where the cleans are. Channels for groups, direct messages for one person, and the same threads on the cleaner app. Almost every cleaning company of this size runs on a WhatsApp group. It works, right up until the point it does not: a cleaner leaves and takes two years of client addresses with them on their own phone, nobody can find what was agreed about the key safe, and your personal number is the out-of-hours line whether you like it or not. Messages replaces that group. It is the same shape of thing, deliberately, because the point is not to teach anyone a new habit. What changes is where it lives: inside the account you control, beside the cleans it is about, and gone from a leaver's phone the moment you deactivate them. The WhatsApp group | Messages in CleanFlo Your personal mobile number | An account you can switch off History leaves with whoever leaves | History stays with the company Client addresses in a consumer app | Client addresses inside the system holding them anyway "Which Tuesday did we say?" | A system message in the thread saying the clean moved One group for everything | A channel per round, plus one-to-one threads Read receipts you cannot switch off | Read receipts naming who has actually read it ##### The Messages screen This route looks different from every other screen in the product, because it has no page header. The only page title is the strip at the very top reading "Messages". Below that the screen is two panes: a 320-pixel conversation rail on the left and the open conversation filling everything else. Under about 860 pixels wide the two become alternate views of the same screen, with a Conversations back button to get from the thread to the list. (The Messages workspace. The rail on the left, the thread on the right, and nothing else competing for the space. Unread conversations carry a count on the right of their preview line.) At the top of the rail sits a search field placeholdered "Search channels...", and under it a pair of filters, All and Unread. The Unread filter carries a chip with your total unread count whenever there is one. Below that, two sections in a fixed order. - Channels: Group conversations, shown with a hash glyph. Only an admin can create or archive one, and their header carries the archive and plus buttons to do it. - Direct Messages: One-to-one threads, shown with the person's initials. Everyone gets a plus button here, because everyone needs to be able to start one. Each row is an avatar and two lines. The top line is the name, a bell-with-a-slash if you have muted it, and a timestamp on the right that reads the clock time today, then "Yesterday", then a short weekday inside the last week, then a date such as "9 Aug". The bottom line is the last message, prefixed "You: " when it was yours and with the sender's first name in a group. With nothing in the conversation yet, it reads an italic "No messages yet". ##### The unread badge, and where it appears Unread counts appear in three places at once, and all three use the same rule: the number, or 99+ once it goes past ninety-nine. (The badge on the sidebar item, on a rail row, and on the cleaner app's tab bar. It never shows a raw number above 99, because a four-digit badge tells you nothing you did not already know.) - On the Messages item in the sidebar, as a total across every conversation. - On each row in the conversation rail, as that conversation's own count. - On the cleaner app's tab bar, where Messages is the only tab that is ever badged. Opening a conversation clears its count. A new message arriving anywhere in the product also fires a small toast reading "New message from Aisha Nowak" for a direct message or "New message in #north-round" for a channel, and clicking that toast takes you straight to the thread. That toast reaches you on any screen, so you do not have to be sitting on Messages to notice. ##### Inside a conversation The header shows the name, prefixed with a literal hash for anything that is not a direct message. The subtitle underneath is doing real work: in a direct message it reads Online now or Offline, and in a channel it reads the description if one is set, or the member count if not. The composer is placeholdered "Type a message...". Enter sends and Shift with Enter starts a new line. A message is capped at 4,000 characters, with a counter appearing at 3,600 that reads "312 left", and you can attach a maximum of three files per message. Drag a file over the thread and an overlay appears reading "Drop to attach". - Reactions: Hovering a message reveals three quick reactions, thumbs up, tick and eyes, plus a fuller picker grouped as Acknowledge, Feeling, Celebrate, On the clean and Attention. A tick from a cleaner is a much cheaper acknowledgement than a message saying "ok". - Replies: Reply to a specific message and the quoted original sits above your text, so a thread with four things happening at once stays readable. - Editing: Your own messages can be edited in place. An edited message carries a lower-case "edited" beside its time, so nothing is quietly rewritten. - Deleting: Your own messages can be deleted, and there is no confirmation dialog. The message becomes a muted bubble reading "This message was deleted" rather than vanishing. - Pinning: Admins can pin a message to the channel. Pins appear in a bar above the thread, and jumping to one scrolls the thread back to it. > Delivery marks are deliberately honest. Your own message shows Sending, then Sent, then Read or Read by 3 once people have seen it, and clicking the double tick opens a list naming exactly who. There is no "delivered" state, because "it reached a server" is not information anybody needs. Day dividers read "Today", "Yesterday", then the weekday inside the last week. Where you left off is marked with a New messages line that is frozen when the thread opens, so it cannot creep down the screen as you read. Scroll up far enough and a Jump to latest pill appears. ##### Channels, broadcasts and who can talk to whom A channel is created by an admin from the plus button on the Channels header. The dialog asks four things, and the third and fourth are the ones worth thinking about. (Creating a channel. "Who can post" is the choice between a conversation and an announcement board, and it cannot be casually undone later.) A broadcast channel is for the things nobody should be replying to: the bank holiday rota, the new uniform policy. Cleaners see it, and where the composer would be they get a single line telling them only admins can post in broadcast channels. Its header carries a "Broadcast" chip so nobody is confused about why they cannot type. Who can message whom is decided by one checkbox, and it lives on the Company tab of Settings rather than here. Off is the default, and off means cleaners can only message you, not one another. Turn it on and everybody can start a thread with anybody. Admins can always see and message everyone. (Channel settings, which slides in over the thread as one scrolling column rather than tabs. Note that "Notify members" is the rule for everyone and "Notify me" is your own mute.) > Two controls in that panel fire immediately with no confirmation: removing a member, and Archive channel. Archiving is recoverable from the archived channels sheet, so it is a scare rather than a disaster, but it happens on the click. ##### The messages the product writes itself Some things arrive in a thread without anybody typing them. When a clean is assigned, moved or cancelled, a system message is posted into that cleaner's conversation with you. It renders as a centred notice rather than a bubble: no avatar, no reactions, no reply, no edit. (The labels a system message can carry inside a conversation. The five business events, invoice paid and stock low among them, never enter chat: they go to the activity feed instead.) This is the point of putting them in the thread rather than only in a push notification. A cleaner who turns up on the wrong Tuesday can scroll back and see, in the conversation they already have with you, the line saying the clean moved and when it said so. A dismissed notification proves nothing to anybody. ##### What your cleaners see On the phone, Messages is the fourth of five tabs, between My time and Me. It is the same conversations, drawn for a thumb. (The cleaner app's Messages tab. A conversation is an entry like any other: when it last moved, in the rail; a mark in the margin only while it is still waiting on you; then who it is with and the last thing said. Today's conversations carry a clock time and older ones carry their date, so the whole column still reads as one straight line.) - The header title reads Messages with a subtitle counting unread, or You are all caught up when there are none. - A search box placeholdered "Search conversations", and a two-way filter of All and Unread, the latter reading "Unread (3)" when there are any. - A footer button, Message your manager, which is always there. A cleaner who cannot find you should never have to. - With no conversations at all: "No conversations yet" over "Messages from your manager and the rest of the team land here." - Opening a thread hides the tab bar and gives it the whole screen, with a back label reading "Messages". The thread itself is the same component you are using: same reactions, same replies, same read marks. It also works with no signal. A message typed underground is held on the phone and sent when the network comes back, and the toast says so rather than pretending it has gone. > The reason to move off WhatsApp is not that WhatsApp is bad. It is that the conversation about a clean should be in the same place as the clean, and it should belong to the business rather than to whoever happens to hold the phone. **FAQs** Q: Can cleaners message each other, or only me? A: By default, only you. The Company tab of Settings has a checkbox reading "Allow staff to message each other directly", and until it is ticked a cleaner opening a new direct message sees only admins in the list. Channels are unaffected: anybody in a channel can post in it unless it is a broadcast. Q: What happens to the messages when a cleaner leaves? A: The history stays. Deactivating someone removes their access, but the conversations remain in your account, which is the main practical reason to run team messaging here rather than in a group chat on somebody's personal phone. Q: Can I delete a channel? A: No. There is no delete and no leave anywhere in the channel settings panel. The only option is Archive channel, which hides it for everyone while keeping its history, and any admin can restore it from the archived channels sheet. Q: Do messages send push notifications to phones? A: Only if the person has turned push on for their browser. The opt-in card lives in the notification dropdown on the web and under Push Notifications on the cleaner app's Me tab. Without it, messages still arrive, they are just not announced when the app is closed. URL: https://cleanflo.io/help/messages/ --- #### Notifications and alerts The bell and the activity feed behind it, the four filter tabs, turning browser push on, what happens when it is blocked, and every event CleanFlo raises automatically. Three separate things sit behind the word "notification": a feed of what has happened, a push to a phone or a laptop, and an email. This is which is which, and what triggers each one. CleanFlo raises alerts on its own for a small, fixed set of events. It does not invent things to tell you about, and there is no digest, no "you might like", no engagement nudge. If the bell has a dot on it, something happened that you asked for by running a cleaning company. The bell sits in the top bar, between the theme toggle and the help button, and grows a small teal dot the moment there is anything unread. Click it and a panel drops down. On a phone the same panel comes up from the bottom of the screen as a sheet, with a dimming scrim behind it, because a dropdown anchored to the top-right corner of a phone is unusable. ##### The notification panel The panel is headed Notifications. Beside that heading, and only while something is unread, sits a link-button reading Mark all as read. Clear the lot and the link disappears along with the dot on the bell. (The notification panel with the push opt-in card above the list. Each row is a coloured category chip, a line of text and a time-ago stamp on the right.) Every row follows one pattern: the actor in bold, what they did in plain text, then the thing they did it to in bold again. Something the system did rather than a person, such as an invoice being marked paid by a webhook, shows the target alone in bold with no actor in front of it. The stamp on the right is relative for as long as that is useful, then absolute. Age of the event | What the stamp reads Under a minute | Just now Under an hour | 5m ago Under a day | 3h ago Under a week | 2d ago A week or more | 12 Aug ##### The four tabs Under the header sits a strip of four filters. They are not four different inboxes: they are four views of one list, split by how the thing reached you. - All: Everything, newest first. Where the panel opens. - Emails: Anything that also left as an email: an invoice, a schedule, a low-stock alert. - Notifications: Anything that was pushed to a device. - Activity: Things that happened inside the account without leaving it. The coloured chip on the left of each row tells you what area it came from, and the colours are consistent across the whole product: green for cleans, amber for invoices, teal for clients, sky for inventory, blue for staff, red for health and safety, and a muted grey for anything the system raised itself. (The category colours, which are the same hues the rest of the app uses for those areas. Nothing here is decorative: the colour is how you scan the list without reading it.) (A brand new account, or a filter tab with nothing in it. The empty state is one line and no button, because there is nothing here for you to do.) ##### Turning push notifications on Browser push is off until you turn it on, and the offer to turn it on lives inside the notification panel rather than as an unprompted browser popup on your second click. That is deliberate: the person opening the bell is already the person who wants alerts. The card is headed Get clean alerts and reads "Know when a clean is assigned or finished, even with CleanFlo closed." Beside it is a primary button reading Turn on, which becomes Enabling… while the browser prompt is up. Accept the browser prompt and the card disappears for good. (The blocked state. It replaces the opt-in card and has no button, because nothing CleanFlo can do will change a permission you have already refused in the browser.) > Blocked means blocked at the browser, not in CleanFlo. Nothing in Settings will fix it. In Chrome it is the padlock beside the address bar, then Notifications. On an iPhone the app must first be added to the home screen before Safari will offer push at all. There is no notifications tab in Settings. Push consent belongs to the browser, so the only two places it is offered are this card and, for cleaners, the Push Notifications group on the Me tab of their phone app. ##### Everything that sends by itself The list is short and it is fixed. Nothing below can be switched off individually, and there is no per-event preference screen. ###### To the cleaner What happened | Push title | Also posted in their thread as A clean is created and assigned to them | New clean assigned | New clean assigned A clean they are on is edited | Clean updated | Clean updated A clean they are on is cancelled | Clean cancelled | Clean cancelled A clean they are on is deleted | Clean deleted | Clean removed A clean changes status some other way | Clean status changed | Nothing Their fortnightly schedule is emailed out | Schedule updated | Schedule sent Time off is approved or declined | Time off approved or Time off declined | Time off Assignment, a change of day and a cancellation are the three that matter, and they are the three that get sent twice on purpose. A push is gone the moment it is swiped away. The same event is also written into that cleaner's conversation with you as a system message, so it is still there on Tuesday when somebody says nobody told them. ###### To you - Invoice paid, when an invoice is settled. - Supply request, when a cleaner asks for stock from inside a clean. - Time off request, when a cleaner asks for a day. - A health and safety push naming the incident type and its severity, whenever an incident is logged. - A low stock email, sent once per threshold crossing, listing the items that need reordering. > Business events stay out of chat on purpose. Invoice paid, low stock, an incident logged, a supply request: these appear in the activity feed and as a push, and they never enter a conversation. Filling the channel you use to coordinate cleaners with accounting events would make it unusable. ###### To the client Clients have no login and no thread, so everything aimed at them is email: the invoice or quote itself, an overdue reminder, a job-completed note, a cancellation, and a lost-property note if something is found. Those are sent by you from the relevant screen rather than fired automatically. ##### The cleaner side of alerts A cleaner controls their own alerts from the Me tab of the phone app, in two groups near the bottom of the screen. (Push Notifications and Daily Briefing on a cleaner's Me tab. Both are ruled lines on the paper, not panels laid over it, and the one key on the screen is in the same working ink as every other key in the app. The briefing is on by default at seven in the morning, and the send time is a fixed list of half hours from five to ten.) The Push Notifications group only appears at all if the phone supports it. Once granted, the group collapses to a single ruled line: a tick in the margin and the one word Enabled. If the cleaner has refused permission, the line explains that alerts are blocked and that they need to allow notifications for the site in their browser settings, which is the same dead end you get on the web. The Daily Briefing is the one alert that is on by default. It sends a morning notification and an email listing that day's cleans. The send time is a select rather than a clock: 05:00 through to 10:00 in half-hour steps, defaulting to 07:00. Set it to when the round actually starts, not when you would like it to. > Push tells somebody now. The activity feed tells you what happened. The system message in a thread is the one that is still there in a fortnight. The product sends all three for the events that cause arguments, and only one or two for the rest. ##### Keeping the bell useful - Use Mark all as read once a day rather than picking rows off. The feed is a record, not a to-do list: marking read does not delete anything. - If you only want to know about money, sit on the Emails tab. Invoices and low-stock alerts both leave as email and both land there. - The Activity tab is the one to open when somebody says "I did change that" and you want to know when. - Turn push on once, on the machine you actually work from. Turning it on in a browser you use twice a year is how you end up with alerts on a laptop in a drawer. One thing the bell is not: it is not a place cleaners look. Cleaners get their alerts on their own phone and their instructions in their own thread. Nothing you do in this panel reaches them. **FAQs** Q: Can I choose which notifications I get? A: Not individually. There is no per-event preference screen and no notifications tab in Settings. The only switch is browser push as a whole, on or off, plus the per-channel notification rules inside Messages, which control chat only. Q: Why has nothing arrived on my phone even though push is on? A: Push is granted per browser, per device. Turning it on at your desk does nothing for the browser on your phone: you need to open CleanFlo there and press Turn on again. On an iPhone the site has to be added to the home screen before Safari will offer notifications at all. Q: A cleaner says they were never told a clean moved. Can I prove otherwise? A: Yes, and this is why clean changes are sent twice. Open their direct message thread and scroll to the date: an edited clean posts a "Clean updated" system message into that conversation with the job title, the date and a timestamp. Unlike a push, it does not disappear when it is dismissed. Q: Does marking everything as read delete the history? A: No. It clears the dot on the bell and the unread styling on the rows. The feed keeps its entries and the Activity tab keeps showing them in order. URL: https://cleanflo.io/help/notifications/ ### Settings & account #### Your company details The Company tab of Settings: every field, what it changes on your invoices, quotes and client portal, and which settings live on other screens instead. Settings holds seven sections and no more. The first of them, Company, is the set of details that end up printed on documents your clients read, so it is worth ten minutes on the day you sign up. Settings has no action buttons, no stats and no search: just a rail of sections down the left, subtitled "Manage your company and account". On a narrow screen that rail collapses to the always-visible essentials, with a More sections disclosure revealing the rest. (The whole of Settings. Seven sections, in this order. Modules, Data Export and Data Import fold behind "More sections" on a phone; Billing never does, because a failed payment is the one thing here somebody arrives in a hurry to fix.) - Company: Your business details. What this article is about. - My Account: Your own name, your login email and your password. - Notifications: Your own push and email preferences, per channel. - Modules: Switching whole optional features (messaging, enquiries, your website, referrals, shift swaps, equipment, and Time & payroll) on or off for your company. - Billing: Your CleanFlo subscription and the Stripe portal. - Data Export: Six CSV downloads, or all six at once. - Data Import: The same CSV importer the setup wizard offers, for bringing in clients, sites, services or staff later. Each section has its own address, so /settings?tab=billing is a link you can bookmark. Arrow keys move between them when the rail has focus. A supervisor reaches Settings for their own account and their own notification preferences and nothing else, Company, Modules, Billing, Data Export and Data Import are all owner-only, and the rail simply does not offer them. ##### The Company tab, field by field The section is headed Company details and its subtitle tells you exactly why it matters: "Your business information shown on invoices and client communications." Nothing here is cosmetic. Every field on this tab is read by a document somebody outside your company will see. (The Company tab. The two checkbox rows at the bottom are drawn here as switches; on screen they are plain checkboxes with a rule label above each group.) Further down the same tab, past VAT, sit sections that used to have no home at all before the features they configure existed: a Pay Now link your invoices fall back to, a Messaging toggle, the Client Portal block covered in full in The client portal (review link, office hours, a reply-time promise, and whether "Powered by CleanFlo" shows: the hint under that switch names your website as well, because the same setting decides whether the foot of your public page reads "Made with CleanFlo"), Breaks (whether a recorded break is paid, off by default, and covered in Starting and finishing a clean), Lone-worker safety and Late-start alerts (both covered in Assigning a cleaner and Starting and finishing a clean), a Safety sign-off setting and a written Health & safety position statement (both covered in Writing a risk assessment). Two more sections, Public quote form and Client referral program, only appear at all once the Enquiries or Referrals modules are switched on under Modules. Public quote form reaches further than its own section: with Your website switched on too, its hint adds "Your website at cleanflo.io/p/brennan-cleaning uses this form too", and switching the form off takes it off that page as well as off the standalone link. None of it is required to get a first invoice out; the fields at the top of this article still are. ##### Where each field comes out Field | Where it appears Company name | The top of every invoice and quote, the "From" row of the client portal, and the sender line of every email the product sends. The only required field on the tab. Company number | Stored on your record. It is captured at signup and kept for your account, and it is not printed on the invoice or the quote. Business address | Under your name on invoices and quotes, and beside your name in the client portal. One free-text line. Contact phone | Under the address on invoices and quotes, and in the invoice and quote emails. Number of cleaners | Stored only. Nothing reads it back out onto a document or a report. It was asked at signup and this is where it can be corrected. Currency | Every money figure in the product: invoices, quotes, reports, the CSV exports and the client portal. VAT registered and VAT number | Turning it on is what makes invoices and quotes carry VAT at all, and prints the line "VAT No: GB 412 8836 05" under your address. Allow staff to message each other directly | Messages only. Off by default, and off means a cleaner starting a new direct message can only pick an admin. (The head of an invoice. Everything in the left-hand block came from four fields on the Company tab, and the VAT number line only prints because "VAT registered" is ticked.) > A VAT invoice has to carry your VAT registration number to be valid, and a client who cannot see it cannot reclaim the VAT on it. That number reaches the document from this one field, and only when the VAT registered checkbox is ticked. Untick the box and save, and the stored number is cleared, so re-ticking means typing it again. (The client portal. Your company name and address are the "From" line a client reads before anything else, which is the second reason to get the address right.) ##### Saving, and the save bar Every editable block on Settings ends in the same save bar, and it behaves the same way everywhere: a message area on the left, then Discard and Save changes on the right. Both buttons are dead until something has actually changed, so a stray click cannot save a form you only looked at. (The save bar in its three states: clean, saved, and rejecting an empty company name. The saved confirmation is a green tick and the single word "Saved".) - A successful save shows a green tick and Saved in the bar, and a toast reading "Company details saved". - The only validation on this tab is that the company name cannot be blank: "Company name is required." - Discard asks first. The confirm reads "Discard unsaved changes?" with Cancel and a red Discard. - While saving, the button keeps its label and its icon becomes a spinner, so the bar never jumps. > That discard confirm is the only destructive-looking dialog anywhere on Settings. There is no danger zone on this screen, no delete company button and no delete account button. ##### What is not on this screen A good half of the questions about Settings are about things that live somewhere else. Here is the map. What you are looking for | Where it actually is Invoice number prefix, next number, payment terms | Invoicing, then its own Settings BACS details: bank, account name, sort code, account number | Invoicing, then its own Settings Invoice footer, default notes, payment reference format | Invoicing, then its own Settings Invoice layout and branding | Invoicing, then its own Settings Adding, editing or deactivating a cleaner | Staff Turning browser push on for a clean alert | The bell in the top bar prompts you there and then; per-channel preferences live on the Notifications tab here Cancelling your subscription | The Stripe portal, reached from the Billing tab Promoting a cleaner to supervisor | Staff, from their own row, owner-only, and there is no separate roles screen Importing clients, sites, services or staff from a spreadsheet | The Data Import tab here, or the setup wizard's Import step And a few things that do not exist anywhere in the product, so that you stop looking: there is no logo upload, no separate address, city and postcode fields, no VAT rate setting, no timezone or date-format picker, and no fine-grained permissions grid beyond the owner/supervisor/cleaner split. > The fields at the top of the Company tab, name, number, address, phone, cleaner count, currency and VAT, are the ones that get printed on something a client reads, and the ones worth getting right on the first afternoon. Everything further down configures an optional feature and can wait until you actually switch that feature on. ##### The order to fill it in 1. Company name exactly as you trade: Including "Ltd" if you are a limited company. This is what appears on the invoice and in the client portal, so it needs to match what a client will pay against. 2. Business address on one line: Comma-separated, ending with the postcode. It is a single free-text field, and the placeholder shows the shape it expects: "123 High Street, London, EC1A 1BB". 3. Contact phone in a form a client can dial: This is the number that goes on the invoice and in the emails, so use the business line rather than a mobile you answer in the van. 4. Currency before you raise anything: Seven options, from British Pound through to Japanese Yen. Change it later and existing figures will re-render with the new symbol, so pick it before the first invoice goes out. 5. VAT, if you are registered: Tick VAT registered and the VAT number field appears underneath. Until you do, invoices carry no VAT at all, which is the correct behaviour for a business under the threshold. 6. Decide the messaging rule: Leave staff-to-staff messaging off unless you want cleaners talking to each other without you in the thread. It can be switched on later without losing anything. **FAQs** Q: Where do I upload my company logo? A: You cannot. There is no logo upload anywhere in CleanFlo. Invoice appearance is controlled by the layout options under Invoicing and its own settings, and those work from your company name set as type rather than an image. Q: Why is my company number not on my invoices? A: It is stored but never printed. Only the company name, address, phone and, when you are VAT registered, the VAT number appear in the invoice header block. If you need the company number on your documents, the practical workaround is to append it to the business address line. Q: I changed the currency and my old invoices changed too. Is that expected? A: Yes. The currency is a company-wide symbol rather than something stored per invoice, so every money figure in the product renders with whatever is selected here. Set it once at the start and leave it alone. Q: Where are the bank details that print on an invoice? A: Under Invoicing, on its own settings, not here. Bank name, account name, sort code, account number and the payment reference format all live with the invoicing configuration because they are invoice fields rather than company fields. URL: https://cleanflo.io/help/company-settings/ --- #### Switching parts of CleanFlo off Fourteen parts of CleanFlo you can switch off if your business does not need them. Switching one off hides it for everyone and stops new activity; nothing already recorded is ever deleted. CleanFlo carries more than most cleaning companies need. A two-van domestic round has no equipment register to keep and no waste notes to sign, and every screen it will never open is one more thing between it and the one it will. Modules is where those get put away. Modules sits under Account in the sidebar, between Settings and Support. It was a tab inside Settings until recently and moved out because fourteen subsystems explained properly need more room than a tab strip gives them. It is owner-only: a supervisor has no Modules item and no route to one. The page opens with the sentence that governs everything on it: "Switching a module off hides it for everyone at your company and stops new activity in it. Nothing already recorded is ever deleted: switch it back on and it is exactly as you left it." That is not reassurance written for the page, it is what the code does. Nothing here deletes anything. (Modules. One ruled list, fourteen rows, each led by its own switch. The count beside the panel heading is the number of modules, not the number switched on.) ##### What one row holds Every module is one row, and every row is the same four things in the same order. - The switch, with the module's name on it: The name is the label of the switch itself rather than a heading above it, which is why it leads the row. A module you have never touched is on: CleanFlo reads anything that is not explicitly off as on, so a new account arrives with all fourteen running. - One line saying what switching it off stops: Always on the page, never behind the disclosure. It is written to be readable in one pass down the list, so you can find the one you are after without opening anything. - A More detail disclosure: Two paragraphs: what the module actually covers, named in the app's own words, and what your company keeps against what it loses. Closed by default, because fourteen modules explained at length is a page nobody reads. - A link into this Help Centre: At the foot of the opened detail, reading Read the guide: … and naming the guide it opens. Where a module has no guide of its own yet it reads Search the Help Centre instead and opens the hub, rather than guessing at a page. > Switching a module on happens immediately and asks nothing, because turning something on takes nothing away. Switching one off asks first: "Switch Equipment off? It disappears for everyone at your company and no new activity is possible in it. Nothing already recorded is deleted, and switching it back on restores it exactly as it is now." The confirming button says Switch off. The switch moves before the save has finished and moves back if the save is refused, with the reason printed beside the row. So a switch that flicks and then flicks back is not a glitch: it is the write being turned down, and the message under it says by what. ##### What each one takes with it In the order the page lists them. The middle column is what switching it off takes away; the right column is what stays on file regardless. Module | Switching it off hides | What is kept Messaging | Messages, everywhere, for everyone | Every conversation already had Shift swaps | The request button in the cleaner app | Every swap already approved Checklist requirements | The Requirements disclosure on a template or job checklist item, and the photo and reading controls in the cleaner app | Every requirement already set, every photo and reading already recorded, and every override reason. A clean under way can still be finished Property issues | The Property issues panel on a property record and on a client record, and the Report an issue control in the cleaner app | Every issue already raised, with its photographs, and everything written about how it was resolved Equipment | Equipment, and new loans and maintenance | The register itself Referrals | The referral card in the client portal, and your own code | Every referral already attributed Enquiries | The public request-a-quote form, and Enquiries | Every enquiry already received Your website | Your public page, and Web Page | Everything you wrote for it Time & payroll | Payroll, the Employment tab, and the break control on the clean screen | Every hour already recorded Mileage claims | The Mileage tab, and new claims | Every claim already made Vehicles | Vehicles, and the cleaner app's vehicle row | Every check, defect and service entry Expenses | Expenses, and new spend or reimbursement | Every entry, and every receipt Waste Transfers | New collections only. The records stay readable | Every note, in full > Waste Transfers is the only module with a screen that stays reachable while it is off: everything else disappears from the sidebar, but this one opens as a read-only archive instead, because a regulator can ask for a transfer note years after the toggle was flipped and a record you cannot produce is not a record. Switching it off stops new collections; it never removes what is already on file. The two newest switches both sit under Your team rather than with the properties they are about, because both are things a cleaner does from a phone in the middle of a clean. Checklist requirements is a checklist item a cleaner cannot finish the clean without meeting, because you asked for a photo or a reading against it; see Photo and reading requirements. Property issues is something a cleaner finds broken or missing at a property and raises there and then, with a photograph; see Property issues. The setup wizard offers them differently by trade: Checklist requirements to everyone, because it costs a business that never uses it nothing at all, and Property issues to the two trades that walk into empty properties: end of tenancy and holiday lets. Two of these carry a smaller switch inside a larger one. Mileage claims is a tab inside Payroll, so switching Time & payroll off takes Mileage with it whatever Mileage's own switch says. Enquiries and Your website share the public quote form: switching Enquiries off takes the form off your website too, because there is only one form. ##### What a module switch is not It is not a permission. A module is per company, not per person: switching Messaging off removes it for you as well as for your cleaners. Who may open which screen is a separate question and lives in the role, covered in Your account and security. It is not a price change either. Every module is included in the £19.99 a month, switched on or off. Nothing here saves money, and nothing here is an upsell: the only reason to switch one off is that your business does not do that thing and would rather not see it. And it is not a delete button. If what you are actually looking for is a way to remove the business from CleanFlo altogether, that is Settings → Privacy, and it is covered in Your data and GDPR. > A module that is off is refused at the database, not only hidden on screen. That is deliberate and it is stronger than a hidden menu item, but it means an integration or a bookmarked address will be turned down too rather than quietly working. If something has stopped accepting new entries and you cannot see why, this page is the first place to look. **FAQs** Q: Does switching a module off delete anything? A: No. Nothing on this page deletes anything, ever. A module that is off is hidden and refuses new activity; everything already recorded stays exactly as it is, and switching the module back on returns it untouched. Q: Can a supervisor change these? A: No. Modules is owner-only, the same rule that keeps Expenses and Invoicing off a supervisor's sidebar. A supervisor has no Modules item at all. Q: Do I pay less if I switch modules off? A: No. £19.99 a month is the whole product, whichever modules you run. Switching one off is about what you want to look at, not what you want to pay. Q: Why is Waste Transfers still in my sidebar after I switched it off? A: Because a waste transfer note can be asked for years after the fact, and a record you cannot produce is not a record. It opens as a read-only archive: everything already logged is fully readable, and nothing new can be added. Q: I switched something on and it is still not there. A: Reload the page. The sidebar reads your company's modules when it loads, and a screen that has just been switched on appears on the next load rather than mid-session. URL: https://cleanflo.io/help/modules/ --- #### Your account and security Your own login rather than your team's. What you can change on the My Account tab, why the email address is fixed, and how a cleaner's password actually gets created. There are three kinds of account in CleanFlo, and only one of them can see everything. This is how you look after yours, how your cleaners get theirs, and what the product genuinely does and does not do about security. The second tab of Settings is My Account, headed with the subtitle "Update your personal details and login credentials." It holds three fields and two save buttons, and that is the whole of it. Everything else about security in CleanFlo happens somewhere other than a settings screen, which is worth understanding before you go looking for options that are not there. ##### The My Account tab (My Account. Two independent save bars: the top one saves your name, the bottom one changes your password. Changing one does not touch the other.) - Full name: Yours, not the company's. It is the name on your messages, the initials in the sidebar avatar, and the actor name on activity rows. Blank is rejected with "Name is required." A good save toasts "Profile saved". - Email address: Shown but disabled, with the hint "contact support to change email" inside the label. This is your login, and changing it means moving an authentication identity, which is a support clean rather than a form. - New password and Confirm new password: Both blank by default. The eye button inside the first box reveals both fields at once, which is the right behaviour when you are typing a password you have just invented. The password rule is one rule: at least eight characters. There is no complexity requirement, no expiry, no history check and no ban list. The two things that can stop a change are both spelled out in the save bar in red. (The three things the password save bar can say. The green tick is the only confirmation you get on screen; a toast reading "Password updated" appears alongside it.) > There is no current-password box. Changing your password only requires being signed in, which means an unlocked laptop is enough. If you leave a machine, lock it. If your login has expired in the background while the tab sat open, the save bar tells you rather than failing quietly: "Your session has expired. Sign in again to save." Nothing is lost, but the form has to be resubmitted after signing back in. ##### What CleanFlo does not have This section exists because assuming a security feature is present is worse than knowing it is absent. None of the following is in the product. - No two-factor authentication. There is no authenticator app, no SMS code and no backup codes. Your password is the whole of your login. - No session list and no sign-out-everywhere. You cannot see which devices are signed in, and you cannot remotely end a session. Changing your password is the nearest lever you have. - No audit log. The Activity tab of the notification feed shows recent events, but it is a feed rather than a tamper-evident record, and it does not go back indefinitely. - No fine-grained permissions screen. There are exactly three kinds of account, owner, supervisor, cleaner, each with a fixed set of screens rather than anything configurable field by field. - No account deletion button. There is no danger zone anywhere in Settings. What it does have is worth stating in the same breath. Data is held on servers in the EU and encrypted at rest with AES-256. Every table is protected by row-level security keyed to your company, so a query from one account physically cannot return another company's rows. Signing out is a real button, in the account row at the very bottom of the sidebar. (The account row at the foot of the sidebar. Your initials, your name, your company underneath, and one menu item.) ##### Owner, supervisor and cleaner: who sees what Every account is one of three kinds. Owner and cleaner are the two absolute ends; supervisor sits between them, a role an owner grants to a trusted cleaner from their row on Staff, covered in full in Editing, deactivating and removing staff. | Owner | Supervisor | Cleaner Signs in to | The web app, all fifteen screens | The web app, six screens, plus the phone app for their own cleans | The phone app only Sees the schedule | Every clean for every cleaner | Every clean for every cleaner | Only cleans assigned to them Sees clients and locations | The full record, contacts and all | The full record, contacts and all | The site and access notes for their own cleans Sees money | Quotes, invoices, revenue, reports | Nothing. No Quotes, Invoicing or Enquiries screen at all | Nothing. No prices anywhere Sees other staff | The whole team and their performance | The whole team and their performance, and can approve time off and supply requests | Only colleagues in shared channels Sees inventory and equipment | The full register | The full register | What they have on loan, and can request supplies Sees health and safety | Every incident, audit and risk assessment | Nothing, Health & Safety is owner-only | Can report an incident from a clean Settings | All seven sections | My Account and Notifications only | None. Their own profile lives on the Me tab Can add, remove or promote staff | Yes | No | No Can change billing or company settings | Yes | No | No A supervisor's six screens are Dashboard, Schedule, Clients, Staff, Inventory and Reports. Everything to do with money, Enquiries, Quotes, Invoicing, and everything owner-only, billing, company settings, adding or removing staff, Health & Safety, stays out of reach, whichever way the account is signed in. It is enforced at the front door rather than by hiding menu items. A cleaner who signs in on a laptop and types the address of the invoicing screen is redirected straight to the phone app, and the database refuses the queries behind it regardless. > There is no middle role. You cannot make a supervisor who can see the schedule but not the invoices, and you cannot make an office administrator who can raise invoices but not change company settings. Anyone who needs to see the admin side is an owner account and sees everything, including your revenue. (The whole of a cleaner's world: five tabs, their own cleans, and their own profile, set out as ruled lines on the paper rather than as a stack of panels. There is no route from here to a client list or an invoice.) ##### How a cleaner gets a login There is no PIN anywhere in CleanFlo, and no shared device code. A cleaner has a real account with an email address and a password, the same as you. There are two routes to creating one, offered as a choice under the legend "How should they get in?" at the top of the Add staff member drawer. (Adding a cleaner. "Set a password" is the default because it is the fast route when the new starter is standing next to you; the generated password is 14 characters and avoids glyphs that look alike when read aloud.) - Set a password: The account is created immediately and the password is emailed to them. The suggested password is generated from a cryptographic random source, is 14 characters long, and deliberately omits zero, capital O, one, lower-case L and capital I, because these get read out over the phone and typed on a phone keyboard. - Send an invite: No account exists yet. A pending invite is written and you get a shareable link. They open it, choose their own password, and the account is created at that moment. The link is good for 14 days. The invite route is the better one for anybody who is not in the room, and not only for security. An invite can be pushed through WhatsApp or SMS from your own phone, which is the channel a new hire actually reads, rather than an email from a sender they have never heard of about software they have not agreed to use. Pending invites get their own tab on the Staff screen so you can see who never set themselves up, and each one can be resent or revoked. If someone loses their password, the Staff screen has a Resend login credentials drawer: you set a new password and it is emailed to them. There is no self-service reset link inside the cleaner app. > A temporary password sent by email is a password sitting in an inbox. Under UK GDPR you are the data controller for your staff records, and a credential in a mailbox is a foreseeable risk you are expected to have thought about. Prefer the invite route where you can, tell people to change the password on first sign-in, and deactivate leavers on their last day rather than at the end of the month. ##### When someone leaves 1. Deactivate them on the Staff screen: Deactivating removes their access immediately. Their record, their clean history and their messages all stay, which is what you want if a question comes up afterwards. 2. Get the equipment back: Open Equipment, filter to Loaned, and see what is out in their name. Confirm each return as it comes back so the register is honest. 3. Reassign their cleans: Deactivating does not unassign anything. Anything still booked to them stays booked to them until you move it, and it will keep showing on the schedule. 4. Leave the conversations alone: Their threads and channel messages stay in your account. That is the point of running team messaging here rather than in a group chat on their personal phone. > CleanFlo has two account types and one password each. There is no 2FA, no session management and no middle role. Everything you can do about security is a habit rather than a setting: strong passwords, prompt deactivation, and not handing an owner login to someone who only needs to see a rota. **FAQs** Q: How do I change the email address I log in with? A: You cannot do it yourself. The field is disabled on purpose, with the hint "contact support to change email" in its label, because moving a login identity is not something a form should do unattended. Raise a ticket from Support and we will move it. Q: Is there two-factor authentication? A: No. There is no 2FA, no authenticator app support and no SMS codes anywhere in CleanFlo. Your password is the whole of your login, which is a reason to use a long one from a password manager rather than one you can remember. Q: Can I give someone access to the schedule without showing them the money? A: Yes. Promote them to supervisor from their row on Staff. They get the Dashboard, Schedule, Clients, Staff, Inventory and Reports, and can approve their colleagues' time off and supply requests, but Quotes, Invoicing and Enquiries stay owner-only, so they never see a price, a quote or an invoice. Q: A cleaner has forgotten their password. What do I do? A: Open their record on the Staff screen and use Resend login credentials. You set a new password and it is emailed to them. There is no self-service forgotten-password link inside the cleaner app. URL: https://cleanflo.io/help/account-and-security/ --- #### Your data and GDPR Your data sits in the EU, encrypted, and nothing is deleted when a card fails. This covers how to take a full copy of it, and which parts of UK GDPR stay your clean rather than ours. You are holding personal data about your cleaners and about the people whose homes they go into. This is where that data sits, how to get it back out, and which obligations are yours rather than ours. This guide describes what the product actually does with your data. It is not the legal document: the policy that governs it is at cleanflo.io/privacy, and the same text is inside the app under the Privacy link at the foot of the sidebar. Where the two disagree, the policy wins. ##### Where the data actually lives Everything in CleanFlo sits in one Postgres database run by Supabase, on servers in the EU. Supabase is the primary data processor and operates under a data processing agreement. Database contents are encrypted at rest with AES-256, and everything between your browser and the server travels over TLS. The separation between companies is enforced in the database rather than in the application. Every table carries a company id and every read is filtered through a row-level security policy tied to the account making the request. A query from your account cannot return another company's rows even if the front end asked it to, because the database refuses. What CleanFlo holds about a cleaner | What it does not hold Name, email address, phone number | National Insurance number Job title, whether they are active | Bank details for payroll Their cleans, and photos taken on those cleans | DBS certificates Their messages and reactions | Right-to-work documents Location points captured against a clean | Any movement history between cleans That last row is worth reading twice. Location points are held against the clean record they belong to and are deleted with it. They are never retained separately, never aggregated across cleans, and never used to build a picture of where somebody went during their day. > Two things you might expect to be in CleanFlo are not, and that is a feature. It is not a payroll system and it holds no bank details for your staff, and it is not an HR file, so vetting paperwork lives wherever you already keep it. ##### Getting a copy of everything The fourth tab of Settings is Data Export, and its subtitle names its purpose: "Download your data as CSV files. This fulfils your right to data portability under GDPR." Six tables, one button each, and one button underneath that does all six. (Export All Data, part-way through. Finished rows swap their button for a green tick, the row being written spins, and the main button becomes a progress line counting through the six.) - A single table downloads as cleanflo_clients_2026-08-14.csv, dated so successive copies do not overwrite each other. - All six together download as one file, cleanflo_export_2026-08-14.csv, with each table introduced by a comment line reading "# Clients (12)". - The final toast counts the lot: "All data exported (243 rows across 6 tables)." - An empty table says so rather than downloading nothing: "No clients to export." That combined file is what to reach for if somebody asks you to hand over everything, whether that is a new system, an accountant, or a subject access request from a former cleaner. It is not the whole database: messages, health and safety records and inventory are not among the six tables, and those come out of their own screens. > There is no data import. Nothing in CleanFlo reads a CSV back in. Export is a one-way door, so treat the exports as backups and as portability rather than as a way to bulk-edit your clients in a spreadsheet and push them back. ##### If you stop paying The important sentence first: nothing is deleted. A lapsed subscription pauses access. It does not remove a single clean, invoice, client or message, and everything is exactly where you left it when you come back. What you see instead of the app depends on why billing stopped, and each state names its own way out. (The three lapsed states. Each is a full-screen page rather than a banner, and each has one button that goes straight to Stripe.) Cleaners see a different screen again. Theirs is headed Access suspended and tells them the company's subscription needs attention and to contact their manager, because there is nothing they can do about it and nothing useful in telling them about a card. (What a cleaner sees when billing has lapsed. No price, no card, no checkout button: one sentence and a way to sign out.) > Resubscribing after a cancellation restarts billing at £19.99 a month, and there is no second free trial. The app says so on the page itself before you click. ##### Closing your account, and what gets kept Closing the account is on the Privacy section of Settings, the last one in the rail and one of the three that fold behind More sections on a phone. It is owner-only: a supervisor has no Privacy section and no route to one. The section opens on the three documents that say what is held and who touches it, Privacy policy, Data Processing Agreement and Sub-processors, and the closure control sits under a rule below them. It is deliberately two decisions rather than one. Nothing is destroyed on the day you press the button: closure is scheduled, the account carries on working normally, and the deletion itself runs 30 days later. Inside that window one button puts it back exactly as it was, because what has been written is a date rather than a tombstone. 1. Open Settings and pick Privacy: Or go straight to /settings?tab=privacy, which is a bookmarkable address like every other section. 2. Press Close my account: A quiet red button under the heading Close this account. On its own it does nothing except open the confirmation below it, so pressing it is safe. 3. Type the phrase: The label reads Type DELETE Brennan Cleaning Ltd to confirm with your own company name in place of that one. Case and spacing matter; a leading or trailing space is forgiven. Schedule deletion stays disabled until the phrase matches, so there is no misclick that can start this. 4. Press Schedule deletion: CleanFlo confirms with "Closure scheduled. You have 30 days to change your mind." The heading then reads This account is scheduled for deletion and names the exact date everything is destroyed on. 5. Export before that date: The account still works during the window, so Data Export still gives you all six CSVs. After the date nothing can be recovered, by you or by us. (The foot of the Privacy section. The first button only arms the confirmation; the phrase is what actually enables the destructive one.) > What the 30 days ends: every client, clean, invoice, quote, photograph and message, and every staff login. Your team lose access at the end of the window, not at the start of it, so tell them before you press it rather than after. To stop it, open the same section and press Keep my account. CleanFlo answers "Closure cancelled. Nothing was deleted.", and that is literally true: nothing had been. The window exists because the terms already promise 30 days of access after a cancellation, so this honours a commitment rather than inventing a grace period. > Closing the account is not the same as cancelling the subscription, and most people who think they want the first one want the second. Cancelling stops the bill and pauses access, and every clean, invoice and photograph waits for you. Closing destroys it. If you are leaving for another system, cancel, export, and let the data sit until you are certain you have everything. (The two legal links at the foot of the sidebar, under the navigation and above your account row. The privacy policy inside the app is the same document as the one on this site.) Deletion is also not unconditional, because some of what CleanFlo holds you are legally required to keep. The retention periods in the policy are these. What | How long it is kept Account data | Your subscription, plus 2 years after the account closes Invoices and payment records | 7 years, in line with HMRC requirements Health and safety incident reports | At least 3 years from the date of the incident Staff and cleaner records | 2 years after deactivation, or until you ask for deletion Clean location points | Deleted with the clean they belong to Server logs and analytics | Up to 12 months So a request to erase everything will honour everything it can and hold back the financial records until the statutory period is up. That is the normal position for any business system and it is worth knowing before you promise a former employee that every trace of them has gone. ##### The bit that is yours, not ours The word that matters is controller. CleanFlo and Supabase are processors: we hold and move data on your instruction. You are the controller of the personal data in your account, because you decided to collect it and you decide what happens to it. That means most of the obligations sit with you, and no software can take them off you. > A cleaning company holds two sets of personal data that UK GDPR takes seriously. The first is staff data: names, phone numbers, work history, and location points captured at a clean. The second is client data, which for domestic work means home addresses, key safe codes and access notes about where people live. Both need a lawful basis, and for a cleaner's data that basis is normally the performance of their employment contract rather than consent, because consent given by an employee to an employer is rarely freely given.,Practically, that means four things. Tell your staff in writing what you record and why, ideally in the contract or a short privacy notice. Keep access notes to what is needed to do the clean and no more. Deactivate leavers promptly so their access ends with their employment. And if you process personal data as a business, check whether you need to register with the ICO and pay the annual data protection fee: most small employers do. Where CleanFlo helps is the mechanical part. A subject access request from a former cleaner is answerable from the Data Export tab plus their staff record, and a request from a client is answerable from the clients and locations exports. Neither takes long. What CleanFlo cannot do is decide your lawful basis, write your privacy notice, or hold the conversation with the ICO. (The personal data a cleaning business actually holds, and where each kind lives in the app. This is the list to work from when somebody asks you what you have on them.) (Access notes are visible to whichever cleaner is booked onto the site, so they are written for that audience and nothing more.) > Your data sits in the EU, encrypted, separated from every other company at the database level, and it is never deleted because a card expired. Getting a full copy is one button. Everything else about data protection is a business decision rather than a setting. ##### Four habits worth having 1. Export at every quarter end: Press Export All Data when you do the VAT return and keep the dated file somewhere backed up. It costs a minute and it makes every other problem smaller. 2. Write access notes as if the client will read them: They are personal data about somebody's home, and they are visible to whichever cleaner is booked. "Key safe left of the porch, code on the clean" is useful. Anything about the occupant that is not needed to clean the property should not be there at all. 3. Deactivate leavers on their last day: Not at the end of the month. Deactivation ends access immediately while keeping the record, so there is no reason to wait. 4. Keep one owner account per person: A shared login means you cannot tell who did what, and the activity feed becomes useless. Two owners is two accounts. **FAQs** Q: Where is my data physically stored? A: On Supabase infrastructure in the EU. Supabase is our primary data processor and operates under a data processing agreement, and database contents are encrypted at rest with AES-256. The full list of third parties we use is in section 6 of the privacy policy at cleanflo.io/privacy. Q: If I cancel, how long do I have to get my data out? A: There is no cliff edge. Cancelling pauses access rather than deleting anything, and account data is retained for the length of the subscription plus two years. That said, export before you cancel: getting a copy is easier while you can still sign in. Q: A former cleaner has asked for everything you hold on them. What do I do? A: You are the controller, so the request is yours to answer within one month. The Staff export from Settings gives their record, their cleans appear in the Cleans export, and their messages are in their conversation thread. If you need help pulling anything that is not exportable, email privacy@cleanflo.io. Q: Can I delete a single client and everything about them? A: You can delete the client record, which takes its locations with it. Invoices raised against them are financial records and are kept for seven years, so those will remain. That is the normal position under HMRC record-keeping rules rather than a limitation of the product. URL: https://cleanflo.io/help/data-and-privacy/ --- #### Getting help from a person The Support screen inside CleanFlo: the Help Centre signpost and its search, raising a ticket and following the reply, and the live service check that tells you whether the problem is even yours. There is one set of guides and one ticket queue. The guides are on this website, where they can be searched properly and sent to somebody who has no login. The queue is inside the app, because that is where the reply needs to come back to. Support is the last item in the sidebar and it does three cleans: it points you at the guide that answers the question, it opens a ticket when no guide does, and it tells you whether the thing you are struggling with is actually broken. Four tabs, and the page head is the same one every other screen in CleanFlo uses. > Support used to carry its own shorter copy of these guides: thirty-four articles and an FAQ list, one click from the real thing and drifting out of date. That copy is gone. Everything you used to read in the app you now read here, and the app links straight to it. (The Support screen on its Help Centre tab. The search box matches guide titles and keywords instantly; each of the twelve topics opens the matching section of this site in a new tab.) ##### The four tabs - Help Centre: A search box over every guide on this site, and the twelve topics underneath it. Nothing is read inside the app: each result opens here, in a new tab, so the screen you were on is still there when you come back. - Ask us: The form that opens a ticket, and the direct contact details beside it. - My tickets: Everything you have raised and everything we said back, in threads rather than in your inbox. - Status: A live check of four services, run from your own browser. ##### Finding the guide you need The search box on the Help Centre tab is labelled Search the guides and filters as you type. It matches titles and keywords, not the body text, so it is fast and it is narrow on purpose: results appear as a short ruled list with the topic named under each one. Six at most. When nothing matches, the app says so and offers Search the whole Help Centre, which carries your query over to this site and filters the shelf here instead. That search reads the full text of every guide, so it finds things the in-app index cannot. > The question-mark button in the top bar is context-aware and it opens this website. Press it on Schedule and you land on the clean guide; press it on Invoicing and you land on raising an invoice. It opens in a new tab, so it can never be the thing that loses a half-filled form. The command palette knows about the guides too. Press ⌘K and help results appear as their own group alongside your clients and cleans. Choosing one opens it here rather than navigating away from what you were doing. > Old bookmarks still work. A link like /support?article=sc-create-job from the days of the in-app knowledge base lands on the Help Centre tab with a line at the top naming the guide that article became. ##### Raising a ticket The Ask us tab is two fields and a sentence explaining what happens: we open a ticket with a reference on it, and the first line of your message becomes the subject. (The ticket form and the panel beside it. Note there is no subject box: the subject is taken from the opening of your message, so the first sentence is worth writing well.) The category select opens on "Select a topic..." and offers six, in this order: Billing & Subscription, Bug Report, Feature Request, Account & Login, How-To Question and Other. Leaving it alone is refused with "Choose the topic that fits best."; an empty message is refused with "Tell us what is happening so we can help." > There is no priority selector. Every ticket is opened at normal priority and there is no way to flag one as urgent from the form. If something is stopping you working today, say so in the first line of the message, because that first line also becomes the ticket subject. Send it and the form is replaced by a confirmation naming your reference: "Ticket CF-1042 is open", with the note that the reply will appear in My tickets inside CleanFlo and that we answer within 24 hours. Two buttons follow, one to open the ticket and one to write another message. If the ticket cannot be written for any reason, the form does not lose your message. It falls back to opening an email draft to support@cleanflo.io with your text in it, and tells you it has done so with a link to the draft in case nothing opened. A support message is never allowed to disappear because the nicer route was unavailable. ##### Following a ticket My tickets is headed with the line "Everything you have asked us, and what we said back". Each row leads with its reference in the red margin, then the subject, then the category and when it was last updated, then a status badge. Because the references are monospaced and fixed width, they form one straight column however long the subjects run. (The three ticket statuses. "Waiting on you" is the one to watch: it means we have replied and the thread is sitting waiting for an answer.) Status | What it means | The hint shown beside it With us | Open, in our queue | "We are working on it" Waiting on you | We have replied and need something back | "We replied, so it is your turn" Closed | Finished | "Resolved" Opening a ticket shows the correspondence: each turn is a ruled entry headed either CleanFlo Support or You with the time beside it, and ours sits on a shaded ground so the two are easy to tell apart at a glance. A closed ticket can carry a block headed "How it was resolved" above the thread. At the foot is a reply box labelled "Add to this ticket" with the placeholder "Anything else that would help us…", and a Send button that stays disabled until you have typed something. With nothing raised yet the tab reads "You have not raised anything yet" and points you at Ask us. > Replies come back into the ticket rather than into your inbox. That is the point of the queue: the whole conversation stays in one place with a reference on it, so chasing it a week later does not mean forwarding an email chain. ##### Checking whether it is us The Status tab is headed "What is running" with a Check again button. It is not a status page fetched from somewhere else: it runs four checks from your own browser, right now, which means it also tells you something about your connection. (The Status tab after a clean run. A verdict at the top that takes the colour of the worst result, then the four services with a badge each and one line saying what each one covers.) - Database: Whether your data can be read and written at all. - Authentication: Whether sign-in and session refresh are working. - Payment Processing: Stripe: checkout, the billing portal and payment webhooks. - Background Services: The cleans that run without you: emails, push, scheduled work. Each row shows one of five badges: Checking..., Operational, Degraded, Unable to check or Outage. The verdict above them switches to "Partial service disruption" when something is degraded and "Service disruption" when something is down. > One result is easy to misread. "Some checks did not complete" means your browser could not reach a service, which a dropped connection or a privacy extension will cause just as easily as an outage will. The screen says as much: it does not mean CleanFlo is down. Try it on another network before raising a ticket. ##### This website, and what is new These guides are the long form and now the only form: every screen, every field, every replica drawn out, and the UK bits explained. Nothing is duplicated inside the product any more, so there is no second version to disagree with this one. - cleanflo.io/help is this help and how to section. It is public, so you can send a link to a cleaner or a client without them needing a login. - cleanflo.io/whats-new is the changelog: what shipped, when, and what changed on the screens you already know. - Both are reachable from inside the app: the question-mark button in the top bar, the Help Centre tab on Support, and the help group in the ⌘K command palette. > Use the question-mark button first, because it already knows which screen you are on and the answer is usually one guide away. When it is not there, the Ask us form takes thirty seconds and the reply comes back into the app with a reference on it. **FAQs** Q: Why can I not read the guides inside the app any more? A: Because there were two sets of them and they disagreed. The in-app copy was shorter, older and describing screens that had moved, so it was retired rather than maintained twice. The app now searches these guides and opens them here in a new tab, which means nothing you were part-way through is lost. Q: How quickly do you reply? A: Under 24 hours in the normal case, and the Ask us tab says so in two places. Tickets are worked in the order they arrive: there is no priority field on the form, so putting the urgency in your opening sentence is the way to flag it. Q: Can I email you instead of using the form? A: Yes, support@cleanflo.io reaches the same people. The form is better because it creates a ticket with a reference and keeps the reply inside CleanFlo where you will find it again. The phone number on the Ask us tab is tagged Enterprise and is not the general support line. Q: Why can I not give my ticket a subject? A: There is no subject field. The subject is taken from the first eighty characters of your message, which keeps the form to two boxes. Open with a sentence that would work as a headline and the ticket list stays readable. Q: The Status tab says a service cannot be checked. Is CleanFlo down? A: Probably not. That result means your browser could not reach the service, which is as likely to be a dropped connection, a corporate firewall or a privacy extension as an outage. Check again, then try from a phone on mobile data before assuming the worst. URL: https://cleanflo.io/help/getting-support/