Messaging
Messaging
The myProp messaging system lets property clients communicate directly with their letting or estate agency from within the portal. All messages are routed through the AgentOS API and appear in the agency's existing workflow.
Accessing Messages
Navigate to Messages from the main portal navigation. The messages page is available at:
/<company-slug>/messages
You must be signed in to access this page. All messaging endpoints are authenticated.
Account Switcher
If you hold more than one property role — for example, you are both a landlord and a tenant — you can switch between your accounts without signing out.
- Desktop: an account switcher panel appears in the sidebar on the left.
- Mobile: a dropdown appears at the top of the messages view.
Supported account types:
| Account Type | Description |
|---|---|
| Landlord | Owns one or more rental properties managed by the agency |
| Tenant | Currently renting a property through the agency |
| Buyer | Searching for a property to purchase |
| Vendor | Selling a property through the agency |
| Contractor | Carries out maintenance or works on behalf of the agency |
Each account type is colour-coded and icon-labelled throughout the interface for quick identification.
Inbox
The inbox displays all messages associated with the selected account.
- Read / unread indicators — Unread messages are visually distinguished.
- Urgency badges — Messages flagged as urgent are highlighted.
- Category labels — Messages may carry a category set by the agency.
- Relative timestamps — Dates are shown as 2m ago, 3h ago, 5d ago, or a short date for older messages.
- Pagination — Use the previous/next controls to move through large inboxes.
Auto Mark-as-Read
Opening a message automatically marks it as read. No manual action is required.
Reading a Message
Click any message in the inbox to open the detail view. The detail view shows:
- Full message body
- Sender and recipient information
- Message metadata (date sent, category, urgency)
- A reply form (see below)
Use the Back button or arrow to return to the inbox.
Composing a New Message
- Click the Compose button in the messages interface.
- Confirm the sending account shown beneath the form heading — this is the persona the agency will see.
- Enter a Subject (required, up to 500 characters).
- Enter your Message (required, up to 5,000 characters). A live character counter is shown.
- Toggle Urgent if the matter requires priority attention.
- Click Send.
Once sent, the inbox refreshes automatically and the new message appears at the top.
Replying to a Message
From the message detail view, an inline reply form is shown below the message body.
- Type your reply in the reply field.
- Click Send Reply.
Replies are threaded to the original message on the AgentOS side.
Empty State
If your inbox is empty, the portal displays an empty state prompt encouraging you to use the Compose button to send your first message.
Error Handling
If a network or API error occurs, an error banner is shown with a Try Again button that retries the failed request. Form validation errors (e.g. missing subject or body) are surfaced inline before submission.
Technical Notes (for Developers)
tRPC Endpoints
All messaging endpoints live under the messaging router and require an authenticated session.
| Procedure | Type | Description |
|---|---|---|
messaging.status | Query | Check messaging service availability |
messaging.inbox | Query | Paginated inbox for a given account and type |
messaging.messageDetails | Query | Full message body and metadata for a single message |
messaging.send | Mutation | Send a new message to the agency |
messaging.reply | Mutation | Reply to an existing message thread |
messaging.markRead | Mutation | Mark a message as read |
AgentOS API Routing
The messaging service (src/lib/letmc/messaging.ts) automatically selects the correct AgentOS API branch:
- Buyers and vendors → routed through the
salesAPI - Landlords, tenants, contractors → routed through the
lettingsAPI
Account discovery uses accountDiscovery.discover to resolve the correct person record for each account type.
Send Payload Fields
| Field | Required | Max Length | Notes |
|---|---|---|---|
subject | Yes | 500 chars | Plain text |
body | Yes | 5,000 chars | Plain text |
isUrgent | No | — | Boolean flag |
accountId | Yes | — | AgentOS account identifier |
accountType | Yes | — | One of the 5 supported types |