If you have ever typed your own hotel’s name into Google, watched a metasearch widget load, and seen a price 11 dollars under your direct rate on a site you have never heard of, you already understand why I run a rate parity audit every single month. That little number, lower than yours, on a channel you did not authorize, is quietly teaching every guest who sees it that booking direct with you is the chump move.
Here is the part nobody tells independent hoteliers: parity leaks almost never come from where you think. You assume it is the big OTA you can name off the top of your head. Nine times out of ten it is a bedbank three contracts deep that you forgot you signed, reselling your rate to a metasearch listing in a currency you do not even price in.
So this is my actual process. Not theory. The thing I do, in order, with the spreadsheet open.
What a rate parity audit actually is (and what it is not)
A rate parity audit is a structured monthly check that compares the public price for the same room, the same dates, and the same conditions across every channel you distribute through, then traces any gap back to the channel that created it.
It is not rate parity management. Management is the ongoing policy and channel-manager hygiene that keeps prices aligned. The audit is the detective work that tells you whether your management is actually working. I have written separately about running parity management without a revenue team, and about the billboard effect that makes OTAs worth keeping around. This piece is the operational sibling: the recurring inspection.
A parity audit does not exist to “catch” the OTAs. It exists so you stop guessing. When you can point at the exact channel, the exact date, and the exact dollar gap, every conversation that follows gets shorter and far more productive.
The whole point is to reduce your OTA dependence and win back more direct bookings by making sure your direct rate is never the embarrassing one in the lineup. You are not trying to escape distribution. You are trying to stop undercutting yourself by accident.
Step 1: Build your channel map before you check a single price
You cannot audit channels you forgot you have. So before pricing, I write down every place your inventory can appear:
- Direct — your booking engine, your Google Business Profile rate, your phone rate.
- Retail OTAs — the booking sites you contracted directly.
- Bedbanks / wholesalers — the ones who buy at net and resell. These are the usual suspects.
- Metasearch — the comparison surfaces that pull from all of the above and display them side by side.
- Indirect OTAs — sites you never signed with, but that show your rate because a bedbank fed it to them.
That last category is the one that bites. If you only ever audit the channels on your own contract list, you will miss the exact leaks that are costing you the most direct revenue. Pull your channel manager’s connection list and your last few wholesaler agreements. Half my new hotel clients discover a live contract they genuinely forgot existed.
The channel you cannot name is the channel undercutting you. Indirect distribution through bedbanks is the single most common parity leak I find, precisely because it never shows up on the contract list the hotelier is watching.
Step 2: Standardize the test so you are comparing like for like
A huge share of “parity violations” are not violations at all. They are apples-to-oranges comparisons that fall apart the second you control the variables. Before I trust any gap, I lock down:
- Same room type. Standard king vs standard king, not king vs the slightly-cheaper queen.
- Same dates and length of stay. Pick three or four test scenarios: a midweek night, a weekend, a shoulder date, and a far-out date 60 plus days ahead.
- Same occupancy. Two adults across every channel.
- Same currency. Force everything into your home currency. Currency rounding creates fake gaps constantly.
- Same conditions. Refundable vs non-refundable, board basis, and taxes-in vs taxes-on-top. This one is sneaky: a channel showing the rate before tax will always look cheaper at a glance.
- Logged out, fresh session. Member rates and closed user groups are allowed to be lower. Test the public rate in an incognito window so you see what a normal guest sees.
If you skip this step you will spend your month chasing ghosts and crying wolf to OTA market managers who will stop returning your emails.
Step 3: Capture prices in one grid
Now I actually pull the numbers. Same four date scenarios, every channel, screenshots saved, into a simple grid. Here is the shape of it, with illustrative numbers so you can see how a leak announces itself:
| Channel | Midweek night | Weekend night | 60-day-out | Notes |
|---|---|---|---|---|
| Direct (your engine) | 189 | 229 | 199 | Your intended rate |
| Retail OTA A | 189 | 229 | 199 | In parity, good |
| Retail OTA B | 189 | 232 | 199 | Tax rounding, ignore |
| Bedbank-fed OTA C | 178 | 215 | 186 | Gap on all dates, flag |
| Metasearch display | 178 | 215 | 186 | Pulling the C rate |
The moment you see one channel low across every scenario, that is not noise. That is a structural leak with a source. Note that the metasearch row mirrors the leaking channel exactly, which is your first clue about where to look next.
Save the screenshots with timestamps. When you eventually raise this with a partner, “I saw it cheaper once” gets you nowhere. A dated screenshot with room, date, and conditions visible gets you a credit.
Step 4: Trace the leak to its source channel
This is the part that separates an audit from a complaint. A low price on a metasearch result or an indirect OTA is a symptom. The source is almost always upstream. My trace order:
- Match the gap to a net rate. Take the leaking public price and work backwards. If your bedbank contract sells at, say, a 20 percent net discount, does the leaking rate line up with that wholesaler reselling at a thin markup? If the math fits, you have found your source.
- Check which channels move together. In the grid above, the metasearch display and “OTA C” show identical low numbers. They are fed by the same upstream rate. Fix the upstream and both correct at once.
- Rule out your own settings. Before blaming anyone, confirm your channel manager is not pushing a stale or mismapped rate to one connection. I find self-inflicted leaks constantly — a derived rate with the wrong markup, a promo that never got switched off, a room mapping that points the wrong inventory at a channel.
- Confirm it is not a legitimate package. Loyalty rates, mobile rates, and contracted packages can legitimately price lower. If it is one of those, it is not a violation and you move on.
Only after this trace do I know whether I am dealing with a wholesaler leak, an OTA member-rate display, or my own misconfiguration. Each one has a completely different fix, which is exactly why guessing wastes the month.
Step 5: Remediate based on the actual source
Now you fix the thing you actually found, not the thing you assumed.
If it is your own channel manager settings: correct the mapping, kill the stale promo, fix the derived-rate markup. This is the best outcome because it is the fastest and it is entirely within your control. Re-pull the grid the next day to confirm it cleared.
If it is a bedbank reselling too cheaply: go back to the contract. You are looking for whether they breached resale or package-only terms. Many wholesaler agreements forbid loose resale to retail OTAs; if yours does, you have leverage to get the listing pulled or repriced. If the contract genuinely allows it and the math no longer works for you, that is a renegotiation or a parting of ways.
If it is a retail OTA displaying below your rate: screenshot, document, and raise it through their parity/dispute channel. With taxes and currency controlled, a clean dated example usually gets resolved.
If you cannot find or fix the source quickly: the move is to make your direct offer unambiguously the best place to book — not by dropping your public rate into a race to the bottom, but with value the OTA literally cannot match. Free parking, a room upgrade, late checkout, a welcome drink, loyalty points. This is where conversion work earns its keep, and it is how you win back direct bookings even while a leak is being chased down. Strong book-direct CRO turns a parity headache into a direct-booking advantage.
The OTAs are not the enemy here. They send you real demand. The goal is a healthier mix and a direct channel that is never the worst price on the screen — not firing distribution that genuinely fills rooms.
Step 6: Make it repeatable, because it only works monthly
A parity audit you run once is a snapshot. A parity audit you run every month is a system. Rates drift, contracts get added, promos get forgotten, and a connection that was clean in March will quietly leak in June. So I bake it into a recurring routine:
- Same date scenarios every month so you can compare month over month.
- Same grid, same conditions so a new gap jumps out instead of hiding in changed assumptions.
- A running log of sources found and fixes applied, so when a channel re-offends you already know its history.
- A quick re-check 48 hours after any fix to confirm the correction propagated through metasearch.
Thirty to sixty minutes a month. That is the entire cost of not training your guests to distrust your direct rate.
A quick reality check on what this does and does not buy you
This audit will not magically make your direct channel the cheapest by law, and it will not “beat” the OTAs. What it does is keep your direct rate honest and competitive, surface the hidden wholesaler leaks before they compound, and give you documented leverage when a partner genuinely breaches. Pair that operational discipline with the demand-capture side — your name in search, your listing in AI answers, your Google Business Profile rate — and the direct channel starts to actually grow.
If you want the full picture of how OTAs intercept your demand in the first place, I broke that down in how OTAs steal your search traffic, and the companion to this piece on the direct-booking math of OTA commissions makes the dollars-and-cents case for why every point of leak matters at 15 to 25 percent commission.
The short version
Map every channel including the indirect ones. Standardize the test so you compare like for like. Capture one clean grid. Trace each gap to its real source before you act. Fix the source — usually your own settings or a bedbank, rarely the OTA you suspected. Then do it again next month.
It is unglamorous, it is repeatable, and it quietly protects the channel that keeps the most margin in your pocket.
If you would rather hand the monthly grid, the trace, and the remediation to someone who does this for independent hotels all day, that is exactly what we do. Book a call and let’s pressure-test your distribution before the next leak trains another guest to skip booking direct.
Start here: book a distribution audit or see how we tighten your direct channel with book-direct CRO.