← Back to blog
google-sheetsspreadsheetslandlord-tipstracking

How to Build a Landlord Dashboard in Google Sheets

February 7, 2026·Sam Ralston
Team collaborating around laptops in a bright modern office workspace

If you manage more than a handful of units, you've probably got data scattered across multiple tabs. Rent roll here, maintenance log there, lease dates somewhere else.

A dashboard tab pulls it all into one view. Total rent expected, total collected, who's late, vacancy rate, open maintenance requests. One tab, one glance, you know where everything stands.

Here's how to build one in Google Sheets using formulas you can copy right now.

The Dashboard Layout

Create a new tab called "Dashboard." This tab won't have raw data. It's all formulas that reference your other tabs.

I organize mine in sections. Top section is rent status. Middle is vacancy and lease info. Bottom is maintenance. You can lay it out however makes sense to you, but here's what works for 8 to 20 units.

Section 1: Rent Collection Status

These formulas assume your rent data is on a tab called "Rent" with columns: Unit (A), Tenant (B), Rent Amount (C), Due Date (D), Date Paid (E). Adjust the tab name and columns to match your setup.

Total Rent Expected:

=SUM(Rent!C2:C50)

This adds up every rent amount. If you have 12 units at various rates, this gives you the total you should collect each month.

Total Rent Collected:

=SUMIF(Rent!E2:E50, "<>", Rent!C2:C50)

This sums the rent amount for every row where the Date Paid column is not empty. Paid tenants count. Unpaid ones don't.

Total Outstanding:

=SUM(Rent!C2:C50) - SUMIF(Rent!E2:E50, "<>", Rent!C2:C50)

Expected minus collected. This is the number that should keep getting smaller throughout the month.

Collection Rate:

=SUMIF(Rent!E2:E50, "<>", Rent!C2:C50) / SUM(Rent!C2:C50)

Format this cell as a percentage. On the 1st it might be 0%. By the 10th, hopefully 90%+. If it's the 15th and you're at 75%, you've got a problem.

Units Overdue:

=COUNTIFS(Rent!E2:E50, "", Rent!D2:D50, "<"&TODAY()-5)

This counts units where rent is unpaid and the due date was more than 5 days ago (adjust for your grace period). When this number is 0, you can relax.

Section 2: Vacancy and Lease Status

These formulas reference a "Leases" tab with columns: Unit (A), Tenant (B), Lease Start (C), Lease End (D), Status (E). If you don't have a lease tab yet, check my guide on building a lease expiration tracker.

Total Units:

=COUNTA(Leases!A2:A50)

Counts every unit you have listed.

Occupied Units:

=COUNTIF(Leases!B2:B50, "<>")

Counts units that have a tenant name filled in. Empty tenant = vacant unit.

Vacant Units:

=COUNTA(Leases!A2:A50) - COUNTIF(Leases!B2:B50, "<>")

Total minus occupied. If this number is above 0, you know exactly how many units need filling.

Vacancy Rate:

=(COUNTA(Leases!A2:A50) - COUNTIF(Leases!B2:B50, "<>")) / COUNTA(Leases!A2:A50)

Format as percentage. Industry average for residential is roughly 5 to 8%. If you're above 10%, dig into why.

Leases Expiring in 30 Days:

=COUNTIFS(Leases!D2:D50, ">"&TODAY(), Leases!D2:D50, "<="&TODAY()+30)

This counts leases ending within the next 30 days. When this is above 0, you should be reaching out to those tenants about renewals.

Leases Expiring in 60 Days:

=COUNTIFS(Leases!D2:D50, ">"&TODAY(), Leases!D2:D50, "<="&TODAY()+60)

Same idea but a wider window. Start renewal conversations 60 days out if you can.

Section 3: Maintenance Overview

These reference a "Maintenance" tab with columns: Date (A), Unit (B), Issue (C), Priority (D), Status (E), Cost (F). My spreadsheet landlord toolkit post covers the full maintenance setup.

Open Requests:

=COUNTIF(Maintenance!E2:E200, "Open")

In Progress:

=COUNTIF(Maintenance!E2:E200, "In Progress")

Completed This Month:

=COUNTIFS(Maintenance!E2:E200, "Complete", Maintenance!A2:A200, ">="&DATE(YEAR(TODAY()), MONTH(TODAY()), 1))

High Priority Open:

=COUNTIFS(Maintenance!D2:D200, "High", Maintenance!E2:E200, "Open")

This is the one that matters most. If this number is above 0, something urgent is waiting. You should see it the moment you open your dashboard.

Total Maintenance Cost (This Month):

=SUMIFS(Maintenance!F2:F200, Maintenance!A2:A200, ">="&DATE(YEAR(TODAY()), MONTH(TODAY()), 1))

Tracks your maintenance spend for the current month. Useful for budgeting and spotting units that are costing you more than they should.

Conditional Formatting for the Dashboard

Make the numbers visual. A few rules go a long way.

For "Units Overdue": if greater than 0, red background. If 0, green. One rule. Instant signal.

For "Collection Rate": below 80% is red. 80 to 95% is yellow. Above 95% is green.

For "Vacancy Rate": above 10% is red. 5 to 10% is yellow. Below 5% is green.

For "High Priority Open": greater than 0 is red. Zero is green.

Now your dashboard works like a cockpit. Green means good. Red means act. You can assess your entire portfolio in about 3 seconds.

The Catch

Your dashboard is only as current as your data.

If you haven't updated the "Date Paid" column in 5 days, your dashboard still shows rent as outstanding even if tenants have paid. If you haven't logged a maintenance request, the "Open Requests" count is wrong.

This is the fundamental limitation of any spreadsheet dashboard. It reports what you've entered. It doesn't know what's actually happening until you tell it.

I've had days where my dashboard showed everything green and I felt great. Then I realized I just hadn't updated anything in a week. Reality was 3 overdue tenants and 2 maintenance requests I forgot to log.

The dashboard didn't lie. I just didn't feed it accurate data.

⚡ Skip the setup: RentGuard monitors your Google Sheet automatically and texts you when rent is overdue. $15/mo. Try it free →

Real-Time Status Without the Manual Work

RentGuard doesn't replace your dashboard. Your SUMIF and COUNTIF formulas are great. What it replaces is the need to open the dashboard every day to check on things.

It connects to your Google Sheet and monitors the rent data automatically. If someone hasn't paid and they're past the grace period, you get a text. You don't have to pull up the dashboard to find out. The alert comes to you.

Build your dashboard using this post. Use it for monthly reviews, portfolio snapshots, and planning. Then let RentGuard handle the daily monitoring so you're never surprised by an overdue payment.

Grab the free rent payment tracker template to get your data organized, build a dashboard on top, and connect it to RentGuard when you're ready for real-time alerts. That's the full stack for a spreadsheet landlord who doesn't want to live inside their spreadsheet.

Stop missing late rent payments

RentGuard monitors your Google Sheet and alerts you when rent is overdue or maintenance is aging. No migration. 5 minute setup. 30 days free.

Start Free Monitoring →