Landlord Self-Service Portal
Landlord Self-Service Portal
The landlord portal gives property owners a branded, secure window into their portfolio — without needing a platform account. Agents provision access with a single API call and share a link; landlords click it and immediately see their properties, tasks, compliance documents, offers, and messages.
How It Works
Token-Based Authentication
Access is controlled by a unique token embedded in the portal URL:
https://your-domain.com/landlord-portal/[token]
Tokens are created and managed by agents. There is one token per landlord per organisation — if a landlord has multiple properties, they all appear under the same token/link. Tokens record lastAccessedAt on each visit and can be deactivated or reactivated by agents at any time.
Provisioning Flow
Agents provision landlord access via the landlordPortalManage.createToken procedure:
- If the landlord email already has an active token for the org → the existing token is reused
- If not → a new token is created with agency branding resolved from org settings
- The specified property is linked to the token
- The portal URL is returned for the agent to share with the landlord
Additional properties can be linked later using landlordPortalManage.linkProperty.
Portal Tabs
Properties
Lists all properties linked to the landlord's token. Each card shows:
- Full address
- Property type, bedrooms, bathrooms
- EPC rating
- Current status
Clicking a property opens a drill-down with three sub-views:
| Sub-view | Content |
|---|---|
| Tenancies | Tenant names, rent amount, start/end dates, tenancy status |
| Compliance | Gas Safety, EPC, EICR certificates with expiry indicators |
| Documents | Downloadable files with landlord or all visibility |
Tasks
Displays landlord-assigned to-dos across all linked properties. A progress bar shows overall completion. Tasks are split into Pending and Completed sections. Landlords can mark pending tasks as complete directly in the portal.
Offers
Lists all offers associated with the landlord's properties. Offers with status sent_to_landlord are highlighted — these are awaiting the landlord's review. Each offer shows applicant details, offer amount, and current status.
Offer status labels:
| Status | Display |
|---|---|
invited | Invited |
in_progress | In Progress |
with_agent | With Agent |
sent_to_landlord | Awaiting Your Review |
landlord_reviewed | Reviewed |
accepted | Accepted |
rejected | Rejected |
cancelled | Cancelled |
Messages
A chat-style thread between the landlord and the managing agent. New messages from agents are highlighted. The message list auto-refreshes every 15 seconds — no WebSocket connection required. Landlords type and send messages directly from this tab.
Agency Branding
The portal is white-labelled per agency. The following fields are resolved from org settings when a token is created:
| Field | Usage |
|---|---|
logoUrl | Displayed in the portal header |
name | Agency name in header and footer |
primaryColor | Applied as the brand accent colour via CSS variable |
supportEmail | Shown in the footer with a mailto: link |
supportPhone | Shown alongside the support email in the footer |
If no logo URL is set, the agency name's first letter is shown as an avatar using the primary colour.
Database Schema
Three new tables support the landlord portal:
landlord_portal_tokens
One row per landlord per organisation. Stores the auth token, branding snapshot, landlord contact info, and activation state.
landlord_portal_properties
Join table linking tokens to properties (many-to-many). A single landlord can have multiple properties; all appear in their portal.
landlord_messages
Stores chat messages between landlord and agent, with senderType (landlord | agent) and isRead flag.
tRPC API Reference
landlordPortal (Public Router)
All procedures accept a token string as their first argument. The token is validated on every call — expired or inactive tokens return an error.
| Procedure | Description |
|---|---|
getSession | Returns landlord name and agency branding for the token |
listProperties | Returns all properties linked to the token |
listTenancies | Returns tenancies for a given property |
listComplianceDocs | Returns compliance certificates for a property |
listTasks | Returns all tasks assigned to the landlord |
completeTask | Marks a task as complete |
listOffers | Returns all offers linked to the landlord's properties |
listDocuments | Returns documents with landlord or all visibility |
listMessages | Returns the full message thread |
sendMessage | Sends a message from the landlord to the agent |
landlordPortalManage (Org-Scoped Router)
Used by agents to provision and manage landlord portal access.
| Procedure | Description |
|---|---|
createToken | Provisions a new token (or reuses existing) for a landlord email |
listTokens | Lists all tokens for the org |
getToken | Returns details for a single token |
deactivateToken | Revokes portal access for a landlord |
reactivateToken | Restores access for a previously deactivated token |
linkProperty | Links a property to an existing token |
unlinkProperty | Removes a property link from a token |
listMessages | Returns messages for a landlord's thread (agent view) |
sendMessage | Sends a message from the agent to the landlord |
Security & Audit
- No user account required — access is entirely token-based
- Token expiry — tokens record
lastAccessedAt; agents can deactivate tokens at any time - Document visibility — only documents explicitly marked
landlordorallare accessible;tenant-only documents are never exposed - Audit logging — all portal actions are recorded via the
logLandlordPortalAudithelper - Middleware allowlist —
/landlord-portalis added to the public path allowlist so token validation is handled at the router layer, not the middleware layer
No New Environment Variables
This feature is self-contained within the existing infrastructure. No additional environment variables or external service credentials are required.