A guest at checkout turns her phone round to show you. She paid ₹3,990 on an OTA for the room your own website sells at ₹4,200. She wasn't trying to catch you out. She compared, as careful guests do, and the OTA got the booking and its commission. This post explains why prices drift apart, how to check yours like a guest, and how to close a gap with one formula.
The gap that costs you is an OTA cheaper than your own site
Not every gap is a problem. When your website is cheaper than the OTAs, that is the goal: guests who compare find their best price on your own page. The gap that hurts runs the other way.
When an OTA shows a lower price than your website, the damage adds up:
- The guest books on the OTA, and you pay commission on a booking that could have been direct.
- The guest learns that your website is not the place to book, so next time they go straight to the app.
- On Google's hotel results, the gap sits in plain view, with your own link on the same card.
We covered the commission side in how to increase direct bookings. This post is about the price itself.
Why prices drift apart when nobody changed them
Most gaps are nobody's decision. They creep in from five places, and each one needs a different fix.
The OTA runs its own discount
OTAs run sales, member prices and mobile-only deals. Some are paid for by the OTA out of its commission. Others are promotions that someone at your hotel signed up for in the extranet, and those come out of your payout. Either way, the guest sees a price below your website.
A rate plan is mapped to the wrong price
A channel manager sends each of your rate plans to a matching plan on the OTA. If the OTA's room-only plan is mapped to the wrong plan at your end, the OTA shows a price nobody chose. An old plan that still sells last season's price does the same.
Someone edited one extranet by hand
A manager drops the price on one OTA's extranet for a slow weekend and forgets to change it back. Nothing in your own system shows the change, so the low price sits there until a guest finds it.
The channel markup is missing or too small
Channels should carry a markup above your own price, to pay for their commission and their sale campaigns. With no markup, an OTA's 10% sale lands straight below your website. Size the markup from your own numbers: the commission you pay and the sales you usually join.
Taxes are shown differently
One site shows the price before tax, and another shows the total with tax. The same room can then look cheaper on one site when it isn't. Always compare the final price the guest pays.
Check your prices the way a guest does
You can't fix a gap you haven't seen. Set aside half an hour and check your own hotel from the guest's side of the screen.
- Pick three dates. Choose a weekday next week, a Saturday next month and one night in your peak season.
- Open a private window on your phone. That shows what a new guest sees. Then check once more while logged in, because members may see a lower price.
- Search your hotel everywhere it sells. Check each OTA, Google's hotel results and your own website.
- Match every detail. Use the same room type, meal plan, dates, number of guests and cancellation terms.
- Write down the final price with tax for the whole stay. Note any label on it, such as "deal", "member price" or "mobile price".
Worked example
One Saturday, four prices
For example, your notes for one Saturday might look like this.
| Where | Room and plan | Final price with tax | Label |
|---|---|---|---|
| Your website | Deluxe, room only, free cancellation | ₹4,200 | none |
| OTA A | Deluxe, room only, free cancellation | ₹3,990 | Deal |
| OTA B | Deluxe, room only, free cancellation | ₹4,400 | none |
| OTA C | Deluxe, room only, free cancellation | ₹4,350 | none |
OTA A is ₹210 below your website, and the "Deal" label tells you where to look first: its promotions page in the extranet.
Fix the cause with one base rate and two prices
The lasting fix is to stop setting each channel's price by hand. Work out one price for the night from your base rate, then let two prices leave on purpose. Channels get a channel markup that pads for their commission and their sale campaigns. Your website gets a website discount, so booking direct is always the better deal.
Worked example
One night, two prices
In this example, prices are before tax. The Deluxe for Saturday is priced at ₹4,000, the channel markup is 15%, and the website discount is 5%.
| Step | Channels | Your website |
|---|---|---|
| Your price for the night | ₹4,000 | ₹4,000 |
| Channel markup of 15% | ₹4,600 | no markup |
| Website discount of 5% | no discount | ₹3,800 |
| An OTA then runs a 10% sale | ₹4,140 | ₹3,800 |
Even after the OTA's sale, your website stays ₹340 cheaper, and the OTA's price still sits above the ₹4,000 you set.
In ZimmerStack, you set the channel markup once for the property. Website discount rules can apply to every night, or only to nights within a set number of days of arrival. The percent comes off first, then the rupee amount. A website floor stops any discount from pushing the price too low.
The same idea covers your rate plans. If breakfast and extra guests follow the base through a plan adjustment, every plan keeps its place on every channel. We walk through that in one base rate for every rate plan.
Steer what one OTA shows with a single percent
Sometimes one OTA still shows a price you didn't expect, because of its own discount or the way it adds tax. You can steer that one channel with a rule of its own.
Worked example
Steering one OTA
In this example, OTA A shows your Deluxe at ₹3,600 with tax, and you want guests there to see ₹4,000.
₹4,000 ÷ ₹3,600 = 1.111. Take away 1 and you get 0.111, so you set that channel's rule to increase by 11.1%.
The formula works the other way too. If OTA B shows ₹5,000 and you want ₹4,500, then ₹4,500 ÷ ₹5,000 − 1 = −0.10, so you set a rule to decrease by 10%.
Most OTA discounts and taxes are a percentage of what you send, so one percent rule keeps working across your nights. Check again after the next price update, and again whenever the OTA changes a campaign.
In ZimmerStack's channel manager, each OTA can carry its own rule: increase or decrease by a percent or a fixed amount. The rule sheet has a small calculator for this. You type in the price the OTA shows with tax, and it works out the percent for you.
Parity is a rule you choose, market by market
Rate parity is a term in some OTA contracts. No law requires it, and some countries limit those clauses. In the EU, the Digital Markets Act has stopped Booking.com from requiring parity since late 2024. In India, the Competition Commission of India ordered MakeMyTrip and Goibibo in 2022 to drop parity terms from their hotel agreements.
Your own contracts still matter, so read the parity clause in each one. Then choose a rule for each market, and set your prices to match it:
- Where you are free to set your own prices, keep your website a little below the OTAs.
- Where a contract asks for parity, keep your website equal to the OTAs, and never above them.
- Everywhere, keep the OTAs close to each other, so no single app undercuts the rest.
- Ask what each contract says about private offers, such as a price you send a past guest on WhatsApp.
Your own website should never be the dearest place to book your own room.
A channel manager that sends every price from one place makes this far easier to keep. What a channel manager does explains the basics.
See both prices on your own numbersEnter a base rate, a channel markup and a website discount, and see what channels and your website would show.Open the pricing labWhat to check this week
- Search your own hotel as a guest. Use three dates and a private window on your phone.
- Write down every final price with tax. Keep the room, plan, guests and cancellation terms the same.
- Name the cause of each gap. Is it an OTA discount, a plan mapping, an extranet edit, the markup or the way tax is shown?
- Fix the cause first. Set a channel markup and a website discount, then use the percent formula for any OTA that still sits low.
- Read the parity clause in each OTA contract. Decide your rule for each market, and write it down where your team can see it.
