Emails
Use the Emails tab in Account Settings to configure the automated emails Vivin sends to tenants throughout the booking lifecycle. Every email can be customized with your own content and personalized using dynamic variables.
In the product, this tab lives under Settings → System → Emails and opens at /settings/communications.
Complete Getting Started — Recommended Setup Sequence step 11 (this tab — lifecycle emails and Communication Rules) after step 10 Tenant categories and before step 12 Integrations — full tab map: Recommended setup order. Finish steps 13–15 in Listings, Bookings, and Tenants, then Onboarding a New Property — Step 7. Guided steps 4–12: Onboarding a New Property. Lockout catch-up: Getting Started. Workflow pairing after go-live: Account Settings — Setup sequence after go-live.
Customize Lifecycle Email Templates first, then configure Communication Rules (automated reminders) for payment and check-in triggers. Variable reference: Dynamic variables for emails. 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: Emails section cross-reference · Account Settings — Tab cross-reference.
Pair Communication Rules with Preferences account-wide alert masters (in-app payment alerts are distinct from tenant-facing rules) and ChatBot WhatsApp IF/THEN behaviour. Contrast scheduled tenant email/SMS with landlord AI Chat — internal landlord_chat spend is on AI usage API, not Communication Rules. General Information contact details appear in lifecycle templates. Section-to-doc pairing: Emails section cross-reference. Hub tab matrix: Account Settings — Tab cross-reference.
The page is split into two sub-tabs (same URL):
| Sub-tab | Purpose |
|---|---|
| Communication Rules | Rule-based automated emails and SMS (payment reminders, check-in nudges, debt thresholds, Send now, and more). |
| Booking lifecycle emails | Account-wide defaults for Onboarding, Check-in, and Check-out (triggers + rich Email body text blocks). |
New Rule opens the communication-rule editor drawer. Inside that drawer, use Variables (footer) to open the Email body variables catalogue (same tokens as in the table below).


Lifecycle Email Templates
Lifecycle triggers pair with Bookings — Check-in & Check-out emails manual overrides and Listings — Access Lockers codes appended to check-in mail. Portal signing gates: Tenant Portal. Full pairing matrix: Emails section cross-reference.
These are the three main emails sent to tenants at specific points in their tenancy:
Onboarding Email
Sent when a booking is confirmed (trigger configurable). This is the tenant's welcome email — include information about your company, the property rules, and what to expect before move-in.
- Subject: The email subject line
- Email body text: Rich text appended to the system template for that lifecycle email (onboarding, check-in, or check-out). Use single-brace variables such as
{TenantName}and{PropertyAddress}— see Dynamic variables. Click Variables above the editor to open the in-app catalogue for that surface. - Trigger (onboarding): Active — send based on delay (with Delay after booking, e.g. no delay, 15 minutes, 1 hour, 1 day) or No trigger — disabled.
- Trigger (check-in): Options include No trigger, After paid, After contract signed, After paid & contract signed, X Days before check-in (with a day count), and combined options such as After paid & contract signed & 1 Week before. Optional Only for Nuki access limits the check-in email to bookings with Nuki smart-lock access.
- Trigger (check-out): No trigger or X Days before checkout (with a day count).
Check-in Email
Sent according to the check-in trigger you choose on the Booking lifecycle emails sub-tab. Include access codes, check-in instructions, local tips, and emergency contacts. Access codes configured in a property's Access Lockers tab are automatically appended to this email.
When lifecycle check-in emails send automatically
Vivin evaluates the check-in trigger on the Booking lifecycle emails sub-tab whenever qualifying booking state changes, then sends at most one check-in email per booking (checkInEmailSentAt is set on success). Automatic evaluation happens in these cases:
| Trigger (examples) | When Vivin re-evaluates | Send conditions (summary) |
|---|---|---|
| After paid | Move-in / confirmation payments are recorded | All move-in requirements paid; no prior check-in email |
| After contract signed | Tenant completes digital signature in the Tenant Portal (evaluation runs immediately after the signature is saved) | signedContractPath present; no prior check-in email |
| After paid & contract signed | Payment recorded or portal contract signed | Paid and signed; no prior check-in email |
| After paid & contract signed & 1 Week before | Payment, portal signing, or daily cron | Paid and signed and check-in date is within 7 days (today through seven days ahead); no prior check-in email |
| X Days before check-in | Daily cron on the matching calendar date | Booking still Upcoming on that date; no prior check-in email |
15-day cutoff — No automatic lifecycle check-in email is sent when the booking’s check-in date is more than 15 days in the past (canceled bookings are skipped entirely). The daily cron for After paid & contract signed & 1 Week before scans check-ins from 15 days ago through 7 days ahead so late contract signatures or payments still catch up inside that window.
Operator upload vs portal signing — Uploading a signed PDF on Contract Info marks the booking contract-signed for reporting, but it does not run the lifecycle trigger evaluation. Only a portal digital signature sets signedContractPath for After contract signed triggers — see Tenant Portal — Digital contract signing. If the tenant signs on paper, use Send Check-in email / Resend Check-in email on Contract Info → Check-in & Check-out after upload when move-in requirements are met — illustrated controls: bookings-detail-contract-check-in-out-emails.png; see FAQ — Automatic check-in email and Bookings — Check-in & Check-out emails. When tenants cannot complete portal signing (no PDF, mandatory-field gates, category locks), start with FAQ — Tenant contract signing blocked and Processing a New Booking — Step 4.
Nuki-only toggle — When Only for Nuki access is on, sendCheckInEmail still requires at least one Nuki access point on the property or unit before the message goes out (access codes must be generatable).
Manual override — Send Check-in email / Resend Check-in email on Contract Info → Check-in & Check-out always queues the template regardless of trigger state (subject to Nuki toggle and access-code generation). Hover Resend for Last sent when checkInEmailSentAt is set. When automatic send did not fire, start with FAQ — automatic check-in email (bookings-detail-contract-check-in-out-emails.png).
Check-out Email
Sent before the tenant's departure according to the check-out trigger (typically X Days before checkout). Include check-out instructions, key return, inspection, and deposit refund timelines.
Individual properties can add custom content that is appended to these default templates. See Email Customization Tab for property-level email customization.
Dynamic variables for emails
Single-brace tokens match Contract templates — contract-only tokens like {%TenantSignature%} do not apply here. Open the in-app Variables catalogue from a Communication Rule drawer or from Booking lifecycle emails (and from property-level Email Customization). Full pairing matrix: Emails section cross-reference.
Use the same single-brace placeholder style as Contract templates: wrap the token name in { and }, for example {TenantName} and {CheckInDate}. Vivin replaces them with booking data when the message is sent.
| Surface | How to open the catalogue |
|---|---|
| Communication Rules | New Rule or Edit on a row → Variables in the drawer footer |
| Booking lifecycle emails | Above each Email body text editor (onboarding, check-in, check-out) → Variables |
| Property email customization | Same Variables control beside the property-level body editor on Listings — Email Customization |
The Email body variables modal lists every token that surface supports. The modal intro copy differs by surface (#1208):
| Surface | Modal teaches |
|---|---|
| Communication Rules | Placeholders work in subject and body; includes rules-only tokens such as {notification_title} |
| Booking lifecycle emails | Body text only — subject lines are fixed per template; unknown tokens are left verbatim in the sent email so you can spot typos |
| Property email customization | Same body-only catalogue as lifecycle emails |
Contract-only tokens (for example {%TenantSignature%}) apply to .docx contracts, not tenant emails.



Lifecycle Variables modal capture re-verified 2026-07-27 10:05 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-settings-emails-lifecycle-variables-modal-screenshot.ts — white panel crop; intro copy teaches body-only substitution and verbatim unknown tokens).
Tokens such as show_tenant_portal_section / show_viban_section may still appear on the server render context for category module rules, but they are not usable inside the rich-text Email body text you edit on this tab (or in Communication Rules). Vivin does not run a Handlebars/{{#if …}} step on operator-authored copy — wrapping blocks that way can corrupt the body. Use the Variables catalogue above, and control portal/vIBAN visibility with Tenant categories module rules instead (#1208).
Commonly used variables in emails:
| Variable | Output | Typical use |
|---|---|---|
{TenantName} | Tenant's full name | Greeting (Dear {TenantName}) |
{TenantEmail} | Tenant email | Contact block |
{PropertyAddress} | Full property address | Check-in directions |
{ListingInternalName} | Unit/listing internal name | Identifying the unit |
{StartDate} / {EndDate} | Contract start / end | Tenancy period |
{CheckInDate} / {CheckOutDate} | Physical move-in / move-out dates | Arrival and departure |
{CheckInTime} / {CheckOutTime} | Check-in / check-out times | Access windows |
{RentValue} | Monthly rent | Payment context |
{SecurityDeposit} | Security deposit | Onboarding or check-in |
{Debt} / {TotalValuePending} | Outstanding debt / pending total | Payment reminders |
{vIBAN} | Tenant virtual IBAN | Bank transfer instructions |
{tenant_portal_url} | Tenant portal link | Self-service |
{contact_email} / {contact_phone} | Account contact details | Support footer |
{building_access_point_code} / {property_access_point_code} / {listing_access_point_code} | Nuki keypad or manual access codes | Check-in instructions (blank when not configured) |
{BillsIncludedMaxValue} | Bills-included cap per month | Onboarding or check-in |
{LocalRentCap} / {RentCapDifference} | Dual-pricing cap and services slice | When dual pricing applies |
{RentJan}–{RentDec} | Per-month rent amounts | Variable-rent bookings; same tokens as Contract templates |
Email-only branding tokens ({image_url}, {landlord_brand_color}, {contact_name}, {tenant_services_url}, {paywall_url}, and others) are listed in the Variables modal. For contract PDF tokens shared with emails, see Contract > Dynamic Variables.
Communication Rules (automated reminders)
Communication Rules pair with ChatBot IF/THEN behaviour on WhatsApp and Preferences — In-app notifications for operator alert masters. communication.send_now: Send now permission. Full pairing matrix: Emails section cross-reference.
On the Communication Rules sub-tab at /settings/communications (see also Glossary — Communication Rules), each row is a scheduled message rule with a human-readable trigger sentence (timing, properties, bookings, debt/credit filters, contract-signed state, and more). Filter the list with Enabled, Disabled, and Now (immediate-send rules; see Send now permission below). The toolbar includes a calendar icon to open the Communication schedule modal (all scheduled and sent messages, or scoped to one rule from that rule's row). Row actions typically include Edit, Test (send a test to yourself), Send now / Schedule (when permitted), and enable/disable.
When the rules list fails to load
If the rules API request fails (network blip, permission mismatch, or a temporary server error), the tab shows Couldn't load communication rules with short copy that your saved rules are unchanged and a Try again link that refetches the list. This is not the same as having zero rules — when the fetch succeeds but the account has no rules yet, you see No rules found and Create your first rule to get started. Do not create duplicate rules because the error state looked like an empty account; use Try again or refresh the page first.
Communication schedule (calendar)
Communication schedule pairs with Glossary — Communication schedule, row-click into Booking detail from queued messages, and Handling a Late Payment — Step 2 (sent vs scheduled overdue rules). Full pairing matrix: Emails section cross-reference.
Click the calendar icon in the Communication Rules toolbar to open All schedules, or open the schedule from a single rule's row to filter to that rule only. See Glossary — Communication schedule. The modal lists every queued and sent message with:
- Recipient — tenant name and email
- Subject and rule context (when filtered)
- Status — for example pending, scheduled, sent, failed, or cancelled
- Scheduled and sent timestamps
Use the search field to narrow by recipient, subject, or unit internal name. Export downloads the visible list as CSV or Excel. Click a row to open that booking in the Booking detail sidebar without leaving Settings.

Send now permission
Send now permission pairs with communication.send_now in Users and roles, the Now filter tab, and Firing a Send now rule (recipient preview). Contrast scheduled Due Date / Financial Balance rules in Trigger configuration. Full pairing matrix: Emails section cross-reference.
The Now filter tab and any rule that sends immediately (Send now / ScheduledMessageTrigger.Now) require the communication.send_now permission on the user's role. Without it, the Now tab appears disabled with an explanation, and immediate-send actions are hidden. Grant this only to roles that should blast or manually fire ad hoc tenant messages. Configure it in Users and roles via the Role Permissions matrix (same place as other Settings capabilities).
When your role includes communication.send_now, the Communication Rules toolbar shows Enabled, Disabled, and Now filter chips. Now lists only immediate-send rules (row actions include Send now where applicable):

Firing a Send now rule
Send now blast pairs with recipient preview counts, Audience filters, and Notification triage when tenants reply on blast threads. Upstream: Send now permission. Use Test on the row before production blasts. Full pairing matrix: Emails section cross-reference.
On an inactive Now rule, use the row play control (Send now to all matching recipients) to open a recipient preview for every tenant who matches the rule’s Audience filters at that moment (properties, booking status, debt thresholds, booking tags, smart-lock scope, and so on). The product does not send until you confirm from that preview — confirming activates the rule and queues the blast. On an active Now rule, the same play control deactivates the rule (no preview):
- Open Communication Rules and select the Now filter.
- On the inactive rule you want to blast, click the play icon on the right (requires
communication.send_now; active Now rules use play to turn the rule off instead). - In Send now: <rule name>, review the summary counts and the recipient table:
- Subtitle — how many bookings match right now (for example 23 bookings match this rule right now).
- Deliverable — how many have a valid email and will receive the blast (green count).
- Without a valid email — bookings listed but skipped (red count when non-zero).
- Search — filter the table by recipient name, email, or unit internal name.
- Table columns — Recipient (name + email), Unit, Booking dates, Status (booking status badge), and Email (valid checkmark or No valid email badge).
- Click Send now to N recipients (or Send now when the count is not shown) to activate the rule and queue the blast, or Cancel to close without sending. The confirm button stays disabled while the preview loads, when the API errors, or when deliverable is zero.
- A success toast confirms the request was submitted; failures show an error toast and leave the rule unchanged.
If no bookings match the rule’s filters, the preview shows No matching recipients instead of a table. If the preview API fails, use Cancel and try again — your saved rule is unchanged.

Send now can reach many tenants at once. Use the preview table to spot unexpected units or missing emails, review the rule’s Audience in Edit when counts look wrong, and use Test on the row to send only to yourself when you are validating copy.
Rules can send email and, where configured, SMS bodies. Use New Rule to open the drawer: set Template name, Subject, optional CC / BCC, and Body, then configure Trigger (event, offset, send time, balance filters) and Audience (properties, booking status, contract signed, specific bookings, optional booking tags, and optional smart-lock scoping). Match scope and balance conditions so reminders only reach the right tenants.
Trigger configuration (rule drawer)
Trigger events pair with Bookings — Check-in & Check-out emails lifecycle mail (distinct evaluation model), Handling a Late Payment — Step 2 (overdue Due Date / Financial Balance rules), and Glossary — Communication Rules. Full pairing matrix: Emails section cross-reference.
Inside New Rule or Edit, the Rule settings step includes a Trigger card. Event is required; additional fields appear or hide based on the event you pick (the product resets sensible defaults when you change events — for example Send Now clears day offsets).
| Event (English UI) | Typical use | Extra trigger fields |
|---|---|---|
| Check-in | Welcome or access instructions relative to move-in | Offset direction (Before / After / On the day), Days offset, Send at Hour |
| Check-out | Departure reminders | Same offset + hour pattern as check-in |
| Booking Confirmation | Message right after a booking is confirmed | Send at Hour only (no day offset row) |
| Due Date | Rent or charge reminders tied to scheduled due dates | Offset + hour, plus Balance (financial) and Threshold (€) (see below) |
| Financial Balance | Debt nudges when the booking balance is negative | Minimum debt (€) — rule runs when absolute debt is at least this amount; Send at Hour |
| Penalty Fee | Follow-up after a penalty line exists | Send at Hour; Next payment (balance) filter is hidden for this event |
| Send Now | Immediate blast (requires communication.send_now; see Send now permission) | No schedule fields — audience filters alone define who receives the blast when you confirm from the preview |
Offset direction and Days offset apply only to Check-in, Check-out, and Due Date. Choose On the day to fire on the event date itself (offset value locks to 0). Send at Hour is available on every scheduled event except Send Now and Booking Confirmation (confirmation uses its own timing model).
Due Date adds a second balance row:
| Field | Purpose |
|---|---|
| Balance (financial) | Ignore (all), Negative balance (in debt), or Positive balance (credit) — narrows which bookings qualify relative to the payment-plan balance on the due date |
| Threshold (€) | Minimum balance magnitude when the balance filter is not Ignore (disabled when set to Ignore) |
Most other events (except Check-out, Booking Confirmation, and Penalty Fee) also expose Next payment (balance) with the same Ignore / Negative / Positive options — use it when the rule should only match tenants whose upcoming scheduled line is in debt or in credit.
Row badges in the rules list summarize the saved trigger (timing + filters). Open Edit to change event, offsets, or balance gates without recreating the rule.

HTML vs rich-text body
Beside Template name, the HTML toggle switches how you author the message body:
| HTML | Editor | Typical use |
|---|---|---|
| Off (default) | Rich-text editor with formatting toolbar | Most tenant emails — paragraphs, links, and lists with {VariableName} placeholders |
| On | Plain HTML textarea (monospace) | Branded layouts or markup you paste from an external template; placeholders still use {VariableName} syntax |
When HTML is on, CC and BCC stay available; the product sends the body as HTML rather than the rich-text HTML the visual editor would generate. The body field switches to a monospace textarea for raw HTML. Test with Test on the rule row before enabling a rule for production traffic.

Audience: Properties (portfolio scope)
Audience scoping pairs with Bookings — Other filters, Finance — Tenant category filter, and Portfolio KPI review — Step 6 before account-wide rule changes. Send now preview: Firing a Send now rule. Full pairing matrix: Emails section cross-reference.
At the top of the rule drawer Audience card, Properties scopes which buildings the rule can match. The control is a server-paged multi-select (same picker pattern as Utilities connections and Sales Pricing property filters):
| Selection state | Behaviour |
|---|---|
| Empty (placeholder All properties) | Global rule — any property on the account can match, subject to the booking-status, balance, tag, and smart-lock filters below. |
| One or more property chips | Rule runs only for bookings tied to at least one of the selected properties (OR semantics across buildings). |
Open the picker to search by internal property code or name; scroll the dropdown to load more rows. Selected properties appear as removable chips under the trigger. Clearing every chip returns the rule to All properties. With an active query, internalName matches rank above address-only hits before pagination — see Glossary — Picker search ranking.


Property picker search-ranking capture refreshed 2026-06-17 18:05 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_PROPERTY_SEARCH=António npx tsx tools/capture-communication-rule-property-picker-search-rank-screenshot.ts).
Audience: Nuki, Smart locks, booking tags, and tenant categories
Further down the same Audience card (below Properties and the booking-level filters):
| Control | Purpose |
|---|---|
| Require Nuki tenant ID | When enabled, only bookings whose tenant has a Nuki account user id match the rule (subtitle in the UI explains this). Use for check-in or access messages that assume Nuki-generated codes. |
| Smart locks | When your account has Nuki devices connected (Integrations), a filter mode dropdown appears above the lock picker: No filter, Include only, or Exclude, plus a searchable lock multi-select when a scoped mode is active. Selected locks appear as removable chips. No filter ignores lock ids even if the rule previously stored them. Validation blocks save when Include only or Exclude is selected but no locks are chosen. |
| Booking tags | When your account defines tags under Categories → Bookings, the same No filter / Include only / Exclude pattern applies to booking labels. Pick one or more tags when scoped — a booking matches Include only when it carries at least one selected tag (OR across selected tags), and Exclude when it carries none of the selected tags (for example exclude VIP to skip premium tenants on a mass reminder). The field is hidden until at least one booking tag exists on the account or the rule already stores tag filters. |
| Tenant categories | When Tenant categories exist on the account, the same No filter / Include only / Exclude pattern applies to the tenant’s assigned category on the booking. Pick one or more categories when scoped — Include only matches when the tenant’s category is at least one of the selected segments. Hidden until categories exist or the rule already stores category filters. If categories fail to load while you edit, the drawer shows a short unavailable notice instead of the picker. Before you save a scoped rule, cross-check audience size with the same segment on Bookings — Other filters, Finance — Tenant category filter, or Tenants — Tenant category filter — see Portfolio KPI review — Step 6. |
Shared filter modes — Smart locks, Booking tags, and Tenant categories use one explanation at the bottom of the Audience card (shown when at least one of those three sections is visible):
- No filter — the field does not restrict the audience.
- Include only — the booking must carry at least one of the values you selected.
- Exclude — the booking must carry none of the values you selected.
All audience filters on the card still combine with AND against the rest of the rule (properties, booking status, balance filters, and so on).
The Smart locks block appears when Nuki locks exist on the account or when an existing rule already stores lock ids or a non-No filter mode. It is independent of the lifecycle Only for Nuki access toggle on the Booking lifecycle emails sub-tab — that toggle scopes the default check-in template; Smart locks scopes individual Communication Rules.






Booking tags Include only and Exclude captures refreshed 2026-06-16 20:00 UTC (tools/capture-communication-rule-booking-tags-include-exclude-screenshot.ts, tools/capture-communication-rule-booking-tags-exclude-screenshot.ts). Tenant categories Include only capture re-verified 2026-06-16 17:15 UTC (tools/capture-communication-rule-tenant-categories-screenshot.ts). Legacy tag multi-select capture re-verified 2026-06-16 16:05 UTC (tools/capture-communication-rule-booking-tags-screenshot.ts).
Common use cases
- Payment Due Reminder — send a reminder email 3 days before a payment is due
- Overdue Payment Notice — send a notification the day after a payment becomes overdue
- Check-in Reminder — send a reminder 7 days before move-in with final arrival details
- Contract Expiry Notice — send an alert 60 days before a contract ends
Configuring an Automated Communication
For each automated communication, you configure:
| Field | Description |
|---|---|
| Name | An internal label for this rule (not shown to tenants) |
| Trigger Event | The event that starts the countdown (e.g., "Payment Due Date," "Check-in Date," "Booking End Date") |
| Timing | How many days before or after the trigger event this email should be sent |
| Condition | Additional conditions that must be true (e.g., "Only if payment is still unpaid," "Only if contract is signed") |
| Subject and Body | Email (and optional SMS/HTML) content, with {VariableName} placeholders |
Set up at least two payment-related automations: a pre-due reminder (e.g., 3 days before) and a post-due notice (e.g., 1 day after). Many late payments are simply oversight — a timely reminder before the due date can prevent them entirely.
Best Practices for Email Content
Copy and tone here pair with General Information contact blocks, Tenant categories (Communications / Email per segment), and FAQ — automatic check-in email when lifecycle mail misfires. Full pairing matrix: Emails section cross-reference.
Keep emails concise and action-oriented. Tenants are more likely to read and act on short, clear emails. Put the most important information (dates, amounts, action required) at the top.
Use the tenant's name. Start with Dear {TenantName} (or a short salutation you prefer) rather than generic greetings. Personalized emails have higher engagement and feel more professional.
Include contact information. Every email should include a way for the tenant to reach your team if they have questions. Reference the contact email and phone number configured in General Information.
Be specific in check-in emails. Include the check-in time, exact address, access instructions, and who to contact if there are problems. The access codes from the Access Lockers tab are appended automatically, but additional context (e.g., "Use the side entrance on Rua da Prata") helps tenants arrive smoothly.
Test with a real booking. After customizing your templates, create a test booking with your own email address to verify the email content, variable replacement, and formatting look correct before going live.
Key Rules
Summary rules here pair with Listings — Access Lockers (automatic check-in codes), Bookings — Communication tab (WhatsApp audit distinct from Communication Rules), and Payment Allocation — Reject/revert when reminder disputes involve invoiced receipts. Full pairing matrix: Emails section cross-reference.
-
Lifecycle emails use account-wide templates. All tenants receive the same onboarding, check-in, and check-out email templates. Property-level customization is additive — custom property text is appended to the default template, not a replacement.
-
Dynamic variables are replaced at send time. Variables are populated with the actual booking data at the moment the email is sent. If booking details change after the email is sent, the tenant will have the old values.
-
Automated reminders require conditions to be useful. A payment reminder without the "Only if payment is still unpaid" condition will be sent to every tenant — including those who have already paid. Always set appropriate conditions.
-
Access codes are appended automatically. You do not need to include access code variables in your check-in email template — any codes configured in the property's Access Lockers tab are automatically added to the check-in email.
Emails section cross-reference
Use this table when one Emails topic naturally leads into another Account Settings tab, operator module, workflow, or concept — each row links to the docs you should read before or after configuring tenant communications.
| Emails topic / section | Pair with these docs |
| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Lifecycle Email Templates | Listings — Email Customization, Managing a Check-in |
| Dynamic variables for emails | Contract templates, General Information |
| Communication Rules (automated reminders) | Preferences — In-app notifications, Handling a Late Payment — Step 1, Notifications — Payment overdue alerts, Audience — tenant categories |
| Audience — Nuki, Smart locks, booking tags, and tenant categories | Tenant categories, Bookings — Other filters, Finance — Tenant category filter, Tenants — Tenant category filter, Portfolio KPI review — Step 6 |
| Best Practices for Email Content | FAQ — automatic check-in email, Tenant categories (segment Communications / Email toggle) |
| Key Rules | Listings — Access Lockers, Bookings — Communication tab |
| Lockout catch-up after password recovery | Resetting a Management User Password, Getting Started — Lockout catch-up after password recovery, Common Workflows — Lockout catch-up |
| Pending manual receipt approval | Communication Rules (automated reminders), Users and roles — Role permissions (Approve payments), Finance — Pending manual payments |
| Reject/revert mistaken receipts | Payment Allocation — Correcting mistaken receipts, Finance — Row actions on in-payment rows, Handling a Late Payment — Step 1 |
| Notification row-click navigation | /notifications row-click vs Communication Rules email | Account Settings — Notification row-click navigation, Common Workflows — Notification row-click navigation, Notifications module — Notification row-click navigation |
| Payment alert to receivables triage | payment overdue with parallel email reminders | Account Settings — Payment alert to receivables triage, Common Workflows — Payment alert to receivables triage, Handling a Late Payment — Step 1 |
| Confirmation alert triage | Upcoming alerts after confirmation email rules | Account Settings — Confirmation alert triage, Common Workflows — Confirmation alert triage, Processing a New Booking — Step 5b |
| Finance debt receivables triage | Portfolio Top debtors / Debt Aging after settings on this tab | Account Settings — Finance debt receivables triage, Common Workflows — Finance debt receivables triage, Finance module — Finance debt receivables triage |
| Finance Income status drill-down | Income → In debt vs Debt Aging after settings on this tab | Account Settings — Finance Income status drill-down, Common Workflows — Finance Income status drill-down, FAQ — Finance Income status drill-down hub |
| Cash flow forecast drill-down | Cash flow forecast month bars vs Income segments | Account Settings — Cash flow forecast drill-down, Common Workflows — Cash flow forecast drill-down, FAQ — Cash flow forecast drill-down hub |
| Portfolio segmentation by tenant category | Audience — tenant categories, Common Workflows — Portfolio segmentation by tenant category, Bookings — Other filters, Finance — Tenant category filter |
Related
Related below links this Account Settings tab to modules, workflows, concepts, and escalation paths. Pair Documentation map & escalation with Account Settings hub — Documentation map & escalation; pair Upstream & downstream workflows with Account Settings — Tab cross-reference. Topic-to-section pairing in sections above: Emails section cross-reference. Full hub matrix: Account Settings — Section cross-reference.
Documentation map & escalation
Documentation-map bullets pair with Introduction — Section cross-reference and FAQ — Section cross-reference. Hub parity: Account Settings hub — Documentation map & escalation. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings hub — Tab pairing matrix across workspace configuration
- Management Frontend Deep Links — Account Settings — Legacy
/settings/emailsredirects to Communications - Glossary — Term definitions used across settings and module docs
- FAQ & Troubleshooting — Common reasons lifecycle check-in mail did not fire
- Get Help & Support — Escalate when Send now or Communication Rules behave unexpectedly
Upstream & downstream workflows
Workflow bullets pair with Common Workflows — Workflow cross-reference for inter-guide step pairing. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Managing a Check-in (section cross-reference; Deeper workflow reads; hub) — Lifecycle check-in email triggers and access-code delivery
- Managing a Check-out & Deposit Refund (section cross-reference; Deeper workflow reads; hub) — Departure templates and scheduled reminders
- Handling a Late Payment — Step 1 (section cross-reference; Deeper workflow reads; hub) — Identify overdue charges when automated payment reminders fire or a payment overdue alert row-click brought you here
- Processing a New Booking (section cross-reference; Deeper workflow reads; hub) — Confirmation email timing after new reservations land in the hub
- Notification triage (section cross-reference; Deeper workflow reads; hub) — Payment-received and payment overdue in-app alerts vs automated tenant Communication Rules (Step 4 (section cross-reference; Deeper workflow reads; hub))
Deeper workflow reads
Workflow reads pair with Common Workflows hub subsection index and Workflow cross-reference. Each workflow sub-guide reciprocates with [Deeper workflow reads](./email-templates.md#deeper-workflow-reads) anchors on Account Settings bullets — hub parity: Account Settings hub — Deeper workflow reads. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Managing a Check-in — Lifecycle check-in email triggers and access-code delivery (section cross-reference; Deeper API reads; hub)
- Managing a Check-out & Deposit Refund — Departure templates and scheduled reminders (section cross-reference; Deeper API reads; hub)
- Handling a Late Payment — Step 1 — Identify overdue charges when automated payment reminders fire or a payment overdue alert row-click brought you here (section cross-reference; Deeper API reads; hub)
- Processing a New Booking — Confirmation email timing after new reservations land in the hub (section cross-reference; Deeper API reads; hub)
- Notification triage — Payment-received and payment overdue in-app alerts vs automated tenant Communication Rules (Step 4) (section cross-reference; Deeper API reads; hub)
Related Account Settings tabs
Tab bullets pair with Account Settings — Tab cross-reference and Recommended setup order. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Chatbot — WhatsApp bot pause rules vs operator-configured Communication Rules on this tab
- Tenant categories — Segment Communications / Email toggle can suppress lifecycle mail per category; validate scoped Tenant categories audience against Bookings, Finance, and Tenants portfolio filters
- Contract templates — Full list of dynamic variables (shared with emails)
- General Information — Company contact details included in emails
- Preferences — BCC on tenant communications and operator payment-notification emails
- Preferences — In-app notifications — Account-wide payment alerts distinct from tenant-facing Communication Rules
- Integrations — Nuki and smart-lock audience filters on Communication Rules
- Interface Language — Your email preferences — Per-user operator mail toggles alongside tenant Communication Rules
- Owners — Landlord identity placeholders distinct from operator General Information
- Subscription — Vivin platform billing (distinct from tenant lifecycle emails on this tab)
Operator modules & property-level overrides
Module bullets pair with property-level overrides on Listings and Bookings. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Listings — Email Customization tab — Property-specific email additions
- Listings — Access Lockers tab — Access codes appended to check-in emails
- Bookings — Communication tab — Per-booking WhatsApp/email thread audit (distinct from Communication Rules)
- Inbox module — Portfolio WhatsApp threads when Communication Rules audience filters reference chat history
- Notifications module — In-app payment alerts distinct from automated tenant Communication Rules
- Notifications — Payment overdue alerts (in-app) — Operator Payments category rows when scheduled charges are overdue
- Dashboard module — KPI snapshot when Communication Rules surface payment alerts operators triage from Settings
- Finance — Deposits — Portfolio refund queue when departure Communication Rules fire during settlement week
- Audit — Discounts tab — Cross-portfolio discount export when payment-reminder disputes involve mid-stay repricing
Deeper concept reads
Concept reads pair with Concepts hub subsection index and Concept cross-reference. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Tenant Portal — Lifecycle emails that deep-link tenants into portal payment and contract flows (section cross-reference; hub)
- 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
- Automation & AI — Tenant chatbot vs operator-configured Communication Rules (section cross-reference; hub)
- Integrations & Distribution — Lifecycle emails fire for imported bookings once channel reservations land in Bookings (section cross-reference; hub)
- Payment Allocation — Two-layer receipts and credit note reject/revert warnings after reminder disputes (section cross-reference; hub)
- Booking Lifecycle — Computed status model for stays receiving lifecycle mail from this tab (section cross-reference; hub)
Module documentation hubs
Module hub bullets pair with Modules — Module cross-reference. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Bookings — Operator UI for reservations receiving lifecycle and reminder mail
- Listings — Property wizard and per-property email customization
- Finance — Portfolio ledgers and payment reminders tied to Communication Rules
- Operations — Maintenance tickets and check-in/out coordination
- Utilities — Bills Included ceiling model and tenant overage charges
- Sales — Portfolio availability and channel manager connections
- Tenants — Tenant directory and With Debt segmentation
- Analytics — Month-range portfolio KPI charts
- AI Chat — Vivin-internal AI Assistant for portfolio Q&A
- Audit — Portfolio-wide Manual Blocks and Discounts review
- Booking engine details — Rich marketplace payload editor via the Full integration pill
- Properties workspace — Legacy
/propertiesURL redirects into Listings
Lockout catch-up after password recovery
Operational backlog after sign-in recovery pairs with Resetting a Management User Password — Step 3 before you resume Communication Rules on this tab. Hub parity: Common Workflows — Lockout catch-up after password recovery. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Common Workflows — Lockout catch-up after password recovery — Hub matrix when sign-in was restored mid-setup before step 11 lifecycle templates and rules are saved
- Getting Started — Lockout catch-up after password recovery — Canonical operational backlog mesh (notification triage, Pending Steps 6b, portal gates)
- Notification triage — Clear payment-received and payment overdue alerts that stacked while Communication Rules were offline
- Pending manual receipt approval — Month-end Pending mesh when payment reminders fired before recorded receipts were approved
Pending manual receipt approval
Receipt approval pairs with Communication Rules (automated reminders) and Users and roles (Approve payments permission). Hub parity: Common Workflows — Pending manual receipt approval. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Common Workflows — Pending manual receipt approval — Hub matrix when payment reminders fired but recorded bank transfers still show pending until Approve payments
- Communication Rules (automated reminders) — Debt-threshold rules that may fire before manual receipts clear Pending
- Users and roles — Role permissions — Approve payments gates Finance → Transactions approval that stops reminder noise
- Finance — Pending manual payments — Amber Pending chip paired with reminder disputes
- FAQ — Manual receipt still pending — Why tenant reminders may disagree with ledger Pending state
Reject/revert mistaken receipts
Receipt cleanup pairs with Handling a Late Payment — Step 1 reminder escalation and Payment Allocation two-layer receipts. Hub parity: Common Workflows — Reject/revert mistaken receipts. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Common Workflows — Reject/revert mistaken receipts — Hub matrix when duplicate bank transfers triggered payment reminders that need Reject / Revert cleanup
- Payment Allocation — Correcting mistaken receipts — Two-layer model and credit note accounting follow-up
- Communication Rules (automated reminders) — Pause or retarget rules after mistaken receipts are cleared
- Finance — Row actions on in-payment rows — Bulk Reject selected on Finance → Transactions
- FAQ — Reject or revert an incoming payment — Quick answers when reminder disputes follow invoiced receipts
Portfolio segmentation by tenant category
Segment filters pair with Audience — Nuki, Smart locks, booking tags, and tenant categories on Communication Rules and Portfolio KPI review — Step 6. Hub parity: Common Workflows — Portfolio segmentation by tenant category. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Common Workflows — Portfolio segmentation by tenant category — Hub matrix when segment-scoped Communication Rules must align with portfolio filters
- Audience — Nuki, Smart locks, booking tags, and tenant categories — Tenant categories audience on lifecycle and reminder rules
- Tenant categories — Segment Communications / Email toggle before enabling scoped rules
- Bookings — Other filters — Validate audience size against portfolio Tenant category filters
- Finance — Tenant category filter — Ledger segmentation when payment reminders target one segment
- Glossary — Tenant category — Definition, portfolio filter catalog, and Finance parity
Notification row-click navigation
Communication Rules send email in parallel with /notifications — row-click in-app alerts for the canonical booking context before editing payment-reminder templates mid-triage. Hub parity: Account Settings — Notification row-click navigation. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — 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
Payment due-date Communication Rules complement payment overdue in-app alerts — row-click alerts, then verify matching email rules on this tab. Hub parity: Account Settings — Payment alert to receivables triage. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — 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
Booking-confirmation email rules do not approve ledger receipts — Upcoming Payment received alerts still need Pending manual receipt approval on Transactions. Hub parity: Account Settings — Confirmation alert triage. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — 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
Communication rules payment reminders fire before Debt Aging updates — route payment overdue alerts before portfolio Top debtors sign-off. Hub parity: Account Settings — Finance debt receivables triage. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — 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 — Canonical Finance → Overview surface
- FAQ — Finance debt receivables triage hub — Symptom table
Handling a Late Payment collections
Communication rules payment reminders fire before Debt Aging updates — route payment overdue alerts before portfolio Top debtors sign-off Hub parity: Account Settings — Handling a Late Payment collections. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — Handling a Late Payment collections — Hub matrix (
finance-overview-income-chart-debt-aging.png,notifications-row-navigate-to-booking-detail.png,finance-overview-debt-aging-walkthrough-flow.mp4) - Common Workflows — Handling a Late Payment collections hub — Operator procedure hub
- Finance debt receivables triage — Debt Aging before Step 1
- Pending manual receipt approval — Clear amber Pending before collections outreach
- FAQ — Handling a Late Payment collections hub — Symptom table
- Glossary — Handling a Late Payment collections hub — Surface table + per-guide/module mesh
Finance Income status drill-down
Reminder emails do not change Income chart segments — open Paid / Scheduled / In debt drill-down when tenants insist they already paid. Hub parity: Account Settings — Finance Income status drill-down. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — Finance Income status drill-down — Hub matrix (
finance-overview-income-chart-debt-aging.png,finance-overview-debt-aging-walkthrough-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
Lifecycle emails do not list every collected payment — open Cash flow forecast when you need month-scoped collections proof. Hub parity: Account Settings — Cash flow forecast drill-down. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Account Settings — Cash flow forecast drill-down — Hub matrix (
finance-overview-income-chart-debt-aging.png,finance-overview-debt-aging-walkthrough-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. Full pairing matrix: Emails section cross-reference · Account Settings — Section cross-reference.
- Credit note (payment reject/revert) — Accounting follow-up when you reject a mistaken payment-confirmation receipt after a reminder fired; concept walkthrough: Payment Allocation — Correcting mistaken receipts; workflow hub: Common Workflows — Reject/revert mistaken receipts
- Notification row navigation — In-app payment alerts vs automated tenant Communication Rules
- 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 — 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 - 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 — Archive a property — Edit property sidebar Archive / Unarchive on Listings; building-level — not Delete Booking or Cancel booking
- FAQ — Portfolio retirement decisions — Archive property (building) vs Cancel booking vs Delete Booking (reservation soft-archive) — three-way decision table
- Deposit lifecycle status — Check-out Communication Rules fire relative to Ready to Refund and Ended booking states
- 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 — Same-day turnovers — Check-out + check-in on one unit same day: Operations → Check-in & Check-out, Timeline / Multicalendar, turnover tickets
- 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)
- 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 — 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 after Issue allocation / Invoice selected
- 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 — 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 — 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