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.
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.
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.
| 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 job | Yes | No | No |
| Job price | Yes | No | No |
| Street address of the site | Yes | Site name only | Site name only |
| Start and finish times | Yes | No | No |
| Job 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 job report | Yes | Yes | No |
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.
Powered by CleanFlo
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."
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.
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.
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?
Can two people at the same client have different PINs?
Can clients see photos my cleaners took?
What does the client see if I switch the portal off again?
Can they pay an invoice through the portal?
Do I have to offer a referral scheme?
Still stuck?
Open Support in the app and send us a ticket, or email the team. A real person reads every one.