Overview
How much we’re losing → what’s wrong → what to do
Loading…
Custom date range
Parity healthi
Parity Health

Your overall parity-health score, out of 100. It drops when OTAs undercut you — the more often, the bigger the hit; deeper cuts and big-OTA cuts hurt most. Plus a penalty when you’re not shown on Google.

Roughly: 100 − how often you’re undercut (weighted by how deep, and how major the OTA is) − a visibility-gap penalty.

What’s lowering it
Disparity rate
Depth severity
Major-OTA hits
Visibility
Revenue at risk · monthly estimatei
Revenue at risk

A monthly run-rate, not a fact. The period only sets how the disparity rate is measured — the € is always shown per month so it stays comparable.

Counts only channels still undercutting now — a channel with no undercut in the last 7 days is “recovered” and stops adding to this estimate.

Per hotel: rooms × occupancy ÷ stay = bookings → × % booked online → × % who compare on Google → × how often an OTA beats you → the range spans how many of those switch. Refine in each hotel’s Revenue assumptions.

What you hand OTAs in commission on bookings that should have come to you directly.
An estimate, not an exact figure — only as accurate as each hotel’s assumptions.
Disparity rate
Parity rate
We’re better
Not shown
Top actionspersistent & severe cases · ranked by impactView activity →
Disparity over time% of comparable checks an OTA beats direct
Who undercuts youtop 6 active channels · by frequencyView all →
Reseller / aggregator — trace to source OTAMajor OTA — direct contract
Cost of the problemtop 6 active channels · est. lost € per month
Visibility gapstop markets where we’re missingView all →
Low / missingPartialHealthy visibility
Hotelstop 10 by impactOpen Hotels →
HotelHealthChecksVisibleDisparityAvg depth30-day trendTop violatorStatus
Active violators
channels undercutting now
Recovered
stopped undercutting (verified)
Est. € at risk
per month · conservative est. · active violators
Avg depth
across active violators
Undercutting channelsgrouped by channel · click a row
ChannelHotelsAvg depthEst. €/moSeen in30-dayStatus
Selected channel
est. lost / mo
hotels hit
worst depth
Markets seen
Affected hotels
Evidence (latest screenshots)
A reseller resells a major OTA’s rate. The test purchase to find which major OTA is the source, and the complaint to that source, happen offline — this gives you the proof and a pre-filled email. When the channel stops undercutting, later checks flip it to Recovered automatically.
What this screen does. It detects which channels undercut you, classifies them (reseller vs major OTA), and gives evidence + a ready complaint pack. It does not track the human steps (test purchase, sending the complaint) — those happen offline. It does verify the outcome: a channel that stops undercutting flips to Recovered from the data alone.
Overall visibility
of all checks we appear
Markets with gaps
of markets monitored
Hotel × market gaps
hotel-in-market pairs below 80% visibility
Worst market
Visibility by market
Low / missingPartialHealthy visibility
Selected market
visibility
with gaps
Hotels with gaps here
Anything below 100% means we’re sometimes absent from the Google block when guests search here — lost exposure, not just at 0%. The lower the score, the more often we’re missing. It’s usually a metasearch-ads / feed-setup issue (paid media), not a price problem: a whole market low points to that market’s feed/ads setup; a single hotel low in an otherwise-healthy market points to that hotel’s feed.
Visibility over time% of checks where we appear in the block · all markets
Problem B — we’re absent. Every time a guest searches and we’re not in the Google block while competitors are, that’s lost exposure — and it adds up the more often it happens (anything below 100%, not only at 0%). Usually a metasearch-ads / feed-setup issue, not a price problem — it routes to whoever runs paid media. All data-derived from the same checks.
Markets monitored
countries with checks
Costliest market
Most undercut market
Least visible market
By marketevery country · conservative € at risk · click a row
CountryHotels hitVisibleDisparity€/moTop violator
Selected market
€ at risk / mo
undercut rate
visibility
Hotels in this market
Who undercuts here
A market lens on your checks. A whole country undercut deeply usually means a reseller/wholesale leak that targets that market (the fix routes through the source OTA); a single hotel low in an otherwise-healthy market is that hotel’s issue. Visibility gaps here point to that market’s metasearch-ads / feed setup, not price.
The geographic view. Your price checks, grouped by country rather than by hotel or channel — so you can see which markets leak the most money, where you’re undercut most often, and where you’re missing from the block. Useful when one hotel behaves differently market to market, or when a problem belongs to a whole market rather than one property.
All hotelssorted by impact · click a row
HotelHealthVisibleDisparityAvg depthStatus
Selected hotel
Based on checks · last 30 days
at risk / mo · est
undercut rate
visibility
vs group avg i
vs group average

How this hotel compares to your hotels’ average, in percentage points. Undercut + = undercut more often than average (worse). Visibility = shown less often (worse). Blue = better than the group.

Parity trend
Top violators
Revenue assumptions · edit to refine the estimateDefault
Rooms *
Occupancy
Avg length of stay
ADR / night from data
% bookings online (OTA+web)
% online via Google
Guest switch rate when undercut auto · by gap size
OTA commissions (your contracted %)
Estimated loss / mo
Recent evidence
Per-hotel view. Both problems in one row: Visible (are we even shown) and Disparity (are we undercut). The panel benchmarks the hotel against the group average and links straight to its evidence + complaint pack.
i
Build evidence pack

A scoped, branded PDF of the screenshots you’ve filtered to — up to the 40 most recent. Not a bulk dump.

What shows up here
A channel newly undercuts a hotel — and it's confirmed: seen in ≥3 checks over 3 days, or it's a major OTA (Booking / Expedia / Agoda / Hotels / Trip), or a severe gap (≥€20 or ≥18%). An ongoing undercut re-surfaces only if it deepens by ≥€10.
A hotel drops out of the Google block in a market — confirmed by ≥2 checks in a row, never a single flicker.
A flagged channel stops undercutting, or a hotel reappears — confirmed by ≥2 clean checks. A verified win.
Note
Material changes only — gaps under €3 and 3% are filtered out as currency noise, so this stays signal, not every check. Read-only for now; push delivery (email / Telegram) and editable thresholds are a later step.
Profile

Your name as it appears across the dashboard.

Password

Set a new password for your account.

Team

People with access to this account. Owners can edit; viewers are read-only.

What “you’re losing €X / month” actually measures

When a guest comparing prices sees an online channel cheaper than your own site, some of those guests book there instead — and you pay a commission you’d otherwise keep. This page shows exactly how that number is built, so every figure on the dashboard is defensible to a revenue manager.

The funnel — five steps
  1. Monthly bookings the hotel makes — rooms × occupancy × 30 ÷ length-of-stay
  2. Those who compare online× % booked online × % who compare in the Google block
  3. Those actually under-cut — only the checks where a channel beat your price
  4. Those who switch — the guest switch rate, which scales with how deep the gap is (see below)
  5. Money lost per switchADR × nights × your OTA commission
Two ways to read it

Commission lost (default) — what you overpay in commission. Direct revenue touched — the full booking value that ran through a channel; useful for scale, but not a true “loss” since the room is still sold minus commission. The headline uses commission lost.

Guest switch rate — by how deep the gap is

A €3 gap on a €190 booking loses almost nobody; a 20% gap loses a real share. So the switch rate is not flat — it’s computed from the actual size of each undercut in your data (anchored to industry conversion-loss data; capped at ~40%, since even large gaps don’t move more than about a third of guests).

How much cheaper the channel isGuests who switch (cautious → aggressive)
under 2%0% → 5%
2–5%5% → 15%
5–10%15% → 30%
over 10%30% → 40%

Each hotel’s shown switch rate is the average of these across its own undercuts — so a hotel undercut deeply lands high, a hotel with tiny gaps lands low. The result is a cautious–aggressive range, never a single false-precise number.

Worked example — a sample hotel
357 rooms
× 70% occupancy
× 30 days
÷ 2-night average stay
3,750 bookings / month
3,750 bookings
× 75% booked online
× 25% who compare on Google
703 comparable bookings
703 comparable bookings
× 80% undercut incidence
562 undercut bookings
Average undercut depth ~20%
→ blended guest switch rate 28%–38%
562 undercut × 28%–38%
157–214 diverted bookings
ADR €97
× 2 nights
× 16% OTA commission
€31 per diverted booking
157–214 diverted bookings
× €31
€4.9k – €6.6k lost / month

For comparison, a flat “75–95% switch” (the old assumption) would have claimed ≈ €13k–€17k — about 2.5× higher. The live tile shows each hotel’s real figure on its current 30-day window.

Two different problems — split on purpose

Contracted OTAs (Booking, Expedia, Hotels.com, Trip.com) — when one of these is cheaper, it’s a direct parity break: complain to that OTA with the evidence. In your data these are largely at parity.

Gray-market resellers (Super.com, Vio.com, and similar) — these drive the large majority of undercutting. They don’t own rooms; they resell a rate sourced from a major OTA, so a booking there still costs you commission. The fix is different: run a test purchase to find the supplying OTA, then escalate to that partner. The complaint kit switches to this mode automatically for resellers.

Edge cases — what’s excluded, what’s labelled

Anomalous captures — excluded. A gap deeper than 40% is almost never a real public parity break — it’s usually a misread screenshot or a non-comparable (member/packaged) rate. These are marked Anomalous and excluded from undercutting and the € figure. (The 40% cutoff is a heuristic; it will be tuned in the calibration pass.)

Personalized prices — counted, and labelled ✳. Google marks some channel prices as “customised by the booking partner” (device/audience-targeted campaigns — a standard metasearch-ads feature). Guests in that segment really do see and book these prices, so they count toward undercutting and the € estimate — but every such capture carries a Personalized ✳ label in Evidence, and the complaint kit flags those instances, so the channel can’t dismiss the pack as untargeted.

It’s an estimate, not an invoice. The structure is fixed and defensible; the exact figure is only as good as each hotel’s assumptions (rooms, occupancy, online mix, commissions — all editable per hotel). The switch-rate bands will be re-calibrated on real booking data as history builds.