1. ปัญหาที่ลูกค้าเจอ
ผู้ประกอบการรายนี้เปิดให้บริการเรือเฟอร์รี่และ minivan transfer จากท่าเรือในจังหวัดชุมพรไปยังปลายทางในจังหวัดสุราษฎร์ธานีมานานกว่า 9 ปี มีเรือ catamaran 2 ลำ และเรือ speed boat 1 ลำ รวมรองรับ 180-220 ที่นั่ง/รอบ ออกเดินทางวันละ 3 รอบช่วง high season (06.00, 13.00, 17.00) ใช้เวลาเดินทาง 2.5-3 ชั่วโมงตามสภาพคลื่น
ปัญหาที่หนักที่สุดคือสัดส่วน OTA และ agent กลางอย่าง 12Go Asia, Bookaway และผู้รวบรวมท้องถิ่นครองช่องทางขายกว่า 75% ของ booking ทั้งหมด แต่ละ booking หัก commission 18-25% สำหรับธุรกิจที่ margin บางอยู่แล้ว (ตั๋วเรือ catamaran 600-900 บาท/คน ต้นทุนเชื้อเพลิง + ค่าจ้างกัปตัน + ค่าบำรุงรักษา) การเสีย commission ขนาดนี้กินกำไรไปกว่า 35% ของรายได้สุทธิรายเดือน
ในแง่ operations ทีม admin 4 คนใช้เวลากว่า 7 ชั่วโมง/วันจัดการ inquiry ผ่าน LINE OA + Facebook Inbox 150+ ข้อความ/วัน คำถามซ้ำๆ เรื่องตารางเรือ, ราคา, จุดรับ-ส่ง, ราคารวม transfer จากสนามบิน, ราคาขึ้นเกาะปลายทาง + ต่อเรือไปเกาะใกล้เคียง ปัญหาใหญ่กว่าคือตารางเรือทำใน Google Sheets share ระหว่างทีม 4 คน ไม่มี locking mechanism — เจอ double-booking 4-5 ครั้ง/สัปดาห์ในช่วง high season ลูกค้า walk-in มาถึงท่าเรือแล้วไม่มีที่นั่ง สร้าง bad review บน TripAdvisor และ Google ที่ส่งผลต่อ ranking ยาว
อีกประเด็นคือลูกค้าฝรั่ง 35-40% ที่จะไปสอบ PADI Open Water (ตลาด certification ที่ใหญ่ที่สุดในโลก) ต้องการช่องทางจ่ายบัตรเครดิตในสกุล USD/EUR แต่ระบบเดิมรับแค่โอนเงินไทย ทำให้กลุ่ม backpacker จาก Australia, Germany, UK ส่วนใหญ่หลีกเลี่ยงจ่ายตรง เลือกผ่าน 12Go Asia แทนแม้แพงกว่า 80-150 บาท เพราะรับบัตรและ refund ได้
2. ทำไม Solution เดิมไม่ได้ผล
ลูกค้าเคยลอง SEO ทำเองโดยเอา Wix template ที่ซื้อมาช่วง 2022 ติด Yoast plugin แต่ Wix ไม่ใช่ platform ที่เหมาะกับ SEO เชิงเทคนิค — Core Web Vitals แย่ตลอด (LCP 6.1s, CLS 0.42) Google crawl ช้าและ index ไม่เต็ม สำหรับ keyword หลักอย่าง “ferry chumphon” หรือ “ตั๋วเรือชุมพร” หล่นอยู่หน้า 4-6 ขณะที่ 12Go Asia, Bookaway ครองหน้าแรกด้วย domain authority สูงและ programmatic SEO หลายหมื่นหน้า
ลอง Google Ads ยิง keyword CPC 28-45 บาท conversion rate 1.1% CAC ออกมาที่ 1,800-2,400 บาท/booking ตั๋วราคา 700 บาทขาดทุนทันที ส่วน Facebook Ads ตี audience นักท่องเที่ยวฝรั่งที่ค้นหาปลายทาง — intent ต่ำเพราะคนยังอยู่ research phase ไม่พร้อมจอง
ระบบ booking ที่ใช้ก่อนหน้าเป็น Cognito Forms ส่งเข้า Google Sheet manual — ไม่มี real-time inventory แปลว่า admin ต้องไป update sheet ทุกครั้งที่ confirm booking ใหม่ คนคนละ tab เห็นเลขที่นั่งคนละจำนวน อ่านสลิปโอนเงินด้วยตา 5-8 นาที/สลิป
3. แนวทางของ Southern Whale (4 Pillars)
หลัง discovery session 2 ครั้งกับเจ้าของและ admin lead เรา shadow operation ที่ท่าเรือในจังหวัดชุมพร 1 วันเต็มก่อนวางสถาปัตยกรรม
Pillar 1: Real-time seat inventory engine — เลือก Next.js 14 + tRPC + PostgreSQL + Cloudflare Durable Objects สำหรับ WebSocket broadcast ทุก browser session เห็น seat count update ทันทีเมื่อมี booking ใหม่ + DB-level row locking ป้องกัน race condition ตอน 2 admin จองพร้อมกัน
Pillar 2: Bilingual SEO content hub — Astro static site เพราะ Wix ไม่มีทาง compete ได้ — Astro ส่ง pure HTML LCP <1.5s รองรับ Thai + English ใน /th และ /en เป็น sub-path strategy เขียน 18 บทความเริ่มต้น เช่น “Chumphon Ferry Complete Guide”, “How Long is the Ferry from Chumphon Pier”, “Best Time to Visit Gulf Islands from Chumphon”, “PADI Dive Schools — Which is Right for You” ทำ topical authority ครอบคลุม top-of-funnel intent
Pillar 3: Multi-currency payment + LINE bot — รับ PromptPay สำหรับลูกค้าไทย + Stripe สำหรับฝรั่งรับ Visa/Mastercard/Amex ใน USD, EUR, GBP, AUD + บอท LINE intent classification 14 FAQ ยอดฮิตให้ admin โฟกัสที่ booking complex เท่านั้น
Pillar 4: Schema + GBP local signal — ใส่ Schema FerryReservation + LocalBusiness + FAQPage + AggregateRating optimize GBP categories เป็น “Ferry Service” + “Boat Tour Agency” submit citations 35+ directory ทั้ง Thai (TripAdvisor TH) และ international (Klook, Get Your Guide, Viator)
Tech rationale: เลือก Astro หน้า public + Next.js backend แทน monolith เพราะหน้า public ต้องการ static-gen สำหรับ SEO speed ส่วน booking flow ต้อง stateful + real-time ใช้ Next.js + tRPC type-safe ลด bug ระหว่าง dev frontend/backend host บน Cloudflare Pages + Workers ค่า hosting ~$30/เดือน vs Vercel pro $20 × 4 seat = $80
4. กระบวนการทำงาน (Week-by-Week)
Week 1-2: Discovery + Architecture Shadow ที่ท่าเรือ 1 วัน, stakeholder interview 2 ครั้ง, database schema design 18 tables (bookings, seats, departures, vessels, customers, payments, slip_verifications, line_messages, ฯลฯ), keyword research 240+ keywords แบ่ง 4 cluster, competitor analysis 12Go Asia + Bookaway + Lomprayah
Week 3-4: Backend Core + Inventory Engine ตั้ง Next.js + tRPC + Prisma migrations, authentication 2-tier (admin + partner agency), booking domain logic + seat-level lock, payment integration PromptPay QR generator + Stripe Checkout (multi-currency)
Week 5-6: Frontend Booking Flow + Astro Site Customer-facing 3-step booking (เลือก trip → ใส่ข้อมูล → จ่ายเงิน), admin dashboard mobile-first Thai UI, Astro static site Thai + English version, redirect URLs Wix เก่า 301 → ใหม่ 28 routes
Week 7-8: Real-time + LINE + OCR WebSocket inventory broadcast ผ่าน Durable Objects, LINE webhook + intent classification, FAQ chatbot 14 คำถาม, OCR slip verification (Google Vision SCB/Kbank/Krungthai parsing) + manual review queue สำหรับ confidence <90%
Week 9: Content + GBP + UAT เผยแพร่ 18 บทความ SEO content hub (12 Thai + 6 English), GBP optimization, citations submission, UAT กับ admin 4 คนเจอ bug 11 ตัว (4 high, 7 medium) แก้หมดใน 5 วัน
Week 10: Launch + Training Soft launch 30% traffic ผ่าน feature flag 4 วัน, training admin 5 sessions (1.5 ชั่วโมง/session ภาษาไทย), full launch + 24-hour monitoring, knowledge transfer + Thai video tutorial 9 คลิป
หลัง launch เริ่ม 6-month retainer ทำ content monthly 5 บทความ (Thai 3 + English 2), backlink outreach ไป travel blog 15-20 contact/เดือน, GBP post รายสัปดาห์, performance monitoring
5. Obstacles + Pivots
Obstacle 1: คลื่นทะเลทำให้ตารางต้องเปลี่ยนกะทันหัน — ช่วง monsoon (พ.ย.-ม.ค.) เรือเลื่อนหรือยกเลิกได้บ่อย ระบบ booking ต้องรองรับ rebooking + refund flow ที่ admin ทำได้ใน 1-2 คลิก เพิ่ม “Trip Status Override” feature ที่ owner approve การยกเลิก/เลื่อนได้พร้อม push notification ผ่าน LINE ถึงผู้โดยสารทุกคนใน batch เดียว
Obstacle 2: ลูกค้า PADI dive school ปลายทางขอ partnership tier — Week 6 มี dive school ติดต่อมาขอเป็น partner ส่งลูกค้าผ่านระบบ (commission 8%) ไม่ได้อยู่ใน scope เดิม ทำ contract amendment +30,000 บาท timeline เลื่อน 4 วัน เพิ่ม agency portal + commission tracking — กลายเป็น revenue stream ใหม่ที่เจ้าของไม่ได้คาดหวัง
Obstacle 3: Stripe multi-currency settlement ช้า 7-9 วัน — admin กังวลเรื่อง cash flow แก้โดยเปิด Stripe Express account ที่ settle ในไทย 2 วัน + ตั้ง buffer fund 200,000 บาทสำหรับช่วงเปลี่ยนผ่าน 6 สัปดาห์แรก
Obstacle 4: Google indexing ช้า 3 สัปดาห์แรก — Site ใหม่ Google ยังไม่ trust ทำ rapid indexing โดย submit sitemap, ขอ backlink เร็วจาก travel directory ไทย 8 แห่ง, GBP post รายวัน 14 วันแรก สัปดาห์ที่ 4 keyword “ตั๋วเรือชุมพร” ติด page 1
6. Post-launch + Ongoing
ผลภายใน 5 เดือน:
- Organic traffic 240 → 4,680/เดือน (+1,850%)
- Direct booking +240% OTA dependency ลดจาก 75% เหลือ 48% (เป้า 40% ภายในปี 2)
- Double-booking incidents 4-5 ครั้ง/สัปดาห์ → 0
- Admin LINE response 3 ชั่วโมง → 12 นาที (chatbot handle 55%)
- Slip verification 5-8 นาที/สลิป → 20 วินาที (OCR auto 88%)
- ตั๋ว English version booking 35% ของ direct booking (ก่อนหน้านี้ 0% เพราะไม่มี English site)
- LCP 6.1s → 1.3s
Lessons learned: ตลาดเรือข้ามฟากแข่งที่ trust signals ไม่ใช่ราคา — ลูกค้าฝรั่งดู review + safety record + bilingual content เป็น decision factor มากกว่าราคา ตั๋วเฟอร์รี่เราตั้งสูงกว่าค่าเฉลี่ย 5-8% แต่ conversion สูงกว่าเพราะ trust ครบ การมี English content + Stripe ที่ดูเป็นมืออาชีพช่วยให้ digital nomad/backpacker market วางใจ
อีกบทเรียนคือ “schedule volatility” ในธุรกิจ ferry — solution ที่ดีต้องรับมือกับ disruption ได้อัตโนมัติ ไม่ใช่แค่ optimize happy path
Ongoing engagement: ปัจจุบันลูกค้าเป็น retainer client เดือนที่ 7 — กำลังพูดคุย phase 2 ขยายไปทำเว็บ + booking ให้ partner dive school ปลายทาง ใช้ playbook เดียวกันแต่ปรับ persona เป็น dive certification student (อายุ 22-32 ปี ฝรั่ง 70%) ดูเพิ่มเติมที่ case studies อื่น