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
Browse all guides

The client portal

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.

In the app: Clients Open CleanFlo
On this page

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, press Edit Details, and find the Client Portal section with the globe icon. Turn on Enable Client Portal and four things appear underneath: the link, the PIN, the visibility picker and the requests toggle.

Edit Client
Enable Client Portal
Portal Link app.cleanflo.io/brennan-cleaning/riverside-homes
Copy Link Regenerate Token
Email Portal Link to Client
Portal PIN (4–6 digits) ••••
Allow Clean Requests
CancelSave Changes
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.

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 three visibility levels

This is the setting worth getting right the first time. It is a single choice of three 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.

Visibility Level Full Transparency Job history, staff names, invoices, checklists, upcoming jobs Moderate Job dates & status, invoice totals, no staff names or checklists Minimal Summary counts and outstanding total only
The Visibility Level picker. The description under each card is the app's own summary, and it is accurate: these are the three things being traded off.
Full TransparencyModerateMinimal
Tabs shownOverview · History · InvoicesOverview · History · InvoicesOverview · History
Locations tile and sectionYesNoNo
Upcoming Cleans on OverviewYesYesNo
Cleaner name on a jobYesNoNo
Job priceYesNoNo
Street address of the siteYesSite name onlySite name only
Start and finish timesYesNoNo
Job notesYesNoNo
Completion notes and checklistYesYesNo
Invoice reference numberYesIssue date shown insteadIssue date shown instead
Outstanding totalYesYesYes
Printable job reportYesYesNo

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.

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.

Client Portal
Enter your PIN to continue
Portal PIN • • • •
Unlock Portal

Powered by CleanFlo

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 job 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."

Brennan Cleaning Ltd
Good afternoon, Jane · Thursday 13 August
Request a Clean
18
Cleans Done
3
Upcoming
£435.00
Outstanding
3
Locations
Changeover clean Flat 4B · Aisha Nowak Fri 14 Aug Done
Communal stairwell Flat 4B · Marek Kowalski Sat 15 Aug Scheduled
INV-2026-016 Due 28 Aug 2026 £95.00 How to pay
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 jobs..." 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 job's row in History hints that photos exist before it is opened; tapping the job 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 job 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.

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 job'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 job — 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.

Client Requests
Pending clean requests from client portals
View All
Deep clean before the new tenant moves in Riverside Homes · 19 Aug 2026 Convert to Job
Extra changeover, guests leaving early Harbour Lettings · 16 Aug 2026 Convert to Job
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 Job button that opens the job drawer with the details carried across.

10 – 16 Aug 2026
Requests 2 Add Job
Client Requests
Deep clean before the new tenant moves in Riverside Homes · Flat 9 · 19 Aug 2026 · Morning
Approve Decline
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.

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.

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.

Common questions

Does my client need to create an account or download anything?
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.
Can two people at the same client have different PINs?
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.
Can clients see photos my cleaners took?
At Full Transparency and Moderate, yes. A completed job 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 job, and each one is served through a short-lived signed link rather than a permanent public URL.
What does the client see if I switch the portal off again?
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.
Can they pay an invoice through the portal?
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.
Do I have to offer a referral scheme?
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.