Client Messages
Client Messages is the firm-side inbox at Client Messages where advisors handle conversations their clients start from the client portal. It collects every client message across all of your firm's businesses into one threaded view, keeps each conversation linked to its business, and adds a status workflow so questions get tracked to resolution — replacing the scattered email threads that make client communication hard to follow. (This is the advisor counterpart to the client-portal Messages experience; clients send and read from their portal, advisors work from here.)
Key capabilities
- A single firm inbox of every client conversation across all your firm's businesses
- Conversations carry a subject, a category (General, Document Request, Tax Question, Payment, Other), and a status (Open, Waiting on client, Resolved)
- Full threaded history with client / advisor message bubbles and sender names
- Reply inline; advisor replies notify the client by email and in their portal
- A status workflow with one-click transitions: Mark Waiting → Resolve → Reopen
- Filter the list by status and category
- Per-conversation unread dot plus a firm sidebar unread badge
- Read receipts — each message tracks when the other party read it
- AI Draft — a suggested reply based on the conversation context, with one-click "Use Draft"
- New client conversations email and Slack the firm (respecting per-user email preferences)
- Cursor-paginated list; each row shows the business name, author, message count, last-message preview, and time
How it works
Clients start conversations from their portal; advisors don't create them. A new conversation notifies the firm (email + Slack), then lands in Client Messages. Advisors reply (which notifies the client) and move the status through its lifecycle until it's resolved.
flowchart TD
client["Client starts conversation (portal)"] --> notify["Firm notified (email + Slack)"]
notify --> inbox["Client Messages (/books/client-messages)"]
inbox --> reply["Advisor replies"]
reply --> clientnotif["Client notified (email + portal)"]
reply --> status{"Status workflow"}
status -->|"Mark Waiting"| waiting["Waiting on client"]
status -->|"Resolve"| resolved["Resolved"]
resolved -->|"Reopen"| open["Open"]How to use it
- Open Client Messages from the sidebar to see every conversation across your firm's businesses (the count appears next to the title).
- Use the status and category filters in the toolbar to narrow the list; click Refresh to reload.
- Click a conversation to open it — messages render as bubbles (advisor on one side, client on the other) and opening it marks the client's messages read.
- Type in the composer and press Enter to send (Shift+Enter for a newline). Messages are limited to 10,000 characters.
- Click AI Draft to generate a suggested reply, then Use Draft to drop it into the composer and edit before sending.
- Move the conversation with the status button: Mark Waiting (open → waiting on client), Resolve (waiting → resolved), or Reopen (resolved → open).
- Watch the sidebar unread badge — it counts conversations with messages you haven't read yet.
Pro tips
- Use Client Messages instead of email so the whole exchange stays searchable, linked to the business, and visible to the rest of your firm.
- Set a conversation to Waiting on client after you reply — it signals the ball is in their court and keeps your Open list to true to-dos.
- Lean on AI Draft for routine replies, then personalize — it reads the conversation context so the draft is on-topic.
- Triage with the category filter: handle all Document Requests or Tax Questions in one pass.
- Mark conversations Resolved once closed; you can always Reopen if the client follows up.
In-depth guide
Who can start a conversation
Conversations are client-initiated — a client creates one from their portal with a subject, category, and first message. Advisors cannot start conversations from the firm side; they reply to existing ones and manage status. This keeps the firm inbox a true reflection of what clients have raised.
Categories
Clients pick a category when they open a conversation; you can filter on it.
| Category | Use |
|---|---|
| General | Default / anything uncategorized |
| Document Request | Client needs or is sending a document |
| Tax Question | Tax-related question |
| Payment Question | Billing or payment question |
| Other | Doesn't fit the above |
Statuses
Status drives the workflow buttons and the list filter.
| Status | Meaning | Typical transition |
|---|---|---|
| Open | Active, needs attention | → Waiting on client (after you reply) |
| Waiting on Client | Ball is in the client's court | → Resolved (once answered) |
| Resolved | Closed | → Open (Reopen if it comes back) |
Only advisors change status, via the firm interface.
Messages and read receipts
Each message records its sender, a role of Client or Advisor, the body, and a read timestamp.
- Marking read — opening a conversation marks the other party's messages read.
- Unread indicators — that read state drives both the per-conversation unread dot and the firm sidebar unread badge.
- Format — plain text, up to 10,000 characters.
- Attachments — there is no file attachment field on a message; share documents through Document Requests or the client portal instead.
Notifications
Notifications are best-effort and respect each user's "messages" email preference:
- New conversation → emails the firm's members and posts to the firm's Slack webhook, with the subject, a preview, and a deep link to Client Messages.
- Advisor reply → emails the client who created the conversation with a preview and a link to their portal Messages view.
If a notification fails to send, the message itself is still saved and visible in the inbox.
AI draft reply
With a conversation selected, AI Draft generates a suggested reply from the conversation's context and shows it in a panel. Use Draft copies it into the composer so you can review and edit before sending — nothing is sent automatically.
Relationship to the client portal and Threads
Client Messages is standalone client-to-firm correspondence, distinct from Threads, which attaches comments to a specific accounting object (a transaction, invoice, bill, etc.). Use Threads for "what's going on with this record" and Client Messages for general back-and-forth with the client. Clients see and reply to these conversations from their portal's Messages section.
Edge cases
- The list is firm-scoped and cursor-paginated; you can additionally filter to a single business.
- Resolving a conversation is reversible — Reopen returns it to Open.
- Sending requires non-empty text; the send button stays disabled until you type.