Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

SEO case study · Kapana Courtyard Rooms

9-room guesthouse · Plovdiv · Bulgaria

How a nine-room Plovdiv guesthouse cut its OTA dependence with a clean rebuild

3.1×

Direct bookings from organic up 3.1x, over 7 months on the Signal plan.

Nine rooms. Nine keys. Each one a fix. Pick them up below.

iThe challenge

A lovely courtyard, rented back to them by the booking platforms.

A drag-and-drop site builder loaded 9 MB of images on mobile, ran four language versions with no hreflang and had a booking widget Google could not crawl. Nearly every booking came through OTAs at 18% commission.

Guests were finding Kapana Courtyard Rooms on the platforms, then paying the platforms. The guesthouse’s own site was slow on the phones people actually use while wandering Kapana, showed German visitors Bulgarian pages, and hid its rates inside a widget search engines could not open. The goal was not more traffic for its own sake: it was to make the direct route the easiest one to find.

Where bookings came from

Modelled share of all bookings, by channel

Before9% direct · 91% OTA
After month 727% direct · 73% OTA

Every OTA booking cost 18% commission.

iiThe diagnosis

The audit, written up like a guest register.

Technical

  1. 019.2 MB mobile page weight, 41 requests before first paint
  2. 02No hreflang on four language versions
  3. 03Staging subdomain indexed with 180 duplicate pages
  4. 04Booking iframe with zero crawlable rates

Local

  1. 01Business profile ‘Book’ button pointed to an OTA
  2. 02No Hotel or LocalBusiness structured data
  3. 03Address written three different ways across listings

Content

  1. 01All nine rooms on one gallery page
  2. 02German copy machine-translated, Turkish pages empty
  3. 03No content answering ‘where to stay in Kapana’

iiiThe key rack

Nine fixes, one per room. Press a key to open the door.

Hooks start empty. Drag the dial through the 7 months and watch each key come back as its fix ships.

Technical fix

01

Image weight

Scheduled · month 2

Before

9.2 MB of uncompressed JPEGs on the mobile homepage, full-size room photos sent to a 360px screen.

After (planned)

AVIF and WebP with responsive srcset, lazy-loaded galleries and a 38 KB hero.

9.2 MB → 640 KB

The single largest cause of the 6.8s mobile LCP.

ivThe strategy

Rebuild once, properly, in four languages.

Built on our Signal plan: technical foundations first, so every later page has something solid to stand on.

1

Site migration

Off the drag-and-drop builder onto a static, hand-built site. Every one of the 214 old URLs mapped to its new home with a 301, staging locked away, and rankings watched daily through cut-over.

2

Core Web Vitals

Images re-encoded and sized per device, render-blocking CSS and scripts removed, the hero preloaded. Field data, not lab scores, decided when a fix was done.

3

Hotel schema

Hotel, HotelRoom and Offer markup so search engines understand nine distinct rooms, their prices and amenities, and the business profile points to the direct booking page.

4

Hreflang

Four languages in their own subfolders, each page declaring its three siblings and an x-default, so German searchers get German pages instead of Bulgarian ones.

vThe stay

7 months, month by month.

  1. Month 1

    Check-in: the audit

    Full crawl of all four language versions, field Core Web Vitals pulled, booking funnel mapped from search to OTA. Every old URL logged for the redirect map.

    15 bookings · LCP 6.6s · 22 pages

  2. Month 2

    The rebuild and move

    Static rebuild off the site builder; images re-encoded; 214 redirects live at cut-over. Mobile LCP drops to 2.4s within the first field-data window.

    18 bookings · LCP 2.4s · 41 pages

  3. Month 3

    Four languages, four trees

    Bulgarian, English, German and Turkish moved to subfolders with reciprocal hreflang. Indexed pages climb from 41 to 68.

    22 bookings · LCP 2.3s · 68 pages

  4. Month 4

    A booking page Google can read

    Server-rendered rate pages replace the iframe; Hotel and HotelRoom schema shipped; business profile booking link moved off the OTA.

    27 bookings · LCP 2.1s · 84 pages

  5. Month 5

    Nine rooms, nine stories

    Individual room pages written in all four languages, plus old-town walking guides that link to the room closest to each sight.

    33 bookings · LCP 2s · 92 pages

  6. Month 6

    Hardening

    Third-party scripts cut from 11 to 3; INP under 200ms. LCP settles at 1.9s in field data.

    38 bookings · LCP 1.9s · 95 pages

  7. Month 7

    Check-out: the ledger

    Direct organic bookings reach 43 a month against a baseline of 14. Commission avoided annualises to roughly €14,800.

    43 bookings · LCP 1.9s · 96 pages

viThe ledger

What changed at check-out.

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

Direct organic bookings3.1x
02550Month 0: 14 direct bookings14BaseMonth 1: 15 direct bookingsM1Month 2: 18 direct bookingsM2Month 3: 22 direct bookingsM3Month 4: 27 direct bookingsM4Month 5: 33 direct bookingsM5Month 6: 38 direct bookingsM6Month 7: 43 direct bookings43M7
Mobile LCP6.8s → 1.9s
6.8s beforegood ≤ 2.5s · needle at 1.9s
Indexed language pages22 → 96
BG
EN
DE
TR

Indexed before (22)Newly indexed (74)

OTA commission saved / yr€14,800

29 extra direct bookings a month × 12 × €236 average stay × 18% commission that no longer goes to a platform ≈ €14,800 a year.

Channel mix, before9% direct · 91% OTA
Channel mix, after27% direct · 73% OTA
Beforeguesthouse kapana plovdiv
  1. 1large-booking-platform.exampleGuesthouses in Kapana, Plovdiv: book nowCompare 40+ properties. Prices include platform fees.
  2. 2travel-aggregator.example10 best guesthouses in Plovdiv old townDeals on guesthouses near the Roman stadium.
  3. 14kapana-courtyard.example › page-3?id=88HomeДобре дошли! Welcome! Willkommen! Hoş geldiniz!
Afterguesthouse kapana plovdiv
  1. 1large-booking-platform.exampleGuesthouses in Kapana, Plovdiv: book nowCompare 40+ properties. Prices include platform fees.
  2. 2kapana-courtyard.example › en › roomsKapana Courtyard Rooms: nine rooms around a Kapana courtyardQuiet courtyard rooms, 4 minutes from the Roman stadium. Best rate when you book direct.From €68 / nightCourtyard roomsFree cancellation
  3. 3travel-aggregator.example10 best guesthouses in Plovdiv old townDeals on guesthouses near the Roman stadium.

Rankings across four languages

Modelled Google positions, mobile, Plovdiv. “—” means not in the top 100.

SearchLangMonthly searchesBeforeAfter
guesthouse kapana plovdivEN590192
къща за гости капанаBG880111
pension altstadt plovdivDE320—3
plovdiv eski şehir otelTR480—4
quiet room old town plovdivEN140342
хотел стария град пловдивBG1300235
where to stay in plovdivEN1900—6
unterkunft plovdiv zentrumDE210484

Get a plan like this

A clean technical foundation, every language indexed, and a booking path search engines can read.

← Back to all case studies