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

Messaging your team

Messages is the conversation your team is already having, moved inside the product where the jobs are. Channels for groups, direct messages for one person, and the same threads on the cleaner app.

In the app: Messages Open CleanFlo
On this page

Almost every cleaning company of this size runs on a WhatsApp group. It works, right up until the point it does not: a cleaner leaves and takes two years of client addresses with them on their own phone, nobody can find what was agreed about the key safe, and your personal number is the out-of-hours line whether you like it or not.

Messages replaces that group. It is the same shape of thing, deliberately, because the point is not to teach anyone a new habit. What changes is where it lives: inside the account you control, beside the jobs it is about, and gone from a leaver's phone the moment you deactivate them.

The WhatsApp groupMessages in CleanFlo
Your personal mobile numberAn account you can switch off
History leaves with whoever leavesHistory stays with the company
Client addresses in a consumer appClient addresses inside the system holding them anyway
"Which Tuesday did we say?"A system message in the thread saying the job moved
One group for everythingA channel per round, plus one-to-one threads
Read receipts you cannot switch offRead receipts naming who has actually read it

The Messages screen

This route looks different from every other screen in the product, because it has no page header. The only page title is the strip at the very top reading "Messages". Below that the screen is two panes: a 320-pixel conversation rail on the left and the open conversation filling everything else. Under about 860 pixels wide the two become alternate views of the same screen, with a Conversations back button to get from the thread to the list.

app.cleanflo.io/messages
Search everything… ⌘K Messages
# north-round
Aisha: Key safe code changed at Flat 9
# operations
You: Van service booked for Thursday
Aisha Nowak
Running about ten minutes late
Marek Kowalski
Sent an attachment
Joanne Reid
No messages yet
Key safe code changed at Flat 9. New one is on the job notes. 08:14 Thanks. Have you told Tomas? He is there Friday. 08:16 Not yet, will drop it in his thread now. 08:17 Perfect. 08:17
The Messages workspace. The rail on the left, the thread on the right, and nothing else competing for the space. Unread conversations carry a count on the right of their preview line.

At the top of the rail sits a search field placeholdered "Search channels...", and under it a pair of filters, All and Unread. The Unread filter carries a chip with your total unread count whenever there is one. Below that, two sections in a fixed order.

Channels
Group conversations, shown with a hash glyph. Only an admin can create or archive one, and their header carries the archive and plus buttons to do it.
Direct Messages
One-to-one threads, shown with the person's initials. Everyone gets a plus button here, because everyone needs to be able to start one.

Each row is an avatar and two lines. The top line is the name, a bell-with-a-slash if you have muted it, and a timestamp on the right that reads the clock time today, then "Yesterday", then a short weekday inside the last week, then a date such as "9 Aug". The bottom line is the last message, prefixed "You: " when it was yours and with the sender's first name in a group. With nothing in the conversation yet, it reads an italic "No messages yet".

The unread badge, and where it appears

Unread counts appear in three places at once, and all three use the same rule: the number, or 99+ once it goes past ninety-nine.

Messages 3 Messages 99+
# north-round Aisha: Key safe code changed at Flat 9 08:14 4
Marek Kowalski Sent an attachment Yesterday 99+
The badge on the sidebar item, on a rail row, and on the cleaner app's tab bar. It never shows a raw number above 99, because a four-digit badge tells you nothing you did not already know.
  • On the Messages item in the sidebar, as a total across every conversation.
  • On each row in the conversation rail, as that conversation's own count.
  • On the cleaner app's tab bar, where Messages is the only tab that is ever badged.

Opening a conversation clears its count. A new message arriving anywhere in the product also fires a small toast reading "New message from Aisha Nowak" for a direct message or "New message in #north-round" for a channel, and clicking that toast takes you straight to the thread. That toast reaches you on any screen, so you do not have to be sitting on Messages to notice.

Inside a conversation

The header shows the name, prefixed with a literal hash for anything that is not a direct message. The subtitle underneath is doing real work: in a direct message it reads Online now or Offline, and in a channel it reads the description if one is set, or the member count if not.

The composer is placeholdered "Type a message...". Enter sends and Shift with Enter starts a new line. A message is capped at 4,000 characters, with a counter appearing at 3,600 that reads "312 left", and you can attach a maximum of three files per message. Drag a file over the thread and an overlay appears reading "Drop to attach".

Reactions
Hovering a message reveals three quick reactions, thumbs up, tick and eyes, plus a fuller picker grouped as Acknowledge, Feeling, Celebrate, On the job and Attention. A tick from a cleaner is a much cheaper acknowledgement than a message saying "ok".
Replies
Reply to a specific message and the quoted original sits above your text, so a thread with four things happening at once stays readable.
Editing
Your own messages can be edited in place. An edited message carries a lower-case "edited" beside its time, so nothing is quietly rewritten.
Deleting
Your own messages can be deleted, and there is no confirmation dialog. The message becomes a muted bubble reading "This message was deleted" rather than vanishing.
Pinning
Admins can pin a message to the channel. Pins appear in a bar above the thread, and jumping to one scrolls the thread back to it.

Day dividers read "Today", "Yesterday", then the weekday inside the last week. Where you left off is marked with a New messages line that is frozen when the thread opens, so it cannot creep down the screen as you read. Scroll up far enough and a Jump to latest pill appears.

Channels, broadcasts and who can talk to whom

A channel is created by an admin from the plus button on the Channels header. The dialog asks four things, and the third and fourth are the ones worth thinking about.

Create a channel
Name north-crew
What is it for? Optional Daily hand-off for the north round
Who can post Channel Everyone in it can post Broadcast Only admins post, everyone reads
Members Everyone All active staff, and anyone who joins later Just these people Pick who belongs here
CancelCreate channel
Creating a channel. "Who can post" is the choice between a conversation and an announcement board, and it cannot be casually undone later.

A broadcast channel is for the things nobody should be replying to: the bank holiday rota, the new uniform policy. Cleaners see it, and where the composer would be they get a single line telling them only admins can post in broadcast channels. Its header carries a "Broadcast" chip so nobody is confused about why they cannot type.

Who can message whom is decided by one checkbox, and it lives on the Company tab of Settings rather than here. Off is the default, and off means cleaners can only message you, not one another. Turn it on and everybody can start a thread with anybody. Admins can always see and message everyone.

Every message Only when mentioned Never
Notify me Mute for me

Archiving hides the channel for everyone. Its history is kept, and an admin can bring it back at any time.

Archive channel
Channel settings, which slides in over the thread as one scrolling column rather than tabs. Note that "Notify members" is the rule for everyone and "Notify me" is your own mute.

The messages the product writes itself

Some things arrive in a thread without anybody typing them. When a job is assigned, moved or cancelled, a system message is posted into that cleaner's conversation with you. It renders as a centred notice rather than a bubble: no avatar, no reactions, no reply, no edit.

New job assignedJob updatedJob cancelledJob removedShift reminderSchedule sentTime offAvailability updatedAnnouncement
The labels a system message can carry inside a conversation. The five business events, invoice paid and stock low among them, never enter chat: they go to the activity feed instead.

This is the point of putting them in the thread rather than only in a push notification. A cleaner who turns up on the wrong Tuesday can scroll back and see, in the conversation they already have with you, the line saying the job moved and when it said so. A dismissed notification proves nothing to anybody.

What your cleaners see

On the phone, Messages is the fourth of five tabs, between My Time and Me. It is the same conversations, drawn for a thumb.

09:41
Messages
3 unread messages
2:02 pm # north-round Key safe code changed at Flat 9
1:48 pm Sarah Brennan Can you cover Friday morning?
4 Aug # operations Van service booked for Thursday
2 Aug Joanne Reid Thanks, all done at Bay View
1 Aug Marek Kowalski No messages yet
Message your manager
Everything is saved
Jobs History My Time Messages Me
The cleaner app's Messages tab. A conversation is an entry like any other: when it last moved, in the rail; a mark in the margin only while it is still waiting on you; then who it is with and the last thing said. Today's conversations carry a clock time and older ones carry their date, so the whole column still reads as one straight line.
  • The header title reads Messages with a subtitle counting unread, or You are all caught up when there are none.
  • A search box placeholdered "Search conversations", and a two-way filter of All and Unread, the latter reading "Unread (3)" when there are any.
  • A footer button, Message your manager, which is always there. A cleaner who cannot find you should never have to.
  • With no conversations at all: "No conversations yet" over "Messages from your manager and the rest of the team land here."
  • Opening a thread hides the tab bar and gives it the whole screen, with a back label reading "Messages".

The thread itself is the same component you are using: same reactions, same replies, same read marks. It also works with no signal. A message typed underground is held on the phone and sent when the network comes back, and the toast says so rather than pretending it has gone.

Common questions

Can cleaners message each other, or only me?
By default, only you. The Company tab of Settings has a checkbox reading "Allow staff to message each other directly", and until it is ticked a cleaner opening a new direct message sees only admins in the list. Channels are unaffected: anybody in a channel can post in it unless it is a broadcast.
What happens to the messages when a cleaner leaves?
The history stays. Deactivating someone removes their access, but the conversations remain in your account, which is the main practical reason to run team messaging here rather than in a group chat on somebody's personal phone.
Can I delete a channel?
No. There is no delete and no leave anywhere in the channel settings panel. The only option is Archive channel, which hides it for everyone while keeping its history, and any admin can restore it from the archived channels sheet.
Do messages send push notifications to phones?
Only if the person has turned push on for their browser. The opt-in card lives in the notification dropdown on the web and under Push Notifications on the cleaner app's Me tab. Without it, messages still arrive, they are just not announced when the app is closed.