Tenant Portal
Read this concept after setup steps 10–11 (Tenant categories + Emails) and before your first tenant moves in during step 14 Bookings. Optional portal add-ons: Services Marketplace (setup Services tab). Concept pairing: Concepts — Setup sequence after go-live.
Start with How Tenants Access the Portal, then Payments tab and Digital contract signing. Self-service: Tenant Self-Service. Non-linear operator habits (Lockout catch-up, Pending manual receipt approval, Reject/revert mistaken receipts, Portfolio segmentation by tenant category, Notification row-click navigation, Payment alert to receivables triage, Confirmation alert triage, Finance debt receivables triage, Finance Income status drill-down, Cash flow forecast drill-down) have matching Related subsections below. Full pairing matrix: Tenant Portal section cross-reference · Concepts — Concept cross-reference.
Vivin provides tenants with a web-based Tenant Portal — separate from the management platform used by your team. It gives tenants full visibility into their contract, payments, and property information while enabling self-service features that reduce the workload on your operations team.
Portal payments and receipt allocation follow Payment Allocation; tenant add-on purchases pair with Services Marketplace; WhatsApp chatbot escalation contrasts with portal self-service in Automation & AI. Full pairing matrix: Concepts — Concept cross-reference.
How Tenants Access the Portal
The Tenant Portal supports two complementary entry paths:
- Email access-link request (default screen)
On first load, tenants enter their email address and click Send access link.
If a matching booking is found for that email, Vivin sends a secure portal link.

-
Direct portal link with booking credentials
Onboarding/check-in emails can include a direct portal URL that already contains:- Booking ID (
id) — the reservation identifier - Access Code (
code, when configured) — the booking-specific portal credential
Operators can also copy or preview that same booking-scoped URL from the booking Contract Info tab (Method of payments → Tenant Portal); see Bookings > Contract Info — Tenant Portal link.
- Booking ID (
Both paths resolve to the same booking-scoped authentication model.
These access links are typically included in onboarding/check-in emails configured in Settings > Emails.
Invalid or expired links
Booking links can stop working when a code has rotated, the link was revoked, or the URL was copied incorrectly. In that case the portal shows a clear recovery screen instead of the booking home — tenants can request a fresh email link or follow your support path.

flowchart LR
subgraph paths[Tenant entry paths]
A[Email + Send access link] -->|Matching booking| B[Secure link in inbox]
C[Direct URL with id / code] --> D[Same booking-scoped session]
end
B --> E[Tenant Portal home]
D --> E
The diagram is conceptual: the product may show different intermediate screens (for example an access-code field), but both paths authenticate the tenant to one booking at a time.
The Tenant Portal does not use email/password accounts. Access is booking-based: secure links carry booking credentials, and sessions can be restored for returning users.
Signed-in home
Home cards pair with Bookings > Contract Info (portal link copy), Settings > Emails (onboarding links), and FAQ — Tenant Portal. Full pairing matrix: Tenant Portal section cross-reference.
After a valid access link or email flow, tenants land on the Home screen: branded header, primary navigation (Payments, Utilities, Requests, Contract, Documents, Services, Account), and cards for outstanding balance, next payment, open requests, contract status, and lease summary (property code, address, check-in/out).

Payments tab
Ledger and pay-in pair with Payment Allocation, Finance module, Handling a Late Payment — Step 1, and Make payment (Paywall) below. Full pairing matrix: Tenant Portal section cross-reference.
The Payments tab (/payments) is the tenant’s ledger view — not the same screen as Make payment (/paywall), which is the checkout flow documented under Make payment (Paywall).
When the account payment module is active for the booking, the tab shows:
- Payment schedule — the same timeline tenants see on Home, listing scheduled charges with amounts, due dates, and status badges. This mirrors the Payment Plan tab in the management platform.
- Transaction history — inbound and outbound ledger rows with search, sortable Date and Amount columns, pagination (10 rows per page), and Export CSV for the filtered set. Search accepts signed amounts — for example
-610finds a €610 refund line (#2301). - Receipt links — when operators attach Invoice / receipt files to the booking, inbound rows can show a Receipt control that opens the matched document.
- Processed deposit refund (#2295) — after operators click Mark refunded, the Deposit Refund row shows the net cash returned to the tenant (minus prefix), not the full contract deposit. When charges were deducted from the deposit before refund, an explanatory note shows the breakdown (
grossReversed,appliedToCharges,netToTenant). Transferred refunds (balance moved to another booking) showtransferredstatus with €0 net to this tenant. Until abooking_deposit_refundrow exists, the portal still shows the forecast/pending state — see Managing a Check-out — Step 5 and Glossary — Deposit refund summary (tenant-facing).
The page header includes Make payment when online pay-in is enabled and the booking has an outstanding or upcoming balance.

If the payment module is not provisioned for the account, the Payments nav item is hidden and tenants are redirected to Home when they open /payments.
What Tenants Can See
Once logged in, tenants have access to:
Payment Schedule
The tenant can view their complete payment schedule — all scheduled charges with amounts, due dates, and payment status. On Home this appears as the payment timeline card; the full list lives on the Payments tab. This mirrors the Payment Plan tab in the management platform.
Payment History
When the payment module is active for the booking, tenants can review scheduled charges and payment-related activity on the Payments tab (transaction history with search, sort, CSV export, and receipt links). There is no separate “show payment history” preference in Settings > Preferences; visibility follows payment-module and portal configuration.
Contract Details
Full contract information including unit details, rental period, pricing, and terms.
Digital contract signing
Signing gates pair with Settings > Preferences — Mandatory fields (settings-preferences-tenant-portal-contract-signing-required.png), Settings > Contract templates (PDF must exist before Sign contract), Tenant categories, FAQ — Tenant contract signing blocked (operator troubleshooting), Processing a New Booking — Step 4, and Settings > Emails (portal signing vs paper upload). Full pairing matrix: Tenant Portal section cross-reference.
When Vivin has generated a contract PDF for the booking, tenants can sign digitally from Home (Sign contract) or the Contract tab. Signing runs in a full-screen wizard with four steps:
| Step | What the tenant does |
|---|---|
| Your Details | Confirms or fills profile fields (name, phone, nationality, ID metadata, fiscal data, IBAN, and related fields). Fields your account marks as Mandatory for contract signing show an asterisk and block Next until filled. Tenant categories can further lock fields the tenant may not edit. |
| Billing | Reviews or completes billing name, fiscal ID, and billing address when those fields are editable for the tenant’s category and booking state. |
| Review | Reads a summary of personal, ID, fiscal, and billing values with Edit shortcuts back to earlier steps. When Lease purpose is enabled and required on the account, the tenant picks an allowed value here before signing. |
| Sign | Scrolls through the contract PDF, acknowledges they have read it, draws a signature on the canvas, and submits. Escape closes the wizard without saving. |
After a successful portal signature, Vivin stores signedContractPath on the booking — that satisfies After contract signed (and combined paid+signed) lifecycle check-in triggers. Uploading a signed PDF on management Contract Info does not run the same trigger evaluation; use Send Check-in email on Contract Info → Check-in & Check-out after a paper upload when requirements are met (bookings-detail-contract-check-in-out-emails.png). When tenants report missing arrival mail, see FAQ — automatic check-in email; when they cannot reach Sign, see FAQ — Tenant contract signing blocked.
If no contract PDF exists yet, Home and Contract guide the tenant to contact you or retry later instead of opening an empty sign flow — confirm Contract Info in management and your contract template workflow first (FAQ — Tenant contract signing blocked). Account Mandatory for contract signing toggles (illustrated on Preferences) map to asterisk gates on the Your Details step below.
Property Information
The portal displays the property name, address, and any relevant details about the unit the tenant is renting. When a floor is stored on the listing, the Home welcome line and lease summary append it after the street address — Vivin avoids duplicating the word “Floor” when the stored value already includes it (for example 2nd floor stays as written; 3 becomes Floor 3).
Entry codes
When enabled, tenants see an Entry codes card on Home with building, property, and unit access codes configured in the property's Access Lockers tab. Each level shows a masked value by default — tenants tap Reveal to read the code and Copy to paste it into a keypad or message.
The card appears only when all of the following are true:
| Requirement | Detail |
|---|---|
| Account toggle | Allow to see entry codes is On under Settings → Preferences → Tenant Portal (defaults On). |
| Check-in email sent | Vivin has sent the booking's check-in email (checkInEmailSentAt is set) — same gate as other arrival content. |
| Active stay window | Current time is before the physical checkout instant (check-out date + time). |
| Not canceled | The reservation is not in a canceled state. |
| Configured codes | At least one of building, property, or unit access codes is non-empty on the listing/property. |
When any requirement fails, the Entry codes card is hidden entirely (no empty placeholder).
The check-in email always includes access codes from Access Lockers when that lifecycle email sends — independent of Allow to see entry codes. The Preferences toggle gates only the portal Home card (#2166). Operators who disable portal entry codes should still expect codes in check-in mail unless they change lifecycle email content separately.
Operator setup: configure codes on Listings → Access Lockers, confirm Managing a Check-in — Step 4 (check-in email + portal), and audit the toggle on Preferences → Tenant Portal. When tenants report missing codes on Home but received check-in mail, see FAQ — Entry codes in the portal.
Key Features
- White-labelled — the portal carries your brand colours, logo, and identity, presenting a professional experience under your company name.
- Automated tenant support (external channels) — AI-assisted responses are available through channels such as WhatsApp and email where configured (see Automation & AI). The Tenant Portal web UI does not include an in-portal chat screen today.
- Secure access — tenants use booking-specific secure links/credentials, with no password management needed.
Portal access by tenant category
What each tenant can open in the portal (modules such as Contract, Payments, Utilities, and Services, plus which profile fields are editable) follows the tenant category assigned on their profile. Operators configure segments under Account Settings → Tenant categories; integration-created tenants can inherit a default for integrations category when none is set manually. To audit how many live bookings or receivables belong to a segment before you change portal modules account-wide, use the same category on Bookings — Other filters, Finance — Tenant category filter, or Tenants — Tenant category filter — see Portfolio KPI review — Step 6.
Utilities tab
When Allow to see utilities is enabled in Settings > Preferences — Tenant Portal and the booking is not in a refunded state, tenants open Utilities (/utilities) to review consumption and bill allocation for the property.
| Area | What tenants see |
|---|---|
| Daily breakdown | Consumption heatmap / grid for the billing period — useful when operators enter monthly landlord bills in Entering Monthly Utility Bills. |
| Cost allocation | How shared utility costs are split across units and which overage charges may appear on the payment schedule. |
If utilities are disabled for the booking or category, the tab shows a short message that utility billing is not enabled.

Operator setup: Utilities module (Connections, AI bill upload, Bills Included ceiling) and the per-booking utilities toggle in Preferences / tenant categories. External assistants surface the same overage context with booking-scoped Tenant MCP get-payment-info — see Entering Monthly Utility Bills — Step 4.
Online Payments
Pay-in requires account payment module + Listings > Payments tab Property Payments Active — distinct from Preferences profile toggles. Card and vIBAN flows: Make payment (Paywall). Full pairing matrix: Tenant Portal section cross-reference.
Tenants can make payments directly through the portal. Multiple payment methods are supported:
- Bank transfer — each booking can use a unique virtual IBAN as the transfer destination (shown to operators on the booking Contract tab and in contract templates via
{{vIBAN}}). This is a dedicated receiving reference for rent — not the tenant's personal IBAN. It enables zero-commission bank transfers and automatic matching when the payment module is active. - Credit card — optional credit card payments where the commission is charged to the tenant only, at no cost to the operator.
Online payments require both of the following:
- Tenant payment module active on the account — pay-in features (for example card or bank flows shown to tenants) are provisioned per account. If tenants never see payment options, confirm with Vivin support that the payment module is enabled for your organisation.
- Property Payments Active — a per-property toggle in the Payments tab of each property.
Account Settings > Preferences controls account-wide tenant edit defaults (fiscal data, IBAN, tickets, services, utilities, and related defaults). Tenant categories can further restrict portal modules and fields per segment. Neither replaces the two requirements above for taking a payment online.
Make payment (Paywall)
When the booking has an outstanding or upcoming balance and online pay-in is enabled, tenants open Make payment from Home (balance card) or Payments (/paywall with the same booking id + code query parameters). The screen is a two-step flow:
- Select an amount — radio options depend on what is owed: Pay overdue debt, Pay next payment, Pay overdue + next payment (when both apply), and Pay entire balance (full
missingValue). When nothing is due, the amount section shows You have nothing to pay right now. Your payments are up to date. and payment-method controls stay disabled. Operators chasing the same balance see matching payment overdue rows on/notifications— row-click opens the booking sidebar for Handling a Late Payment — Step 1. - Select a payment method — Bank Transfer (IBAN) and/or Credit Card when the account has card pay-in provisioned (
isPaymentCCFeatureActive).


Bank transfer (virtual IBAN)
Expanding Bank Transfer (IBAN) shows the booking’s virtual IBAN (same receiving reference operators see on Contract Info), a copy control, Easypay institution details, and a note that bank transfers can take up to 48 hours to match. Tenants must include the correct reference so Vivin can auto-allocate the in-payment.

When your account is configured to encourage card pay-in for near-term due dates (noticeTenantToUseCC), the first expand of Bank Transfer may show a Payment Due Soon dialog recommending Credit Card for faster settlement. Escape, the X control, or the backdrop dismisses the modal; focus returns to the bank-transfer control.

Credit card (embedded checkout)
Credit Card creates a hosted checkout session for the selected amount, then embeds the provider page in an iframe on the same screen (no separate browser tab). The tile shows Faster & extra security, accepted card brands, and a +5% service fee note charged to the tenant. While the session is created, the UI shows Initializing payment…; on failure, a red panel shows the error with Try again.

Successful card capture posts a webhook back to Vivin; the payment schedule and Home balance refresh on the next load. Operators reconcile the same in-payment on Finance → Transactions and the booking Transactions tab like any other card receipt.
If tenants report a blank or blocked credit-card area after Initializing payment…, the hosted checkout page may not be embeddable in their browser (for example strict X-Frame-Options or content blockers). Vivin serves checkout HTML with a scoped Content-Security-Policy: frame-ancestors allowlist so only Vivin tenant-portal origins can embed the form — card sessions should complete in-portal on *.vivin.app. Ask the tenant to retry on a desktop browser, disable frame-blocking extensions for the portal domain, and confirm the booking still has Property Payments Active and an active payment module. Persistent failures after a successful session create belong in support with the booking id and approximate time.
Maintenance & Support (Requests tab)
Portal Requests pair with Operations module, Settings > Preferences (Allow to create tickets), and Bookings > Tickets tab. Full pairing matrix: Tenant Portal section cross-reference.
The sidebar label is Requests; the route is /help and the page heading is Maintenance & Support. Tenants use this area when Allow to create tickets is enabled in Settings > Preferences.
New Request
The New Request sub-tab collects:
- Space — room or area selector when your property defines spaces
- Issue title and description
- Photo attachments — images for context (uploaded after the ticket row is created)

History
The History sub-tab lists submitted maintenance rows with status, dates, and Staff Notes when your team fills Tenant note on the Operations ticket. Deep links ?tab=history and ?focusRequestId=<ticketId> open History directly — Home uses these when a tenant taps View all N requests or follows a notification link.

Maintenance Requests
Tenants can submit maintenance requests from the portal:
- Describe the issue with text and attach photos for full context
- Track the status of their request from submission through to resolution
- Read staff updates — when your team fills in Tenant note on the Operations ticket, the portal shows it on the request card as Staff Notes (teal highlight). Resolution description on the ticket is never shown in the portal; it is for internal closure notes only.
- Requests automatically create tickets in the Operations module for your team to manage
This self-service capability reduces phone calls and emails to your team while ensuring maintenance issues are documented with photographic evidence from the start.
Errors, timeouts, and recovery
The Tenant Portal uses booking-scoped sessions — when data cannot load, tenants see actionable copy instead of a blank screen or developer error text:
| Situation | What tenants see |
|---|---|
| Portal bootstrap cannot load the signed-in shell (fatal error before tabs render) | Something went wrong with the error detail, Try again (reload), and a contact support link to vivin.app/contact |
| Booking home cannot load (network timeout, 5xx, or no response) | Friendly retry message (for example trouble reaching the service or check your connection) — not raw API errors such as Network Error |
| Send access link with an unknown email | Server validation message when the API returns one; otherwise generic guidance to check the address |
| Request history API fails with no cached rows | Couldn’t load your requests panel with Try again — distinct from the genuine No requests yet empty state |
| Maintenance submit succeeds but photo upload fails (#1487) | Amber banner Request submitted without attachments — the Operations ticket was created, but files did not save. Detail copy asks the tenant to retry or contact support; the History tab opens so they can confirm the row exists without photos |
Deep link ?focusRequestId= does not match any request | Amber not found hint — the link may be stale or the request was removed |
| Modals, sidebars, lightbox, install prompt | Escape dismisses the overlay (same pattern as the management app’s slide-outs) |
| Credit card checkout fails to load or iframe stays blank | Red error with Try again after Initializing payment…, or an empty iframe — retry, check ad blockers / strict browser privacy settings, confirm payment module + Property Payments Active; see Make payment — Credit card |
| Make payment with zero balance | You have nothing to pay right now — methods disabled until a charge is due or overdue |
On Home, the Open requests card lists up to three active maintenance rows. When more are open, a View all N requests link opens the full Help tab so tenants are not left thinking only three exist.
Operators troubleshooting tenant reports should confirm booking credentials, payment-module provisioning, and Preferences / tenant category gates before assuming a portal defect.
Documents tab
Shared files pair with Bookings > Files tab (operator uploads) and Managing a Check-in (ID and contract handoffs). Full pairing matrix: Tenant Portal section cross-reference.
Documents (/files) lists booking files operators attach in the management app (contract PDFs, invoices, ID scans, and other categories). Tenants can preview supported types in a lightbox (images and embeddable PDFs) and download any file they are allowed to see.
When operators upload from the booking Files tab in Bookings, each shared file appears on the portal with its category label, upload date, and row actions (Preview / Download depending on type). The list refreshes on each visit so new uploads appear without re-sending the portal link.
When files are attached, tenants see a populated grid instead of the empty state:

When no files are shared yet, the tab shows an empty state instead of an error.

On mobile, Documents is reachable from the More bottom-nav item rather than the primary tab bar.
Account tab
Editable profile fields pair with Tenant categories (field locks), Tenants module (operator-side profile), and mandatory-for-signing gates in Preferences. Full pairing matrix: Tenant Portal section cross-reference.
Account (/account) is where tenants update profile and billing fields your Preferences and tenant categories allow:
| Section | Typical fields |
|---|---|
| Personal information | Name, phone, nationality, ID document metadata, fiscal ID and address |
| Bank account | European vs non-European toggle, IBAN, SWIFT/BIC, and related bank address fields |
| Billing information | Company billing toggle, billing name, fiscal ID, billing address |
Locked fields show read-only values or hide entirely per category portal access rules. The page refetches booking data on each visit so changes made by operators in management appear without a full browser reload.

Mandatory-for-signing fields configured under Preferences are enforced here and in the contract signing wizard — not only on Account.
Services catalogue
Add-on purchases pair with Services Marketplace, Settings > Services, and Payment Allocation (Layer 1 schedule lines). Full pairing matrix: Tenant Portal section cross-reference.
When Allow to see services is enabled in Settings > Preferences — Tenant Portal, tenants can open the Services area of the portal, browse your Services catalogue, and submit requests for one-time or monthly add-ons.
- Cards — Each offering shows name, optional image, price, billing type (One-time or Monthly), and an optional description.
- Property scope — The catalogue lists only services that apply to the tenant’s property. Offerings configured with All properties in Settings > Services appear for everyone; services restricted to specific properties are hidden when the tenant’s booking is not on one of those properties.
- Description preview — If you enter a long description in Settings, the portal shows a short preview on the card (about two lines, with an ellipsis when the rest is hidden). The same preview pattern appears in the confirmation panel before the tenant confirms a request. Put the most important details first, or use the optional Link field in Settings to point to full terms, a booking page, or an external provider.
- Billing — For standard services, confirming a request creates a charge on the payment schedule immediately. For approval-gated offerings (configured with Requires approval in Settings > Services), the card shows Awaiting approval after submit — no charge until a manager approves in the Requests tab. Tenants can cancel a pending request from the portal; rejected requests may show the operator’s optional reason.
- Approval-gated services — Identified in management by the Approval required badge on the catalogue card. The portal blocks duplicate pending requests for the same service on one booking until the current request is approved, rejected, or cancelled.
Before confirming, tenants review the selected offering in a confirmation panel (price, billing type, and description preview):

Branding
The portal is white-labelled with your company's identity:
- Logo — displayed in the header (configured in Settings > General Information)
- Brand Color — the primary accent color used throughout the interface (configured in Settings > General Information)
- Company Name — displayed in the portal and in all communications
This allows each property management company to present a professional, fully branded experience to their tenants.
Tenant Self-Service
Depending on your configuration in Settings > Preferences > Tenant Portal, tenants may be able to:
| Area (Preferences toggles) | What the tenant can do when enabled |
|---|---|
| Fiscal / ID / billing / IBAN fields | Update the corresponding profile and bank fields before or after contract signature, per toggle. |
| Allow to create tickets | Submit maintenance requests with attachments (creates Operations tickets). |
| Allow to see services | Browse the services catalogue and submit service requests. |
| Allow to see utilities | View utility consumption and charges. |
Contract signing gates — Under the same Tenant Portal card, Mandatory for contract signing can require any combination of Your Details fields (name, phone, nationality, identification and fiscal data, IBAN, and related ID metadata) to be filled before the tenant can sign. Each enabled toggle is enforced in the portal UI and on the sign API. See Preferences — Mandatory fields before contract signing. Tenant categories can further narrow portal modules and editable fields per segment.
Paying online follows Online Payments: account payment module + Property Payments Active, not a separate “online payments” row on the Preferences page.
Key Rules
Summary rules pair with Portal access by tenant category, Bookings > Contract Info, and Settings > General Information (branding). Full pairing matrix: Tenant Portal section cross-reference.
-
Access is per-booking. Portal links include booking credentials (typically
id+code). Email access-link requests deliver those credentials in a secure link. A tenant with multiple bookings needs separate links/credentials per booking. -
Self-service is scoped by settings and booking type. Tenants can view contract, property, and payment information. They cannot change booking dates or the core payment schedule from the portal. Depending on your Preferences, they may update specific profile/billing fields, sign the contract digitally, and pay online when the payment module and property toggles allow it.
-
Online payments require an active payment module and a property that allows payments. The account must have tenant pay-in provisioned, and Property Payments Active must be on for that listing’s property; otherwise the portal will not complete an online payment.
-
Branding is account-wide. All tenants see the same brand colour and logo, regardless of which property they are renting.
-
The portal is white-labelled. It carries your brand identity, not Vivin's — tenants see your company name and colours.
-
Maintenance requests create tickets automatically. When a tenant submits a request, it appears in the Operations module for your team to manage.
Tenant Portal section cross-reference
Use this table when one portal area naturally leads into operator configuration or a related workflow — each row links to the docs you should read before or after the primary tab.
| Portal area | Pair with these docs |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Signed-in home | Bookings > Contract Info (portal link copy), Settings > Emails (onboarding links), FAQ — Tenant Portal |
| Payments tab | Payment Allocation, Finance module, Handling a Late Payment — Step 1, Notifications — Payment overdue alerts, Make payment (Paywall) |
| Digital contract signing | Settings > Preferences — Mandatory fields, Tenant categories, Bookings > Contract Info |
| Documents tab | Bookings > Files tab (operator uploads), Managing a Check-in (ID and contract handoffs) |
| Requests tab | Operations module, Settings > Preferences (Allow to create tickets), Bookings > Tickets tab |
| Services catalogue | Services Marketplace, Settings > Services, Settings > Tenant categories (Allow to see services per segment) |
| Portal access by tenant category | Settings > Tenant categories, Bookings — Other filters, Finance — Tenant category filter, Tenants — Tenant category filter, Portfolio KPI review — Step 6, Glossary — Tenant category |
| Account tab | Tenant categories (editable fields), Tenants module (operator-side profile) |
| Lockout catch-up after password recovery | Sign-in restored; concept validation backlog accumulated | Common Workflows — Lockout catch-up, Getting Started — Lockout catch-up, Resetting a Management User Password — Step 3 |
| Pending manual receipt approval | Recorded bank transfers still pending until Approve payments | Common Workflows — Pending manual receipt approval, Finance — Pending manual payments, FAQ — Manual receipt still pending |
| Reject/revert mistaken receipts | Duplicate or wrong-booking receipts after Approve | Common Workflows — Reject/revert mistaken receipts, Payment Allocation — Correcting mistaken receipts, Glossary — Credit note (payment reject/revert) |
| Portfolio segmentation by tenant category | Review one tenant segment across modules | Common Workflows — Portfolio segmentation, Settings > Tenant categories, Finance — Tenant category filter, Tenants — Tenant category filter |
| Notification row-click navigation | Portal context after /notifications row-click | Concepts — Notification row-click navigation, Common Workflows — Notification row-click navigation, Notifications module — Notification row-click navigation |
| Payment alert to receivables triage | Portal pay-in vs payment overdue alerts | Concepts — Payment alert to receivables triage, Common Workflows — Payment alert to receivables triage, Handling a Late Payment — Step 1 |
| Confirmation alert triage | Upcoming portal access gates on new stays | Concepts — Confirmation alert triage, Common Workflows — Confirmation alert triage, Processing a New Booking — Step 5b |
Related
Related below links this concept to modules, workflows, settings, and escalation paths. Pair Documentation map & escalation with Concepts hub — Documentation map & escalation; pair Portal setup and tenant-facing workflows with Processing a New Booking. Topic-to-section pairing in sections above: Tenant Portal section cross-reference. Full hub matrix: Concept cross-reference.
Documentation map & escalation
Documentation-map bullets pair with Introduction — Section cross-reference and FAQ — Section cross-reference. Hub parity: Concepts — Documentation map & escalation. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Introduction — Platform overview and how documentation sections connect
- Getting Started — Recommended setup sequence including tenant portal configuration
- Modules — Operator workspaces that feed portal data (Bookings, Finance, Operations, Utilities)
- Concepts — Underlying models behind portal payments, lifecycle, and automation
- Account Settings — Workspace-wide portal toggles, branding, and tenant categories
- API Reference — Partner imports that create bookings with portal credentials (distinct from tenant-facing URLs)
- Glossary — Term definitions used across portal docs; portal-specific answers in FAQ — Tenant Portal
- FAQ & Troubleshooting — Quick answers when portal behaviour disagrees with operator expectations
- Get Help & Support — Escalation when portal access is blocked by account state or permissions
- Using in-app support — Vivin product tickets distinct from tenant maintenance Requests (section cross-reference; Deeper workflow reads; hub)
Navigation & bookmarks
Bookmark routes pair with Management Frontend Deep Links and Concepts hub — Navigation & bookmarks. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Bookings > Contract Info — Tenant Portal link — Copy or preview the booking-scoped
id+codeURL operators share with tenants - Management Frontend Deep Links — Bookmarkable management routes paired with portal setup (Account Settings, Notifications bell vs
/notifications) - Settings > Tenant categories —
/settings/tenantCategoriessegment rules that gate portal modules and editable fields - Settings > Interface language — Operator UI locale before you walk multilingual tenants through portal screens on a shared monitor
- Tenant MCP — Booking-scoped automation tools (
get-portal-link, maintenance) that wrap the same Core API as the portal UI
Portal setup and tenant-facing workflows
Portal setup and tenant-facing workflows bullets pair with the matching topic rows in Tenant Portal section cross-reference above. Full pairing matrix: Concept cross-reference.
- Getting Started — Recommended setup sequence including tenant portal configuration
- Processing a New Booking — Step 2 — Assign Category on Tenant Info before portal mail on direct bookings (section cross-reference; Deeper workflow reads; hub)
- Processing a New Booking — Step 6 — When portal access becomes active (Contract Info link / impersonate) (section cross-reference; Deeper workflow reads; hub)
- Managing a Check-in — Verify portal links and access codes before key handover (section cross-reference; Deeper workflow reads; hub)
- Managing a Check-out — Final charges and deposit context tenants review during departure (Glossary — Deposit lifecycle status; section cross-reference; Deeper workflow reads; hub)
- Handling a Late Payment — Step 1 — Online pay-in and schedule visibility when chasing overdue balances; upstream path from Notifications — Payment overdue alerts (section cross-reference; Deeper workflow reads; hub)
- Notifications — Payment overdue alerts — Operator Payments category rows when tenants still owe on Make payment options
- Entering Monthly Utility Bills — Operator bill entry; tenants see overages on Utilities when enabled (section cross-reference; Deeper workflow reads; hub)
- Cancelling a Booking — Tenant-visible schedule and balance changes after void (section cross-reference; Deeper workflow reads; hub)
- Notification triage — Payment alerts tenants reference when messaging outside the portal; payment overdue → Handling a Late Payment — Step 1 (section cross-reference; Deeper workflow reads; hub)
- FAQ — Tenant Portal & Mobile App — Common tenant access and payment questions
- FAQ & Troubleshooting — Broader portal, contract, and payment troubleshooting
Settings and configuration
Settings and configuration bullets pair with the matching topic rows in Tenant Portal section cross-reference above. Full pairing matrix: Concept cross-reference.
- Settings > Preferences — Tenant Portal toggles, mandatory signing fields, utilities/services access
- Settings > Tenant categories — Per-segment portal modules and editable fields
- Settings > General Information — Branding (logo, brand colour)
- Settings > Emails — Onboarding/check-in emails with direct portal links
- Settings > Services — Catalogue tenants browse on Services
- Listings > Access Lockers — Entry codes on portal Home (Entry codes)
- Listings > Payments tab — Property Payments Active gate for online pay-in
Concepts and operator modules
Concepts and operator modules bullets pair with the matching topic rows in Tenant Portal section cross-reference above. Full pairing matrix: Concept cross-reference.
- Payment Allocation — Receipt allocation and credit note follow-up
- Booking Lifecycle — Status model behind portal lease summary cards
- Services Marketplace — Add-on revenue beyond rent
- Automation & AI — WhatsApp/email automation vs portal self-service
- Integrations & Distribution — Channel bookings that receive portal access
- Tenant MCP · Landlord MCP — External AI clients wrapping Core API tools
- Operations module — Where maintenance requests land (Draft ticket, linked cash flows)
- Utilities module — Operator bill upload and Bills Included model behind Utilities
- Finance module — Reconcile portal card and vIBAN receipts
- Inbox module — WhatsApp triage when tenants message outside the portal UI
- Bookings module — Contract Info portal link, payment plan, deposit, and Files tabs
Deeper workflow reads
Workflow reads pair with Common Workflows hub subsection index and Portal setup and tenant-facing workflows above. Each workflow sub-guide reciprocates with [Deeper workflow reads](../concepts/tenant-portal.md#deeper-workflow-reads) anchors on Tenant Portal bullets — hub parity: Concepts hub — Deeper workflow reads. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Processing a New Booking — Assign Category on Tenant Info and confirm portal access after confirmation (section cross-reference; Deeper workflow reads; hub)
- Managing a Check-in — Verify portal links and access codes before key handover (section cross-reference; Deeper workflow reads; hub)
- Managing a Check-out & Deposit Refund — Final charges and deposit context tenants review during departure (section cross-reference; Deeper workflow reads; hub)
- Handling a Late Payment — Step 1 — Online pay-in and schedule visibility when chasing overdue balances (section cross-reference; Deeper workflow reads; hub)
- Entering Monthly Utility Bills — Operator bill entry; tenants see overages on Utilities when enabled (section cross-reference; Deeper workflow reads; hub)
- Cancelling a Booking — Tenant-visible schedule and balance changes after void (section cross-reference; Deeper workflow reads; hub)
- Notification triage — Payment alerts tenants reference when messaging outside the portal (section cross-reference; Deeper workflow reads; hub)
- Onboarding a New Property — Configure portal toggles and tenant categories before the first reservation (section cross-reference; Deeper workflow reads; hub)
Deeper concept reads
Concept reads pair with Concepts hub subsection index and Concept cross-reference. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Payment Allocation — Portal payments and receipts that allocate against Layer 1 schedules (section cross-reference; hub)
- Services Marketplace — Tenant add-on catalogue and purchase flows on Services (section cross-reference; hub)
- Automation & AI — WhatsApp chatbot channel versus portal self-service (section cross-reference; hub)
- Booking Lifecycle — Computed status model behind portal lease summary cards (section cross-reference; hub)
- Tenant MCP — Booking-scoped external clients that wrap the same portal links and payment tools (section cross-reference; hub)
- AI usage API — Tenant portal sessions are not metered on the operator
ai_usageledger (section cross-reference; hub)
Deeper API reads
API reads pair with API Reference hub subsection index and API guide cross-reference. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Creating Bookings — Partner imports that provision portal credentials alongside the schedule (section cross-reference; hub)
- Booking Engine API — White-label checkout that creates bookings tenants open in the portal (section cross-reference; hub)
- Webhooks & Notifications — Optional push when portal onboarding or payment events need partner callbacks (section cross-reference; hub)
- Booking Lifecycle & Validations — Computed status vocabulary partners should not conflate with webhook
eventnames (section cross-reference; hub)
Lockout catch-up after password recovery
Portal verification backlog after sign-in recovery pairs with Resetting a Management User Password — Step 3. Hub parity: Common Workflows — Lockout catch-up after password recovery. Full pairing matrix: tenant-portal-section-cross-reference · Concept cross-reference.
- Common Workflows — Lockout catch-up after password recovery — Hub matrix when portal gates and contract-signing backlog accumulated during lockout
- Getting Started — Lockout catch-up after password recovery — Canonical operational backlog mesh
- Portal setup and tenant-facing workflows — Re-verify segment gates after sign-in recovery
- Processing a New Booking — Step 6 — Upcoming portal visibility after lockout-delayed confirmations
Pending manual receipt approval
Tenant pay-in creates Layer 2 receipts that stay pending until operators Approve — pair with Payment Allocation. Hub parity: Common Workflows — Pending manual receipt approval. Full pairing matrix: tenant-portal-section-cross-reference · Concept cross-reference.
- Common Workflows — Pending manual receipt approval — Hub matrix when portal card/vIBAN receipts still show pending on operator ledgers
- Make payment (Paywall) — Tenant-initiated pay-in that creates Layer 2 receipts
- Payment Allocation — Layer 2 receipts — Why tenants see paid lines before KPIs update
- Finance — Pending manual payments — Operator Approve payments permission gate
- FAQ — Manual receipt still pending — Portal vs operator ledger timing
Reject/revert mistaken receipts
Portal payment disputes pair with Payment Allocation — Correcting mistaken receipts. Hub parity: Common Workflows — Reject/revert mistaken receipts. Full pairing matrix: tenant-portal-section-cross-reference · Concept cross-reference.
- Common Workflows — Reject/revert mistaken receipts — Hub matrix when duplicate portal receipts need operator Reject / Revert
- Payments tab — Tenant-visible balances after operator clears mistaken receipts
- Payment Allocation — Correcting mistaken receipts — credit note when Finance already invoiced portal pay-in
- Bookings — Row actions on in-payment rows — Per-booking reject/revert from Transactions
- Handling a Late Payment — Step 4b — Collections week approval before escalating portal disputes
Portfolio segmentation by tenant category
Portal module gates pair with Portal access by tenant category and Settings > Tenant categories. Hub parity: Common Workflows — Portfolio segmentation by tenant category. Full pairing matrix: tenant-portal-section-cross-reference · Concept cross-reference.
- Common Workflows — Portfolio segmentation by tenant category — Hub matrix when portal modules differ by tenant segment
- Portal access by tenant category — Segment overrides on account-wide portal toggles
- Settings > Tenant categories — Define segments, integration defaults, and portal module rules
- Bookings — Other filters — Validate live stays in one segment before account-wide portal changes
- Tenant MCP — Booking-scoped tools that respect the same segment gates (
get-portal-links,get-payment-info)
Notification row-click navigation
Tenant-facing portal links pair with /notifications row-click when alerts reference the same booking — verify portal gates on Contract Info after row-click before bulk mark-read. Hub parity: Concepts — Notification row-click navigation. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Concepts — Notification row-click navigation — Hub matrix (
notifications-module-row-click-target.png,notifications-row-navigation-flow.mp4) - Common Workflows — Notification row-click navigation — Operator procedure hub
- Notifications module — Notification row-click navigation — Canonical
/notificationsinbox pairing - FAQ — Notification row-click navigation hub — Symptom table
Payment alert to receivables triage
Tenants may pay in the portal while operators still see payment overdue — row-click alerts into booking Transactions before messaging from Communication. Hub parity: Concepts — Payment alert to receivables triage. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Concepts — Payment alert to receivables triage — Hub matrix (
notifications-row-navigate-to-booking-detail.png,notifications-row-navigation-flow.mp4) - Common Workflows — Payment alert to receivables triage — Operator procedure hub
- Handling a Late Payment — Step 1 — Collections follow-through after row-click
- FAQ — Payment alert to receivables triage hub — Symptom table
Confirmation alert triage
Upcoming Booking created alerts often precede portal activation — pair with Processing a New Booking — Step 6 after row-click. Hub parity: Concepts — Confirmation alert triage. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Concepts — Confirmation alert triage — Hub matrix (
notifications-row-navigate-to-booking-detail.png,bookings-detail-transactions-approve-payment-modal.png) - Common Workflows — Confirmation alert triage — Operator procedure hub
- Processing a New Booking — Step 5b / Step 6 — Canonical confirmation gates
- FAQ — Confirmation alert triage hub — Symptom table
Finance debt receivables triage
Portal Payments tab balances and manual receipt uploads feed receivables — triage portfolio Top debtors after tenant uploads clear Pending approval. Hub parity: Concepts — Finance debt receivables triage. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Concepts — Finance debt receivables triage — Hub matrix (
finance-overview-income-chart-debt-aging.png,finance-overview-debt-aging-walkthrough-flow.mp4) - Common Workflows — Finance debt receivables triage — Operator procedure hub
- Finance module — Finance debt receivables triage — Debt Aging canonical surface
- FAQ — Finance debt receivables triage hub — Symptom table
Finance Income status drill-down
Tenant-paid receipts shift Income → Paid segments only after operator Approve on booking Transactions — portal uploads alone do not update status segments. Hub parity: Concepts — Finance Income status drill-down. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Concepts — Finance Income status drill-down — Hub matrix (
finance-overview-income-status-in-debt-modal.png,finance-overview-income-drill-down-flow.mp4) - Common Workflows — Finance Income status drill-down — Operator procedure hub
- Finance module — Income status drill-down — Canonical Finance → Overview surface
- FAQ — Finance Income status drill-down hub — Symptom table
Cash flow forecast drill-down
Approved portal manual receipts appear on Cash flow forecast collections bars — distinct from Income status segments and scheduled Layer 1 lines. Hub parity: Concepts — Cash flow forecast drill-down. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Concepts — Cash flow forecast drill-down — Hub matrix (
finance-overview-cash-flow-all-payments-modal.png,finance-overview-cash-flow-day-view.png,finance-overview-cash-flow-drill-down-flow.mp4) - Common Workflows — Cash flow forecast drill-down — Operator procedure hub
- Finance module — Cash flow forecast drill-down — Canonical Finance → Overview surface
- FAQ — Cash flow forecast drill-down hub — Symptom table
Key glossary terms
Glossary rows pair with Glossary cluster cross-reference and concept pages that cite the same terms. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
-
FAQ — Tenant Portal & Mobile App — Access links, payments, contract signing, and mobile More nav
-
Settings > Tenant categories — Portal modules, editable fields, and integration default segment
-
Mandatory for contract signing — Asterisk gates on the signature wizard Your Details step
-
FAQ — Tenant contract signing blocked — No PDF yet, mandatory Your Details gates, category locks, or Lease purpose; portal signing vs paper upload on Contract Info
-
Credit note (payment reject/revert) — Accounting follow-up when operators reject portal card or vIBAN receipts that Finance already invoiced
-
Deposit dispute — Freeze deposit refunds when tenants contest deductions visible on Home balance cards
-
Glossary — End-of-Booking cost split — Charge Time → End of Booking splits daily overage across every occupied unit; still-staying roommates stay in the denominator (#2111)
-
Glossary — Change history — Operator-initiated edits on Listings setup and Bookings Changelog; create-time defaults excluded (#2093)
-
FAQ — Booking Changelog scope — Operator-initiated edits only; create-time defaults excluded (#2093)
-
Glossary — Archived booking ledger visibility — Delete Booking hides manual/provider_platform rows on Finance → Transactions; vIBAN and credit card stay visible (#1897)
-
Bookings — Provider platform payment — Non-rejected provider platform in-payment blocks Delete Booking until Reject or assign (#2076)
-
FAQ — Delete Booking on integration reservation — Clear pending provider platform in-payment with Reject or assign before soft-archive (#2076)
-
Listings — Property edit sidebar pills — Setup / Full integration / Photos pills on property and unit edit sidebars; replaced the old Go to details shortcut (#2082)
-
Glossary — Finance tenant category cache refresh — Recategorizing a tenant on Tenants → Tenant Info force-refreshes Finance caches so Contract Values, Overview, and Deposits filters match within seconds (#2088)
-
FAQ — Finance tenant category filter parity — Finance Other filters drawer lists segments on cached bookings only; mirror Bookings / Tenants when a segment is missing
-
FAQ — Assign tenant category for direct booking — Add booking has no category field; assign on Tenants → Tenant Info or + Create New → Tenant before contract mail
-
Glossary — SIMAR water contract ID — SIMAR (Loures e Odivelas) water bills use Cód. Local in Connections — not Nº de Contador; leading zeros stripped (#2110)
-
FAQ — SIMAR water bill property match — Cód. Local in Connections — not Nº de Contador; strip leading zeros (#2110)
-
Glossary — Per-booking maintenance ticket opt-out — Add booking checkboxes skip automatic CI/CO tickets for one reservation only; property rule unchanged (#1140)
-
FAQ — Cancel Booking vs Delete Booking — Cancel for real stays with settlement; Delete soft-archives mistaken/test rows (#1897 / #2076)
-
Glossary — Archived property — Archive retires a building to Listings → Archived without deleting bookings; distinct from Delete Booking (reservation soft-archive) — Listings — Archived properties
-
FAQ — Portfolio retirement decisions — Archive property (building) vs Cancel booking vs Delete Booking (reservation soft-archive) — three-way decision table
-
Deposit lifecycle status —
depositStatuspill states tenants see mirrored on portal Payments and operator Deposit tabs -
Finance — Deposit status filter — Other filters → Deposit status multi-select on Bookings and Finance (#2090)
-
Finance — Deposit lifecycle status cards — Deposit lifecycle status row on Finance → Deposits; click Partial paid for collection shortfalls (#2091)
-
FAQ — Partly collected security deposit — Paid above zero but below Amount on booking Deposit; Partial paid card on Finance → Deposits (#2090 / #2091)
-
Operations — Tickets toolbar search — Paste the full sequential ticket ID (for example
S259,T27) in toolbar Search (#2074) -
FAQ — Find a ticket by its ID — Paste the full sequential ticket ID (for example
S259,T27) in Operations → Tickets toolbar Search (#2074) -
FAQ — Skip automatic check-in/out tickets for one booking — Turn off Use unit contract rents and other contract details on Add booking to reveal CI/CO ticket checkboxes (#1140)
-
FAQ — Manual payments after Delete Booking — Delete Booking hides manual/provider_platform rows on Finance → Transactions; vIBAN and credit card stay visible (#1897)
-
Glossary — Directory list load failures — First-fetch directory failures show Retry / Try again; distinct from filter-empty states and booking-sidebar tab errors
-
Glossary — Vacant Unit Preference — Include manual blocks counts operator holds as free on Dashboard / Sales vacancy surfaces (#1427)
-
FAQ — Communication or Tickets load failure — Tab-scoped Refresh (Communication) or Retry (Tickets); other booking sidebar tabs stay usable
-
Operations — Property-level ticket search — Property-name matches share the top relevance tier with unit hits; building-scoped rows float first under an active Property filter (#2089)
-
Same-day turnover — Shared-unit arrival/departure overlap when portal Requests spike during turnover week
-
FAQ — Archive a property — Edit property sidebar Archive / Unarchive on Listings; building-level — not Delete Booking or Cancel booking
-
FAQ — Same-day turnovers — Check-out + check-in on one unit same day: Operations → Check-in & Check-out, Timeline / Multicalendar, turnover tickets
-
FAQ — AI token usage — Poll GET /ai-usage / GET /ai-usage/summary with management JWT;
landlord_chat+utility_bill_extraction; no management UI screen yet -
FAQ — Automatic check-in email — Trigger matrix, 15-day cutoff, paper upload vs portal signing, Nuki-only toggle, Send / Resend on Contract Info
-
FAQ — WhatsApp and email per booking — Bookings → Communication tab when tenant chatbot is enabled; Inbox for portfolio-wide triage
-
FAQ — Deposit missing on Finance Deposits — Default ~3 months date range; clear or widen before triaging older move-outs or dispute row actions
-
FAQ — Pending manual in-payment on /notifications — Alert persists until Approve payments clears Finance or booking Transactions
-
FAQ — Uncovered Debt KPI — Finance Total Debt minus deposit offsets; pair with Debt Aging and In debt drill-down
-
FAQ — Dashboard Total Debt subtitle — Post-login Total Debt card headline vs >15 days subtitle; ongoing bookings only
-
FAQ — Analytics (KPI workspace) — Portfolio KPIs vs Sales/Listings/Dashboard; load-failure Try again
-
Invoiced floor (rent) — Rent edits blocked below exported invoice totals — portal Contract Values still follow Finance export rules
-
FAQ — Bulk Hostkit invoicing slow — Vivin paces Hostkit API calls and retries HTTP 429 during bulk Issue allocation / Invoice selected; refresh Transactions before re-issuing
-
FAQ — Bulk Hostkit invoicing hub — Symptom table + per-guide mesh
-
FAQ — Lower rent below invoiced — Change monthly rent clamps and Contract Values → Edit amount blocks net below exported invoice totals; use credit notes in accounting when you truly need a reduction
-
Glossary — Fixed invoice date — Account-wide Invoice date before bulk Issue allocation / Invoice selected; amber banner on Finance → Transactions until you turn Use today as invoice date back on
-
FAQ — Month-end invoicing (fixed date) hub — Symptom table + toggle reset after batch
-
FAQ — Reject or revert an incoming payment — Reject pending rows or Revert confirmed ones; Finance → Transactions uses Reject selected bulk-only; modals warn about credit notes when Finance already invoiced
-
FAQ — Finance Income status drill-down hub — Symptom table for segment vs Debt Aging
-
FAQ — Finance Income status drill-down — Overview Income chart (Paid / Scheduled / In debt); click a segment for month-scoped payment-line modal; Debt Aging for booking-level receivables
-
FAQ — Cash flow forecast drill-down hub — Symptom table for collections vs Income / Dashboard
-
FAQ — Cash flow forecast drill-down — Month / Day bar-click habit
-
FAQ — Permission denied toast — Red You do not have permission to perform this action. toast when RBAC blocks a save; fix in Users → Role Permissions
-
FAQ — Phone shows Operations only — Mobile phone user agent locks operators with Operations access to
/operations; iPads and narrow desktop browsers keep the full module list -
FAQ — Notification row-click navigation — On
/notifications, row click marks unread then openslink,bookingId,tenantId,listingId, orpropertyId(first match); Dashboard bell General rows stay in-panel unlesslinkis set -
FAQ — Bookings that owe money — Top debtors and overdue buckets on Finance → Overview; Total Debt KPI is not a table
-
FAQ — Fixed rent on variable unit — Variable listing + equal rent every contract month → booking stores fixed headline Monthly rent; payment plan unchanged
Module documentation hubs
Module hubs pair with Modules — Module cross-reference. Full pairing matrix: Tenant Portal section cross-reference · Concept cross-reference.
- Bookings module — Reservation workspace that feeds portal schedule, contract, files, and deposit context (hub)
- Finance module — Reconcile portal payments, vIBAN receipts, and Contract Values (hub)
- Operations module — Where portal Requests land as maintenance tickets (hub)
- Utilities module — Operator bill upload behind portal Utilities when enabled (hub)
- Tenants module — Operator-side profiles and tenant category assignment (hub)
- Inbox module — WhatsApp triage when tenants message outside the portal UI (hub)
- Account Settings — Workspace-wide portal toggles, branding, emails, and services catalogue (hub)