The challenge
Seven sites had been generated quickly on a low-code platform. Booking flows charged guests through Stripe and held rooms in the Hostaway property-management system, but the code in production didn't always match the code in the repository, holds sometimes reserved nothing, and one Stripe account fanned every webhook out to five endpoints. Cookie banners recorded a choice nothing read. There was no GTM, GA4 or Search Console on six of the sites, and no content strategy separating properties that sit within 500 metres of each other.
What we built
- Booking-system audit and fixes, one site at a time — Traced every checkout end to end — Stripe session → Hostaway hold → booking record → confirmation — and fixed the cron authentication, webhook ownership checks, hold release, unauthenticated webhook path and anonymous refund route we found. Each site fully through before the next.
- Correct paid amounts in the PMS — Direct reservations now show the real amount paid in Hostaway, with a controlled test listing (invisible on every site) for end-to-end test bookings during agreed maintenance windows.
- Tracking stack from greenfield — One GTM container and GA4 property per site plus a network roll-up, cross-domain settings that include the payment domain so hub → hotel → checkout is one session, Consent Mode v2 wired to a banner that actually gates tags, Search Console DNS verification and sitemaps for all eight nodes.
- Anti-cannibalisation content plan — A property-positioning map (romance & wellness, family & themed, historic boutique, lakeside calm, culture & events, core-city apartments, bikes) and a keyword-to-page contract so each property owns its niche and the hub owns 'where to stay in Bruges'.
- Schema, GEO and Core Web Vitals per site — Hotel/LodgingBusiness, FAQPage, BreadcrumbList and Review schema, llms.txt and AI-crawler directives, WebP conversion and LCP/CLS fixes.
- Multilingual content architecture — Localised slugs, hreflang and x-default, per-language SEO titles across NL/EN/FR/DE/ES, and a plan to override single-language PMS room descriptions with per-market copy.
- Channel integration — A GetYourGuide supplier integration for the tour and bike products, with the vendor-side test-tool issue diagnosed from our server logs and documented for their support team.
How we worked
A written master plan and a phased cost/timeline document approved before any work started; an issues register with severity and status for every finding; a request tracker so the owner could see every open question and who owed the answer. Standing rule: never change PMS data without approval; fix any bug we find.
Outcome
Booking flows that record, confirm and reconcile correctly across the network, a measurement layer the group never had, and a content and SEO strategy in which seven neighbouring properties reinforce each other instead of cannibalising — delivered against a live, revenue-generating booking operation.

