How to give clients portal access
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 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.
- Edit details opens the client's details, titled with their name.
- Save changes saves it.
- 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 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.
| 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 |
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 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."
- 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.
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 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.
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?
Previous: How to edit or remove a client
Did this answer your question?
Good. Back to the app, then.
Sorry about that. Tell us what you were looking for and a person will answer it.
Still stuck?
Every message is read by a person on the CleanFlo team.