Skip to main content
Case study

Hoi An Vibes Tours

YEAR
2026
ROLE
Solo — site, SEO, content
STACK
Next.js · WordPress · Local SEO · Schema / AEO · Content
▸ Results

The numbers, in the open.

Straight from the live dashboards. Tap any panel to read it full-size.

Hoi An Vibes Tours is a private day-trip operator in central Vietnam — Hoi An, Đà Nẵng, Huế, My Son and Cham Island — run by Tom, a licensed local guide who has been showing people around since 2019. He had the guiding and the five-star reviews; what he didn't have was a site that could be found and booked. I built it: the site, the local SEO, and the content — end to end. Twice, as it turned out — it shipped on WordPress and now runs on Next.js.

The brief, in one line

A great local guide is invisible online until search can find him. The job was to turn a trusted, reviewed guide into something a traveller planning a Hoi An trip actually lands on — and then messages.

Travel search was the channel

For a private-tour business, the customer is a traveller Googling (and now AI-asking) "things to do in Hoi An," "Hoi An day tours," "My Son private tour" weeks before they arrive. So most of the work was being the answer:

  • A page per route. Six of them — Hoi An Highlights, the countryside, My Son Sanctuary, Da Nang, Hue and the Hai Van Pass, Cham Island — each with its own price, duration and itinerary rather than one undifferentiated "tours" page, plus a custom-route path for anything outside the six.
  • Local + travel SEO on a front end that ships full HTML on first load, so both Google and the AI answer engines get the whole page without executing anything.
  • Structured data: a TravelAgency / LocalBusiness graph with the real address and coordinates, plus a Person entity for Tom — because for a one-guide operation, the guide is the brand, and that's the entity a model needs to connect the reviews to.
  • A travel-guide blog on local culture and practicalities — Phuc Kien Assembly Hall, Tết rituals in the Old Town — that earns the long-tail "what to do in…" searches a tour page never will.

Built to get a message, not a bounce

A tour booking starts as a conversation, so the site funnels into one: a WhatsApp-first enquiry flow plus a planning form, hotel-pickup and "honest price, no tourist traps" messaging, and the proof placed where it reassures — 5.0 on Google, 20 Tripadvisor reviews, and the GetYourGuide listing for travellers who would rather book through a platform they already trust. The path from interested to first message is one tap.

Then I rebuilt it on Next.js

The first version was WordPress, which was the right call to get a working, editable site in front of travellers quickly. It was the wrong call to keep. A tour site's whole job is to be fast for someone on hotel wifi and fully readable to a crawler on the first response, and WordPress made me fight the theme and the plugin stack for both. So I rebuilt it on Next.js: statically rendered, no plugin layer between the content and the HTML, and the structured data written as part of the page rather than generated by an SEO plugin I don't control.

That's the honest version of the lesson — the CMS that gets you live fastest is rarely the one that makes the page fastest, and on a site whose only channel is search, that trade eventually has to be paid back.

What search has done with it

Small numbers, but a clear shape. In the 28 days to 30 July the site earned 10 clicks from Google. In the 28 days to 2 October it earned 59 — close to 6× — on 4,349 impressions, up from 1,037. The Search Console milestone log shows when it turned: five badges in September alone, 20 clicks on the 6th through 60 on the 29th.

A chart of daily Google Search clicks to hoianvibestours.com from 3 July to 2 October 2026: near zero through July and August, then a steady lift from early September
Daily clicks, 3 Jul – 2 Oct 2026, from the Search Console export. 10 clicks in the first 28 days, 59 in the last 28.

The query that matters most is the one the brief was written around. For "hoi an private tour", the homepage now shows up first on a live Google search, above Withlocals and Tripadvisor. I'd rather not oversell that screenshot: averaged over 90 days the query sits at position 7.7, and the click count on it is still in single digits. But impressions on it are up 78%, the average is moving the right way, and a one-guide business sharing a page with the platforms is the whole point of the build.

The blog is pulling its weight the other way — reach rather than bookings. The Phuc Kien Assembly Hall guide alone earned 1,800+ impressions, a lot of them from German, Spanish and Italian searches for the hall. Those travellers aren't buying a tour today; they're learning Tom's name.

Where it stands

The foundation is live at hoianvibestours.com on the Next.js build: the six tour pages, the schema, the blog, the booking funnel. It's early — the compounding levers (more reviews, the Google Business Profile, links from travel sites) are the client's to pull, and that's where local travel authority is actually built. The guiding was already five-star; now it can be found.


Related writing: The fence around the machine — on why owning your direct-booking channel is the moat that compounds.