Start your free 14-day trial
Product Job Scheduling & RotasInvoicing & BACSHealth & SafetyStaff Mobile AppAnalytics & Reporting
Solutions Commercial CleaningDomestic CleaningEnd of TenancyFacilities ManagementWindow Cleaning
Free tools Cleaning Quote CalculatorPrice Per m² CalculatorUK VAT CalculatorProfit Margin CalculatorTrue Cost of a CleanerHoliday Entitlement CalculatorContract Tender CalculatorClient Lifetime Value All 14 free tools →
Learn How to start a cleaning businessHow to price cleaning jobsHow to win cleaning contractsHealth & safety for cleaners CleanFlo vs JobberCleanFlo vs ZenMaid

We took the whole thing apart, and put it back properly.

This is the largest update CleanFlo has had. The website and the app have both been redrawn end to end, thirteen things are new or rebuilt, and a long list of things that were quietly wrong are now right. Here is all of it, and why we did it in one go.

First: we're offline Sunday, 9pm–1am
Release docket CF·2026·08
Entered
Fri 14 Aug 2026
Scope
205 files · 8 database changes
Redrawn
Every screen, site and app
Checked
1,066 tests · 0 contrast failures
Status Shipped

We're moving servers on Sunday night.

CleanFlo will be unavailable from 9pm on Sunday 16 August until around 1am. It is the quietest window in a cleaning week: Sunday evening's rota is already set, and Monday's first job has not started.

Nothing you have entered is affected, and nothing needs doing at your end. We are moving onto new infrastructure, and the reason is speed: ours, not the app's. On the new setup a change ships in minutes rather than taking an evening, which means new features land sooner and a bug you report gets fixed in days instead of waiting for the end of the month. This update took a fortnight to get out of the door. The next one should not.

Notice to customers Scheduled
  1. 21:00
    CleanFlo goes offline Sunday 16 August
  2. 01:00
    Back up, or sooner Monday 17 August

Four hours. Nothing to do at your end.

  • If you would rather have Monday's rota to hand, take a copy before 9pm on Sunday.
  • Cleaners already carrying their jobs on their phones keep them: the cleaner app is built to work with no signal and syncs when we are back.
  • If we are still down after 1am, this page will say so. It is the page we will update, so it is the one worth checking.

Why we did all of it at once.

In August we stopped adding things and read the product instead: every screen, every background job, every claim on this website. We wrote down what we found rather than what we hoped.

Plenty of it was good. The offline queue your cleaners depend on is solid. The design system underneath the app was better than what the app was doing with it.

Some of it was not. Figures that quietly disagreed with each other. Work being lost when a phone went back a screen. And a handful of things this website promised before the product could keep them.

Shipping it as one update rather than dripping it out over six months was deliberate. Half of this is corrections, and a correction is worth less the longer it sits on a private list.

One company, on both sides of the login.

CleanFlo is a day book now, because a day book is what a cleaning business actually runs on. Jobs written down. Cleaners assigned in the margin. A quote scribbled in a van. Invoices ruled off at the end of the month, and a stamp on the things that are finished. Ledger paper, a red margin rule, one teal doing all the signalling, and times set the way a typewriter sets them.

That is new on both sides of the login. This website has been rebuilt on it and so has every screen of the app: the dashboard, the schedule, clients, health & safety, invoicing, messages, the client portal, the cleaner's app and the sign-in page. cleanflo.io and the software you sign in to were two different-looking products, made by what appeared to be two different companies. There is one now.

It is not decoration. A job's status reads the same way everywhere it appears, so a colour means one thing across the whole product instead of three. And every text colour in the app is checked against its background on each build: the build that shipped this had no failures.

What's new.

Two audiences, and they want different things. The office wants to stop chasing. The cleaner wants to know where to be and get out without a phone call.

For the office

  • New

    Job reports you can send a client

    A finished job now prints as a plain A4 document: when the cleaner arrived and left, what was on the checklist, what they noted, what they photographed. You produce it from the job; your client downloads their own from the portal. There is no price on it, because that belongs on the invoice, and no map of where anybody's phone was, because that is your business and not your client's.

  • New

    Late alerts

    Every five minutes CleanFlo looks for a job that should have started and hasn't. It nudges the cleaner first, in a tone that assumes traffic rather than absence, and then tells you. You set the threshold, because ten minutes late on a holiday-let changeover is not ten minutes late on an office at six in the morning. Zero switches it off.

  • New

    A compliance vault, and method statements

    Health & Safety now has somewhere for documents to live, and RAMS finally has its MS: method statements sit alongside your risk assessments instead of in an email thread.

  • New

    The compliance score on your dashboard

    It lived on the Health & Safety page. A number your contracts are judged on belongs on the front page, so that is where it is.

  • New

    Unique payment references on every invoice

    Each invoice carries its own reference, on the document and on both of the emails that send it, so a BACS payment arrives already matched to the job it paid for.

  • Better

    Photo proof you can actually look at

    Photographs open full screen and page with a swipe or an arrow key, and a bad shot can be deleted rather than living next to the good one forever.

  • Better

    Three ways to add a cleaner

    By email invitation, by a link you share in the group chat, or entered directly. Accepting one works properly on a phone, which is where it is always accepted.

For the cleaner

  • New

    “On my way”

    One tap before setting off. A van appears against the job on the office's schedule, and anyone who has said they are en route is not then nudged for being late.

  • New

    One-tap shift confirmation

    One question on the job screen, one answer, and a tick on the calendar. A job nobody has confirmed shows nothing at all rather than a warning: not answering yet is not the same as saying no.

  • New

    Jobs that were missed can still be closed

    A job nobody tapped used to disappear the next morning and could only ever be fixed by an admin. Unclosed work now stays visible for 28 days as “Needs completing”. Closing one asks why, from six deliberately blameless reasons, because most of these are jobs that were done and not tapped.

  • New

    A nudge if a job is left running

    Four hours past the expected finish, one question: still on site? A job left open overnight breaks the cleaner's own hours and leaves the client with no completion email, and neither is worth a telling-off.

  • Better

    The site brief, where it is needed

    Access notes, key safe details and what the property actually is now reach the person standing at the door. Getting in comes first, because standing on a doorstep unable to open a key safe is the failure this prevents.

  • Better

    27 languages, finished

    Twenty-six of the twenty-seven were up to fifty phrases short and fell back to English mid-screen. All twenty-seven are complete. The app matches your phone's language the first time you open it, and Arabic and Urdu mirror properly, every screen and every arrow, with times still reading left to right.

What we fixed.

The unglamorous half, and the half that took the longest. Each of these was live. None of them is now.

  1. Job photographs reach storage. They were being filed under a value the app never actually had, so some of them never arrived at all.
  2. Notes typed during a shift save as they are typed. Tapping back used to throw away everything a cleaner had written.
  3. Deleting an invoice releases its jobs. They used to be stranded and could never be billed again. The ones already stranded have been repaired.
  4. Revenue per client is counted once. Reports, the printed report and the CSV were each adding the jobs and the invoices those same jobs produced.
  5. The on-time rate counts only jobs that were measured. Everything older than the measurement was quietly counted as on time. A window with nothing measured now reads a dash, because zero would be a claim about the cleaner.
  6. Notifications to the office arrive. Seven places were sending to a role that does not exist, and reporting success every time.
  7. Historic risk assessments read “Not scored”, not “Critical”. Unscored legacy hazards were printing as critical on the document you hand an inspector.
  8. No hourly interruption. A tab left open used to blank itself to “Loading your workspace” about once an hour, taking a half-typed invoice with it.
  9. Long-standing customers are treated as long-standing customers. A few were being offered the setup wizard, and a few were being offered a free trial they had already had.
  10. CSV exports survive Excel. One export now, properly escaped, and safe to open whatever is in your client names.

And the part you can't see.

Every background job that sends an email or a push notification now checks who is asking before it does anything, and reads the details from your own records rather than from whatever it was handed. Files attached to messages are locked to the company that owns them.

The database changes went out on 14 August. Every customer's records were counted before and after, and the counts matched.

Sign in and have a look Start a free 14-day trial