Skip to main content

กำลังโหลด...

Southern Whale
Free SEO Audit
Tourism / Ferry & Transfer Service Chumphon Custom Booking Platform + SEO + Direct Booking Funnel

Case Study: Chumphon ferry & dive transfer booking system grows direct bookings 240% in 5 months

Ferry and cross-strait transfer operator in Chumphon province (client name withheld for confidentiality)

+1,850%
Organic Traffic
From 240 to 4,680 visits/month within 5 months
+240%
Direct Bookings
Direct bookings up; OTA dependency dropped from 75% to 48%
0
Double-booking Incidents
Zero overbookings since real-time seat inventory launched
12 minutes
Admin LINE Response
Down from a 3-hour average; chatbot handles 55% of FAQ queries

1. The challenge

The operator has been running ferry and minivan transfers from a Chumphon-province pier to destinations in Surat Thani province for over 9 years. They operate 2 catamarans and 1 speedboat, totaling 180-220 seats per departure, with 3 departures/day during high season (06:00, 13:00, 17:00). Crossings take 2.5-3 hours depending on swell.

The dominant problem: OTAs and central agents — 12Go Asia, Bookaway, and local consolidators — accounted for over 75% of all bookings, each taking 18-25% commission. For a margin-thin business (catamaran tickets at THB 600-900/person against fuel + crew + maintenance costs), that commission share was eating over 35% of monthly net revenue.

Operationally, a 4-person admin team spent 7+ hours/day handling 150+ daily LINE OA + Facebook Inbox messages — repeat questions on schedule, fares, pickup points, transfer-from-airport bundles, and onward island-hop pricing. The bigger problem: the ferry schedule lived in a Google Sheet shared across 4 admins with no locking mechanism. During high season they were hitting 4-5 double-bookings per week, with walk-up passengers arriving at the pier to find no seat. Each incident generated bad reviews on TripAdvisor and Google that had a lasting ranking impact.

A second issue: 35-40% of foreign customers (heading to PADI Open Water — the world’s largest certification market) wanted to pay by credit card in USD/EUR, but the legacy system only accepted Thai bank transfers. Backpackers from Australia, Germany, and the UK overwhelmingly avoided paying direct and went through 12Go Asia instead — even at THB 80-150 more — because of card acceptance and refundability.

2. Why the previous approach failed

The client had tried DIY SEO using a Wix template purchased in 2022 with the Yoast plugin. Wix is a poor fit for technical SEO — Core Web Vitals were consistently bad (LCP 6.1s, CLS 0.42), Google crawled slowly and indexing was patchy. Core keywords like “ferry chumphon” or “ตั๋วเรือชุมพร” sat on pages 4-6, while 12Go Asia and Bookaway dominated page 1 with high domain authority and tens of thousands of programmatic-SEO pages.

A Google Ads test ran at THB 28-45 CPC, conversion rate 1.1%, producing a CAC of THB 1,800-2,400/booking. Against a THB 700 ticket, that’s an instant loss. Facebook Ads aimed at foreign tourists searching for the destination converted poorly — intent was too low because users were still in research mode.

The earlier booking setup was Cognito Forms feeding a Google Sheet manually — no real-time inventory, so admins updated the sheet after each booking. Different tabs showed different seat counts, and confirming bank slips meant 5-8 minutes of manual eyeballing per slip.

3. The Southern Whale approach (4 Pillars)

After 2 discovery sessions with the owner and admin lead, we shadowed pier operations in Chumphon for a full day before designing the architecture.

Pillar 1: Real-time seat inventory engine — Chose Next.js 14 + tRPC + PostgreSQL + Cloudflare Durable Objects for WebSocket broadcast. Every browser session sees seat-count updates instantly when a new booking lands, plus DB-level row locking prevents race conditions when 2 admins book simultaneously.

Pillar 2: Bilingual SEO content hub — Astro static site because Wix had no shot at competing — Astro ships pure HTML at LCP <1.5s. Thai + English in /th and /en sub-path strategy. Wrote 18 launch articles, including “Chumphon Ferry Complete Guide”, “How Long is the Ferry from Chumphon Pier”, “Best Time to Visit Gulf Islands from Chumphon”, and “PADI Dive Schools — Which is Right for You”, building topical authority across top-of-funnel intent.

Pillar 3: Multi-currency payment + LINE bot — PromptPay for Thai customers + Stripe for foreigners accepting Visa/Mastercard/Amex in USD, EUR, GBP, AUD, plus a LINE intent-classification bot handling the 14 most-frequent FAQs so admins focused only on complex bookings.

Pillar 4: Schema + GBP local signal — Added Schema FerryReservation + LocalBusiness + FAQPage + AggregateRating, optimized GBP categories as “Ferry Service” + “Boat Tour Agency”, and submitted citations to 35+ directories — Thai (TripAdvisor TH) and international (Klook, GetYourGuide, Viator).

Tech rationale: Astro for the public site + Next.js for the backend instead of a monolith because public pages need static-gen for SEO speed, while the booking flow needs stateful + real-time — Next.js + tRPC gives type-safe contracts that cut frontend/backend bugs during dev. Hosting on Cloudflare Pages + Workers came in at ~USD 30/month vs Vercel pro USD 20 × 4 seats = USD 80.

4. The build (week-by-week)

Week 1-2: Discovery + architecture — 1-day pier shadow, 2 stakeholder interviews, 18-table database schema (bookings, seats, departures, vessels, customers, payments, slip_verifications, line_messages, etc.), keyword research on 240+ keywords across 4 clusters, competitor analysis on 12Go Asia + Bookaway + Lomprayah.

Week 3-4: Backend core + inventory engine — Next.js + tRPC + Prisma migrations, 2-tier authentication (admin + partner agency), booking domain logic + seat-level locking, payment integration with PromptPay QR generator + Stripe Checkout (multi-currency).

Week 5-6: Frontend booking flow + Astro site — Customer-facing 3-step booking (select trip → enter details → pay), mobile-first Thai UI admin dashboard, Astro static site Thai + English version, 28-route 301 redirect map from the old Wix URLs.

Week 7-8: Real-time + LINE + OCR — WebSocket inventory broadcast via Durable Objects, LINE webhook + intent classification, FAQ chatbot with 14 question patterns, OCR slip verification (Google Vision parsing for SCB/Kbank/Krungthai) + manual review queue for <90% confidence.

Week 9: Content + GBP + UAT — Published 18 SEO content-hub articles (12 Thai + 6 English), GBP optimization, citation submission. UAT with 4 admins found 11 bugs (4 high, 7 medium), all resolved in 5 days.

Week 10: Launch + training — Soft launch at 30% traffic via feature flag for 4 days, training the admin team across 5 sessions (1.5 hours/session in Thai), full launch + 24-hour monitoring, knowledge transfer + 9 Thai-language video tutorials.

Post-launch we kicked off a 6-month retainer — 5 articles/month (Thai 3 + English 2), backlink outreach to 15-20 travel-blog contacts/month, weekly GBP posts, and performance monitoring.

5. Obstacles + pivots

Obstacle 1: Sea conditions force last-minute schedule changes — During monsoon (Nov-Jan), departures get delayed or canceled often. The booking system needed rebooking + refund flows admins could trigger in 1-2 clicks. We added a “Trip Status Override” feature where the owner approves cancellation/rescheduling, with push notifications via LINE to every affected passenger in a single batch.

Obstacle 2: Destination PADI dive school requested a partnership tier — In week 6 a dive school asked to become a partner sending customers through the system (8% commission). Not in original scope. We did a contract amendment +THB 30,000, timeline +4 days, adding an agency portal + commission tracking — and it became a new revenue stream the owner hadn’t planned for.

Obstacle 3: Stripe multi-currency settlement was slow at 7-9 days — Admin had cash-flow concerns. We resolved this by opening a Stripe Express account that settles in Thailand in 2 days + setting up a THB 200,000 buffer fund for the first 6 weeks of transition.

Obstacle 4: Google indexing was slow for the first 3 weeks — A new site Google hadn’t trusted yet. We rapid-indexed via sitemap submission, fast backlink outreach to 8 Thai travel directories, and daily GBP posts for the first 14 days. By week 4 “ตั๋วเรือชุมพร” ranked on page 1.

6. Post-launch + ongoing

Five-month results:

  • Organic traffic 240 → 4,680/month (+1,850%)
  • Direct bookings +240%; OTA dependency dropped from 75% to 48% (target: 40% within year 2)
  • Double-booking incidents 4-5/week → 0
  • Admin LINE response 3 hours → 12 minutes (chatbot handles 55%)
  • Slip verification 5-8 minutes/slip → 20 seconds (OCR auto-clears 88%)
  • English version accounts for 35% of direct bookings (previously 0% — there was no English site)
  • LCP 6.1s → 1.3s

Lessons learned: The ferry market competes on trust signals, not price — foreigners weigh reviews, safety record, and bilingual content as decision factors more heavily than fare. Our ferry tickets are priced 5-8% above the average, yet convert better because trust signals are complete. English content + a professional-looking Stripe checkout helped digital nomads and backpackers feel comfortable.

A second lesson: schedule volatility in ferry businesses means a good solution has to handle disruption automatically, not just optimize the happy path.

Ongoing engagement: Now in month 7 of the retainer — discussing phase 2 to extend the website + booking system to a destination dive school partner, using the same playbook but tuned to the dive-certification student persona (ages 22-32, 70% foreign). See more in other case studies.

Have a similar project?

Free consultation · limited to 3–5 projects per month