🗄️ Data Source: Supabase

All occupancy and revenue data served live from Supabase (project: 175east-dashboard). Numbers on this page update automatically when the database is updated.

Original source: Lodgify API exports (lodgify-monthly-historical.json + lodgify-bookings-all-v1.json). Migrated to Supabase: 7 April 2026.

📐 Data Workings & Methodology

How every number on the dashboard is calculated. Data served live from Supabase.

📁 Data Sources

SourceContainsUsed For
Supabase — occupancy tableMonthly + full-year occupancy by propertyAll dashboard KPIs, charts, YoY comparisons
Supabase — tasks tableKanban tasks with column stateTasks/Kanban board
lodgify-bookings-all-v1.json783 individual booking records (archived)Original source for occupancy data
lodgify-monthly-historical.jsonMonthly aggregates by property 2021–2026 (archived)Original source for revenue data

Revenue comes from monthly aggregates because individual booking records don't contain revenue data in the Lodgify export.

🚫 Exclusion Rules

The following are excluded from occupancy calculations:

RuleReasonCount
No guest name AND no sourceCalendar blocks (owner-closed periods)83 entries
Richard Cawson test bookingTest/admin booking1 entry

Calendar blocks have status "Booked" in Lodgify but represent owner-blocked dates, not real guest stays. "OH" source = Lodgify direct website (real bookings, included). "GGB" = Go Great Barrier agent. "HH" = Holiday Houses.

📊 Occupancy by Year — Live from Supabase

Calendar blocks excluded. Data updates automatically when Supabase is updated.

2024 Full Year

PropertyNightsAvailableOccupancy
Loading from Supabase...

2025 Full Year

PropertyNightsAvailableOccupancy
Loading from Supabase...

2026 Confirmed

PropertyNightsAvailableOccupancy
Loading from Supabase...
Occupancy % = (Guest nights in year ÷ available nights) × 100
Portfolio % = (Total guest nights across 3 properties ÷ total available nights) × 100
Calendar block nights excluded. Available nights = days in year per property.

💰 Revenue by Year — Live from Supabase

YearPitokukuRuruTree HouseTotal
Loading from Supabase...

* 2026 = confirmed bookings revenue to date. 2021/2022/2023 data from historical Lodgify exports (not in Supabase — static below).

⚠️ 2026 revenue = confirmed bookings only — not cash in bank.
This is the total value of reservations already made, regardless of whether they've checked in yet. It excludes: future bookings not yet made, bookings that might cancel, and any unconfirmed enquiries. The $156K full-year figure on the main dashboard is all confirmed bookings Jan–Dec 2026.
📉 Why is 2026 occupancy higher than 2025 but revenue lower?

Loading…

Why the rate fell:
• 2026 has a much higher proportion of winter bookings (May–Sep at $225–$325/night) — great for occupancy but drags the avg rate down hard
• 2025 was weighted toward peak season (mostly summer/shoulder at $400–$600+)
• Tree House particularly affected: lower rate structure vs Pitokuku/Ruru

Key takeaway: Occupancy % alone doesn't tell the full story. Revenue per available night (RevPAN) is the metric to watch. The goal is to push winter rates up over time, not just fill the nights.

Historical Revenue (pre-Supabase, static)

YearPitokukuRuruTree HouseTotal
2021$5,053$19,216$18,375$42,644
2022$53,504$83,149$38,821$175,474
2023$71,554$77,803$38,939$188,295

💲 Current Pricing Structure

Confirmed Ian Cawson, March 2026. Set in Lodgify and pushed to all OTA channels.

Direct Rates (base)

SeasonDatesPitokukuRuruTree House
Winter1 May – 30 Sep$325/n$275/n$225/n
ShoulderOct–Dec 22, Feb–Apr$400/n$350/n$300/n
HighDec 23 – Jan 31$600/n$600/n$500/n

Extra guests: +$50/person over 4 (all seasons, all properties)

OTA Markups

PlatformMarkupRationale
Airbnb+20%Highest commission platform
Booking.com+18%High commission
Vrbo+10%Lower commission
Holiday Houses+10%Consistency with "save 10%+" claim

📡 Booking Source Key

Source CodePlatformNotes
OHLodgify Direct WebsiteReal bookings via 175east.nz
AirbnbIntegrationAirbnbAuto-synced
BookingComBooking.comAuto-synced. Guest emails anonymised.
HomeAwayVrboAuto-synced. Guest emails anonymised.
Manual / blankHoliday Houses / DirectManually entered (HH doesn't sync to Lodgify)
GGB prefixGo Great BarrierAgent bookings at base rate
HH prefixHoliday HousesGuest name prefixed with "HH -"
No name + No sourceCalendar blockEXCLUDED from all calculations

📝 Dashboard Change Log

DateChange
7 Apr 2026Migrated all data to Supabase. Workings, Dashboard, and Kanban all now live from database. Workings page updated to pull occupancy/revenue dynamically. Cloudflare Access added (4 approved users). Kanban realtime sync enabled.
7 Apr 2026YoY comparison extended to Jan–Mar (was Jan–Feb). 2026 Jan–Mar: 81.5% portfolio vs 73.7% in 2025.
1 Mar 2026Added Monthly Summary section (Jan vs Feb). Built monthly-occupancy-report.py script.
27 Feb 2026Fixed avg nightly rate. Fixed revenue chart. Added Workings tab. Restructured YoY comparison.
26 Feb 2026Dashboard rebuilt from scratch. Added YoY comparisons, stripped calendar blocks, deployed.