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

Adding a cleaner

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.

In the app: Staff Open CleanFlo
On this page

Everyone you add gets access to the cleaner app, not to the screens you are reading these guides about. They see their own jobs, their own hours and their own messages. There is no separate admin role to grant and nothing to configure: a cleaner is 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.

app.cleanflo.io/staff
Search everything… ⌘K Staff
Staff

Manage your cleaning team

Add Staff Member
7 Total Staff 6 Active 1 Inactive 2 Invited
Search staff…
Team Directory
Your cleaning staff linked to this company
AllActiveInactiveInvited (2)Performance
NameEmailPhoneLast Active
AN Aisha Nowak Cleaning Pro aisha@brennanclean.co.uk +44 7700 900118 Just now
MK Marek Kowalski Cleaner marek@brennanclean.co.uk +44 7700 900204 4h ago
JR Joanne Reid Team Lead joanne@brennanclean.co.uk +44 7700 900371 2d ago
TS Tomas Silva Cleaner tomas@brennanclean.co.uk Inactive
1–7 of 7 Export CSV
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 job 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
Job counts per cleaner over the last 30 days. It replaces the directory table rather than filtering it, and the card sub-line changes to "Job 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.

Just now42m ago6h ago2d ago3w ago12 AugNever
The Last Active pill in each of its colours. It is the last time they signed in, not the last time they finished a job, 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.

Add Staff Member
How should they get in? Set a password You choose a temporary password and we email it to them. Fastest if they are with you now. Send an invite They get a link and choose their own password. Nothing to read out, no password in an inbox.
Full Name * e.g. Sarah Mills
Email Address * sarah@example.com
Phone +44 7700 900000
Job Title e.g. Cleaning Pro
Shown once — copy or send it now
Login Password * brisk-harbour-4192 Share these credentials with the staff member so they can log in.
CancelCreate Account
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.

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

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.

Marek Kowalski has been invited
Their invitation is on its way.

app.cleanflo.io/join?token=8f3c1d24b90a47e6

WhatsApp Text Share another way
Invite someone else Done
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 jobs." then "Set yourself up in about a minute" with the link, then "You choose your own password — nobody else sees it."

NameEmailStatus
Marek KowalskiCleaner marek@brennanclean.co.uk Pending Resend
Priya NairCleaning Pro priya@brennanclean.co.uk Accepted Share link
Dan WhitcombeCleaner dan@brennanclean.co.uk Expired Resend
Kelly OsborneCleaner kelly@brennanclean.co.uk Revoked
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.

09:41
Thursday 13 August
Today 0/2
9:30 am Surgery clean St Marks Medical Centre 3h 30m
2:00 pm Office clean Bay View Offices · 2nd floor 2h
This week 2
Fri 14 Aug
9:30 am Surgery clean St Marks Medical Centre 3h 30m
Sat 15 Aug
8:00 am Weekly communal clean Riverside Homes · Flat 4B 2h
Everything is saved
Jobs History My Time Messages Me
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 job locations are recorded at two moments, when a job 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 job.

Common questions

How many cleaners can I add?
As many as you have. CleanFlo is one price of £9.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.
Do cleaners need their own email address?
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.
A cleaner says they never got the email. What now?
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.
Can I stop a cleaner seeing prices and client details?
The cleaner app already limits what they see to their own jobs: the site, the access notes, the checklist and the times. There is no permission grid to configure and no way to make one cleaner see more than another.
What if I add somebody by mistake?
Delete them from the row actions before they ever sign in and nothing is left behind. Once they have jobs against their name, deactivating is the better move, because deleting them unassigns any upcoming work while their past jobs keep their name.