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.
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 group | Messages in CleanFlo |
|---|---|
| Your personal mobile number | An account you can switch off |
| History leaves with whoever leaves | History stays with the company |
| Client addresses in a consumer app | Client 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 everything | A channel per round, plus one-to-one threads |
| Read receipts you cannot switch off | Read 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.
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.
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.
- 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".
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.
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.
Archiving hides the channel for everyone. Its history is kept, and an admin can bring it back at any time.
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.
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.
- 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?
What happens to the messages when a cleaner leaves?
Can I delete a channel?
Do messages send push notifications to phones?
Still stuck?
Open Support in the app and send us a ticket, or email the team. A real person reads every one.