nightlydata

STR Portfolio KPIs: 8 Metrics Pro Operators Review Weekly

By Daniel Carrow (pen name) guide
STR Portfolio KPIs: 8 Metrics Pro Operators Review Weekly - cover image

TL;DR: At 10 doors, performance problems hide in portfolio averages. Eight metrics, reviewed per door every week, are enough to catch underperformers before they compound. You don’t need enterprise software. You need a PMS that exports CSVs, a spreadsheet, and the discipline to look at the right numbers.

Why single-property thinking breaks at 10 doors

One listing is manageable on feel. At 10, it isn’t. A portfolio median occupancy of 73% with one door running 45% and another at 91% tells you nothing about what needs fixing. The average conceals both the failure and the success.

The operational shift at 10+ doors is not about tool complexity. It’s about attention bandwidth. Issues compound faster than you can spot them reactively. A cleaning failure at door 3 generates a bad review, depresses ranking, reduces bookings, and creates revenue underperformance, all before you notice. Weekly per-door checks intercept that chain before it runs.

The eight metrics below are the minimum set to track weekly. Four more monthly add-ons follow. All pull from tools you likely already use.

The 8 weekly metrics

1. RevPAR by door (rolling 30-day trailing)

RevPAR, revenue per available night, is the one number that combines pricing and occupancy into a single performance figure. Track it per door on a rolling 30-day basis, not a calendar month, so the signal stays current.

Where to pull it: PMS revenue report, exported as CSV. Divide gross revenue by available nights, excluding nights blocked for owner use or maintenance, since those were never for sale.

What it signals: Any door 15% or more below your portfolio median warrants investigation. Do not act on RevPAR alone. It tells you a door is underperforming, not why.

Action threshold: 15% or more below portfolio median triggers the diagnostic process below.

2. Gap night percentage (next 30 days)

Gap nights are unbookable nights between confirmed reservations, created by minimum stay settings. A two-night gap between a Saturday-to-Monday and a Thursday-to-Saturday booking is a gap night problem, not a demand problem.

Where to pull it: PMS calendar export. Divide unbookable gap nights by total available nights in the next 30 days.

What it signals: Gap nights above 10% of available nights means your LOS settings are creating occupancy drag. Per our analysis of dynamic pricing configurations that lose money, LOS conflicts are one of the most common causes of undiagnosed RevPAR underperformance.

Action threshold: Above 10%, audit minimum stay settings by day of week and season for that door.

3. ADR delta vs portfolio median

Your Average Daily Rate compared to the portfolio median tells you whether a door is under- or over-priced relative to your own inventory. Track the delta as a percentage, not raw ADR, because properties have different inherent price floors.

Where to pull it: Same PMS revenue export as RevPAR. Or from your dynamic pricing tool. PriceLabs Portfolio Analytics, per their public product documentation, includes a portfolio-level view showing each property’s ADR performance.

What it signals: ADR 20% above portfolio median with declining occupancy is likely overpriced. ADR 20% below median with consistently full occupancy is underpriced. Neither is obvious from the OTA dashboard.

Action threshold: 20% gap from portfolio median in either direction triggers a pricing audit.

4. Review score (trailing 90 days, last 20 reviews)

All-time review score is a lagging indicator of past decisions. Trailing 90-day score across the last 20 reviews tells you what guests experience now.

Where to pull it: OTA host dashboards directly, or via your PMS if it aggregates reviews. Hostaway’s reporting suite, per their public reporting and analytics documentation, includes multi-property review aggregation.

What it signals: Score below 4.7 in the trailing period, or two consecutive sub-4-star reviews from different stays, indicates a recurring operational issue, not a difficult guest.

Action threshold: Below 4.7 trailing, or any two consecutive sub-4 reviews: review the message thread of flagged stays and your cleaning checklist.

5. Cancellation rate (trailing 90 days)

Cancellations hurt ranking on every OTA. A high guest cancellation rate signals either policy friction, meaning strict cancellation terms relative to local market norms, or demand misalignment where pricing attracts bookings guests later abandon.

Where to pull it: PMS booking report. Divide reservations cancelled by guests by total reservations, trailing 90 days.

What it signals: Above 8%, your cancellation policy may be stricter than market standard for your segment, or your pricing is drawing bookings that guests cancel when comparable options appear.

Action threshold: Above 8%, compare your cancellation policy to the Airbnb default for your market and review booking lead times for the cancelled reservations.

6. Booking lead time trend (30-day rolling average)

Booking lead time, the median days between booking date and check-in, moves before RevPAR moves. A declining trend signals softening demand before occupancy or ADR registers the drop.

Where to pull it: PMS booking export. Calculate median days from booking date to check-in date per door, 30-day rolling window.

What it signals: Lead time dropping three or more weeks over a 60-day period signals either demand softness or pricing that pushes bookings to last-minute inventory. The distinction matters: one requires a pricing adjustment, the other a distribution or ranking change.

Action threshold: Lead time declining three or more weeks over 60 days triggers an ADR check and an OTA rank position review.

7. Cleaning incident rate (trailing 30 days)

A cleaning incident is any turnover generating a guest complaint about cleanliness or requiring a re-clean before check-in. It’s the sharpest operational signal for cleaning ops failure.

Where to pull it: Your PMS task log cross-referenced with your guest message log. Tag any message containing cleanliness-related keywords in the trailing 30 days, plus any re-clean dispatches.

What it signals: Above 5% of turnovers generating an incident, your cleaning ops have a structural problem: team capacity, checklist gaps, or handoff timing.

Action threshold: Above 5%, review your turnover SOP against actual completion time windows. The problem is almost always timing or checklist coverage, not individual cleaner quality.

8. Payout reconciliation (actual vs projected)

Projected revenue comes from confirmed reservations in your PMS. Actual payouts come from OTA payment dashboards. The gap between them catches disputes, partial refunds, and uncollected fees before they become surprises at month-end.

Where to pull it: PMS reservation report for expected revenue vs OTA payout summary for actual disbursements, matched by property and period.

What it signals: A recurring gap above 3% of projected revenue traces to open disputes, partial refunds on long stays, or channel-specific fee structures your PMS commission settings aren’t capturing correctly.

Action threshold: Gap above 3%, review open dispute cases on each OTA and confirm your PMS commission settings match your current OTA agreements.


Here’s how the weekly review flows in practice:

flowchart TD
    A[Weekly review\nper door] --> B{RevPAR below\nportfolio median 15%?}
    B -->|No| C[Check reviews\nand cancel rate]
    B -->|Yes| D{Gap nights\nabove 10%?}
    D -->|Yes| E[Audit min LOS\nsettings by day]
    D -->|No| F{ADR vs\nportfolio median?}
    F -->|20% above, low occ| G[Pricing audit\ncheck booking pace]
    F -->|20% below, full occ| H[Underpriced\nincrease base rate]
    F -->|Within range| I[Check listing\nrank signals]
    C -->|Score below 4.7\nor cancel above 8%| J[Ops investigation]
    C -->|All clear| K[No action this week]

Four monthly add-ons

These four metrics add signal but don’t need weekly attention:

Length of stay distribution vs minimum stay settings. Pull your actual LOS breakdown by door quarterly and compare it to your configured minimums. A door booking 40% of stays at exactly 2 nights on weekends while your minimum stay is 3 nights is turning away demand.

Channel mix by door. Airbnb, Vrbo, Booking.com, and direct bookings carry different commission structures and guest profiles. A door generating 95% of revenue from one channel has concentration risk. Our OTA distribution guide covers when each channel is worth the operational overhead.

Maintenance backlog by door. A running count of outstanding maintenance items, from message threads and task logs. Deferred maintenance compounds into guest complaints. Review it monthly, not reactively.

Owner statement accuracy (for managed portfolios only). If you manage properties for third-party owners, compare generated owner statements to actual OTA payouts monthly. Discrepancies surface reconciliation problems before they become disputes.

Building this without enterprise BI tools

Three setups by portfolio size:

10-15 doors. A Google Sheet updated from weekly PMS CSV exports is sufficient. One row per door, eight metric columns, color-coded thresholds. Export pull and formula updates take about 45 minutes weekly. Cost: nothing beyond your PMS subscription. The STR tech stack guide for 10-30 properties covers which PMSs have the export depth you need.

15-25 doors. At this scale, the manual CSV pull gets tedious. If your PMS has an API, a Make or Zapier automation can push weekly data into an Airtable or Notion database automatically. The review time drops to 15-20 minutes; the data assembly becomes automated.

25-30 doors. Consider a dedicated portfolio analytics layer. Key Data Dashboard and PriceLabs Portfolio Analytics both offer multi-property tracking with comp-set benchmarking. The comp-set comparison is the main value at this scale, where your own portfolio median becomes a less reliable internal benchmark than the market.

Common mistakes

Tracking portfolio totals instead of per-door. A portfolio RevPAR of $85 looks fine. Three doors running $45, $88, and $122 requires three different responses. Per-door tracking is not optional if you want to catch underperformance before it compounds.

Using all-time averages. All-time review score rewards legacy performance, not current operations. Trailing windows, 90 days for reviews and 30 days for RevPAR and lead time, give you current signal.

Ignoring leading indicators. Gap nights and booking lead time move before RevPAR moves. Operators tracking only lagging indicators are always chasing problems that materialized weeks earlier.

Reviewing on the wrong cadence. Monthly is too slow for RevPAR and cancellation rate. Daily is noise for most of these metrics. Weekly is the right cadence for the eight metrics above. The monthly add-ons stay monthly.

Where to go from here

If per-door RevPAR review surfaces consistent underperformance on specific booking windows or nights of the week, the next diagnostic step is pricing configuration. See where dynamic pricing loses money for the specific settings that cause it.

If your portfolio has grown to the point where the tracking itself is the bottleneck, scaling STR operations from 10 to 30 properties covers the systemic tooling and team changes that make the difference at each growth stage.

For context on what occupancy benchmarks mean, and why industry averages mislead, see STR occupancy benchmarks before setting targets for your doors.

Frequently asked questions

How many doors before a portfolio dashboard is worth the effort?
Around 8. Below that, you can stay on top of issues through daily platform checks. Above 8, problems hide in aggregates and weekly per-door reviews become the only reliable way to catch them early.
Do I need a dedicated dashboard tool or can I use my PMS?
Most PMSs in the 10-30 door range, including Hostaway and Hospitable, include per-property revenue reports exportable as CSV. A Google Sheet updated from those exports handles the eight weekly metrics cleanly at this scale. Dedicated portfolio tools like PriceLabs Portfolio Analytics add automation and comp-set benchmarking but are not required below 25 doors.
How do I get RevPAR data when I list on multiple OTAs?
Pull it from your PMS, not from OTA dashboards. Your PMS consolidates bookings from Airbnb, Vrbo, and Booking.com into a single reservation stream, which is the only way to calculate accurate per-door occupancy and revenue across channels. OTA dashboards show only that platform's performance.
What should I do when one door consistently underperforms?
Start with gap nights and ADR position before touching occupancy targets. Most underperformance traces back to either an LOS setting creating unbookable gaps or pricing sitting above what the listing's reviews and photos support. If both are calibrated and RevPAR stays low, the issue is usually ranking: response rate, review velocity, or acceptance rate.