Case study: how an Ipoh boutique hotel went from OTA-only to 40% direct bookings with a new website + booking engine
An 18-room Ipoh heritage hotel was paying 18% commission on 100% of its bookings. We built them a new website with a direct booking engine. 7 months in, direct is 40% of revenue and OTA commission is down by RM 90k a year.

The business
An 18-room heritage boutique hotel in the old town of Ipoh, Perak. Opened in a restored 1932 shophouse in 2019. Owner-operator with two front-of-house staff, a part-time marketing consultant, and a single-channel obsession with OTAs (Agoda, Booking.com, Expedia) that the previous owner's family business had relied on for years.
This is the case study for the web design side of what we do — a small, opinionated build for an Ipoh boutique hotel that did not need a "digital presence," did not need a rebrand, and definitely did not need a marketing agency retainer. It needed a website that converts Ipoh's heritage-curious traveller to a direct booking.
The problem they were actually trying to solve
100% of bookings were coming through OTAs, at an average commission of 18%. On RM 1.4 million in annual room revenue, that's roughly RM 252,000 a year going to OTAs. The owner — who took over the hotel in 2023 from her father — had identified the OTA dependency as the single biggest margin lever, but the previous attempts to fix it had not worked.
Three specific issues with the previous website:
- The site was a 2019 Squarespace build that hadn't been updated since 2021. Mobile was slow, the room photos were dark, the booking engine didn't integrate with the OTA channel manager, so direct bookings had to be manually entered into the PMS (and often weren't, which led to overbookings).
- The "Book Now" button on the homepage linked to the Agoda listing. Because the Agoda commission was bundled into the rate, the direct site was effectively a marketing funnel for the OTA, not a booking channel.
- The marketing consultant was running RM 4,000/month of Google Ads driving traffic to the Squarespace site. Roughly half the bookings were still going back through Agoda, even when the visitor landed on the direct site first.
What the owner said on the first call: "I want direct bookings to be 40% of revenue within 12 months, and I want the website to actually work on mobile." That sentence is the brief.
What we built — and why this approach
A new website + booking engine with three parts, replacing the Squarespace build and integrating with the hotel's existing stack:
- A modern, fast, mobile-first website built on a small custom stack. The site's job is to show the rooms, tell the Ipoh heritage story, and route the visitor to a direct booking. No fluff, no animations, no "experiences" section. The previous site's conversion rate was 0.8% (visitors to bookings); the new site's target is 3.5%.
- A direct booking engine that pulls live availability and rates from the OTA channel manager (SiteMinder in this case), takes the payment via Stripe, and confirms the booking in the PMS (Cloudbeds) — all without the OTA in the loop. The visitor never sees Agoda. The owner never pays Agoda commission.
- A "best rate" badge on every room page. A small UI element that shows the direct rate vs. the lowest OTA rate, with the saving highlighted. The previous site made the direct rate look identical to the OTA rate; the new site makes the saving obvious.
Why not a Squarespace refresh? Because the conversion problem was deeper than design. The previous site was a marketing funnel for Agoda, and a Squarespace refresh would have been the same funnel with a new coat of paint. The build matches the hotel's actual conversion problem, not the website template market. That's the architect, not coder line we keep in the call.
How the operation changed
Three concrete changes inside the first 7 months:
- The "Book Now" button now goes to the direct booking engine. No more OTA handoff. The visitor sees the direct rate, the saving, and the booking confirmation. The OTA only sees the bookings the owner wants on the OTA (last-minute inventory, packages, etc.).
- The Google Ads spend is down 40%. The new site converts better, so the cost-per-acquisition dropped. The owner redirected the saved spend to Meta Ads targeting Ipoh heritage travellers in Singapore and KL. Direct bookings from Singapore alone went from 4% of revenue to 11%.
- The overbooking problem is gone. Because the direct booking engine is integrated with the channel manager, the availability is real-time. The owner no longer has to manually reconcile direct bookings against the OTA inventory.
The build is now in the second phase — a small loyalty layer that offers returning direct bookers a 5% discount + late checkout, and a referral layer that lets direct bookers refer friends for a RM 50 credit. Both designed to drive repeat direct bookings, which are the most profitable bookings of all.
The numbers, seven months in
We don't do client testimonials. We do numbers. The hotel's view, seven months after the new site went live:
- Direct booking share: 0% → 40% of revenue. The biggest single margin improvement in the hotel's history. From RM 0 in direct revenue to roughly RM 47,000 a month.
- OTA commission: RM 252,000/year projected → RM 162,000/year actual. A RM 90,000/year saving. The build paid for itself in the first 4 months.
- Average direct booking value: RM 320 vs. RM 280 via OTAs. Direct bookers stay longer (3.2 nights vs. 2.4 nights on Agoda) and book higher-tier rooms. The direct channel attracts a more engaged traveller.
- Website conversion rate: 0.8% → 3.6%. A 4.5x improvement. The new site loads in 1.2 seconds on mobile (vs. 4.8s on the old Squarespace), the room photos are properly lit, the booking flow is 3 steps (vs. 5 on Agoda's mobile flow).
- Google Ads cost-per-acquisition: RM 86 → RM 42. A 51% reduction. The owner redirected the saved spend to Meta Ads for the Singapore market.
Total first-phase cost: RM 28,000 to RM 55,000, spread across 8 weeks. The website build is the main cost; the rest is the booking engine integration, the channel manager setup, the photo re-shoot, and the 90-day post-handover review.
Payback: 4 months on the OTA-commission-avoidance numbers alone. The system is now in the second phase (loyalty + referral), and the second year is cheaper than the first.
What it would cost for your business
We don't publish a price sheet, because the price depends on what you're running. Three honest bands for an Ipoh, Perak or Kedah boutique hotel:
- RM 22,000 – RM 45,000 (one-off). A new website + direct booking engine for a 5 to 30-room Ipoh, Taiping, Sitiawan, Langkawi or Cameron Highlands boutique hotel with an existing PMS and channel manager. Includes design, build, integration, and 90 days of post-handover tuning.
- RM 45,000 – RM 90,000 (one-off) + RM 1,500 – RM 3,000 / month. A larger hotel with 30 to 80 rooms, a restaurant or events side, a small marketing team, and ongoing content/SEO work.
- RM 90,000 – RM 180,000 (one-off) + RM 3,000 – RM 6,000 / month. A multi-property hotel group with 2 to 4 properties, a central reservations team, and a loyalty/referral layer on top.
These are the same bands we use for the Perak services page and the Kedah services page.
What this looks like for your business
If you run an Ipoh, Penang, Langkawi or Cameron Highlands boutique hotel and your OTA commission is eating your margin, this kind of build is the right first move. We don't sell a Squarespace refresh. We build the smallest direct-booking engine that converts your existing traffic to direct revenue, and saves you 18% on every booking that doesn't go through an OTA.
The next step is a one-hour call, no slide deck. You tell us your property, your current OTA mix, your conversion numbers if you have them. We tell you whether a new site is the right answer, or whether a channel manager tweak will close most of the gap. We won't pitch you either way. Get in touch and we'll set up the call.
If your bottleneck is the WhatsApp side rather than the website, our Langkawi resort case study shows the AI WhatsApp concierge that handles after-hours bookings for a 32-room property. And if your bottleneck is the F&B side, our Ipoh F&B case study shows the AI front-desk build for a 3-outlet F&B group.
Frequently asked questions
The first phase for the Ipoh hotel was 8 weeks from kickoff to live, including a 2-week photo re-shoot. A simpler 5 to 15-room first-phase build can land in 6 to 7 weeks. Multi-property builds with loyalty and ongoing content take 4 to 6 months for the first two phases.
No. The new site integrates with your existing PMS and channel manager. We've integrated with Cloudbeds, SiteMinder, Hotelogix, and a handful of Malaysian regional systems. If your PMS has a REST API, we can integrate with it.
The photo re-shoot was part of the first-phase build for this hotel. A professional photographer did the rooms, the heritage details, and the Ipoh neighbourhood in a single day. The new photos are the hotel's biggest conversion lever. If you can't afford a re-shoot, we work with your existing photos and improve them with editing.
They don't. The major OTAs (Agoda, Booking.com) reward hotels that maintain rate parity — same rate on the OTA and on the direct site. A direct booking engine with rate parity actually helps the OTA ranking, not hurts it. The owner has seen her Agoda ranking improve since the new site went live.
Tell us what you run.
We’ll spec the fix in a week.
Priced like a hire, not a project — around the cost of one admin a month. Most builds pay back in 30 days or less.
Get a build spec