Docs
Messages and files
Client, order and team conversations, custom offers and file storage.
Messages is ClientOS's built-in chat. Each client company has its own conversation with your team, each order has one too, and your team has channels and direct messages of its own. You can price custom work right inside a client's conversation with a custom offer. This page also covers files: where they're stored and how clients find them.
Messages is an optional module. Turn it on or off in Settings → Modules. Support tickets are separate; see Support tickets.
Where it lives#
| What | Menu path | Route |
|---|---|---|
| Messages | Inbox → Messages | /messages |
| An order's conversation | The order's Conversation tab | /orders/ORD-482917 |
| Reminder rules | Settings → Messaging | /settings/messaging |
| Saved replies | Settings → Saved replies | /settings/saved-replies |
| Storage limits | Settings → Storage | /settings/storage |
| The client's messages | Portal → Messages | /messages |
| The client's files | Portal → Files | /files |
A chat button in the bottom-right corner of every page (on wider screens) opens your newest conversations in a small window, shows the unread count and announces new messages, so you can reply without leaving what you're doing.
Conversation types#
| Type | Who's in it | How many | Notes |
|---|---|---|---|
| Client (the client's General chat) | The client company's people and the staff assigned to it | Exactly one per company | Always open. |
| Order | The same, for the order's company, plus the order's owner | Exactly one per order | Read-only once the order is completed or cancelled. A revision that reopens the order reopens the chat. |
| Channel | Staff only | As many as you like | Open (everyone with chat can read and join) or private (members only). |
| Direct message | Staff only | One per group of people | Members only. Nobody else can read them. |
Client and order conversations are created automatically. Clients can't start new conversations; they write in their General chat or on an order.
The admin list groups conversations under Clients, Orders, Channels and Direct messages, with an Unread filter and a search. Clients see General and Orders, with closed orders last.
Start a conversation#
Click New conversation and choose:
- New message: pick one person for a direct message, or several for a group. Click Open conversation.
- New channel: give it a Name, an icon or Picture, choose Private — only the people in it can find it if needed, add People and click Create channel.
- Message a client: search by company name or order number and open that conversation.
Assign team members to a client conversation#
Open a client's conversation and choose Assign team members. Assigned people can read the conversation and are notified when the client writes. Assigning needs the Manage conversations permission.
Writing messages#
- Mentions: type
@to mention a teammate or a client contact. Mentioned people are notified. - Reactions: react with a quick emoji or pick any from the picker.
- Replies: quote a message to reply to it; click the quote to jump to the original.
- Edit and delete: edit your own messages (press the up arrow in an empty box to edit your last one). Delete your own; people with Delete others' messages can delete anyone's.
- Attachments: attach files with the paperclip, by pasting or by dropping them in.
- Links: links show a preview card.
- Presence: see Who's online, who's typing, and Sent, Seen or Seen by N on your messages.
- Mention a service: the grid button in the composer lets anyone, client or staff, attach a service card from your store to a message. Clients can use it to ask about a specific service.
- Drafts: an unsent message is kept per conversation in your browser.
Saved replies#
Saved replies are answers your team sends often, written once. Insert one in a chat, a ticket or a delivery message.
- Go to Settings → Saved replies and click New reply.
- Give it a Name (only your team sees it) and write the Body.
- Use variables such as the client's first name, the company name, the order number or your own name; they fill in when you insert the reply.
- Turn on Share with the team to let everyone use it, or leave it off to keep it for yourself.
- Click Create reply.
Under Auto replies, a shared reply can be sent automatically when A client writes in their General chat for the first time. It's posted once per client company, as a message from your agency.
Custom offers#
A custom offer prices bespoke work inside a client's conversation. The client accepts and pays, and the payment creates the order.
Send an offer#
- Open the client's General conversation.
- Click the grid button in the composer and choose Create a custom offer.
- Add lines from your store (several packages are fine) and adjust prices, add a discount, and write a Message: what's included and anything they should know.
- Click Send offer.
The offer appears as a card in the conversation, and the client is notified in the portal and by email.
What happens next#
| Offer status | Meaning |
|---|---|
| Waiting on the client | Sent, not yet accepted. |
| Awaiting payment | The client clicked Accept & pay. An invoice for exactly the offered figures has been raised. |
| Paid · order placed | The client paid. The order was created and linked to the invoice. |
| Withdrawn | You withdrew it. |
- The client clicks Accept & pay, pays the invoice, and lands on their new order's requirements, just like buying from a service page.
- No order exists until the client pays, so unpaid offers never clutter your orders or board.
- Click Withdraw to take an offer back. If it was already accepted, its invoice is voided. A paid offer is an order and can't be withdrawn.
Sending offers needs Place an order, See prices and Raise an invoice.
When a client asks for custom work#
A client with no orders yet sees Request a custom service on their portal Overview. Their request (what they need, website, budget, timeline and details) arrives as a message in their General conversation, or as a support ticket if Messages is off. Reply there, and send a custom offer when you're ready to price it.
Reminders#
Unanswered messages can trigger email reminders. Set them in Settings → Messaging.
| Setting | What it does |
|---|---|
| Remind the team when a client is waiting | Emails whoever holds the conversation (assigned members and the order's owner), or everyone who manages chat if nobody does. Stops as soon as anybody on the team replies. Default steps: 4, 24 and 48 hours. |
| Remind the client when the team is waiting on them | Emails the client's people who can read the conversation. Stops as soon as one of them replies. Default steps: 24, 72 and 168 hours. |
| Which conversations | Each client's general conversation and/or Order conversations (open orders only). |
Each side has a First reminder, Second reminder and Third reminder, counted in hours from the unanswered message. Both are off by default. Team channels and direct messages are never reminded.
Separately from reminders, people get a notification for a new message only if they weren't online when it was sent.
Files#
Files are stored privately, on your server or in your own Cloudflare R2 bucket, and served through short-lived signed links.
Files attach to:
- order deliveries and order conversations
- client conversations, channels and direct messages
- support tickets (files on internal notes stay internal)
- digital products
- expense receipts
- your logos
Storage limits#
In Settings → Storage → How files are served:
| Setting | What it does |
|---|---|
| Signed URL lifetime | How long a download link keeps working. Every download link uses it. |
| Maximum file size | The largest upload allowed. Checked before upload and again when it completes. |
Every file except your brand marks is private and scoped to the company that owns it. A client who guesses another client's file address gets a refusal. See Settings reference for moving files to R2.
The client's Files page#
Portal Files lists every file shared with the client in one place: everything you delivered and everything they sent, labeled with the order, invoice or "Messages" it belongs to. What each person sees follows their access: order files need order access, invoice files need invoice access.
Clients upload files on an order or in a conversation; the Files page itself is a list. Uploading needs a company role that allows it (owners, admins and members, not viewers).
What the client sees#
- Messages with their General chat and one conversation per order.
- Their colleagues and the staff on their conversations as online when they are.
- Custom offer cards with Accept & pay.
- Files with everything shared.
A client needs Collaborate on tickets to use the General chat and Collaborate on orders (or to have placed the order) for an order's chat. Viewers can read but not write. See The client portal.
Permissions#
| Permission | Lets someone |
|---|---|
| Use chat | Open Messages. |
| Send messages | Write in conversations they belong to. |
| Manage conversations | Create channels, read every client and order conversation and every channel, and assign team members. |
| Delete others' messages | Delete any message. |
| Messaging (settings) | Edit reminder rules. |
| Saved replies (settings) | Manage shared saved replies. |
An order's owner can always read and write that order's conversation, even without chat permissions, while Messages is on.
Tips#
- Assign an account manager to each client conversation so reminders have someone to go to.
- Turn on team reminders with short steps if you promise fast replies.
- Use custom offers instead of emailing quotes: the client pays in one click and the order sets itself up.
- Keep the signed URL lifetime short. Links are regenerated each time someone opens a file.