ปัญหาที่ลูกค้าเจอ
รีสอร์ทบูทีคตั้งอยู่ริมหาดในจังหวัดนครศรีธรรมราช ห่างจากท่าเรือชมโลมาสีชมพู (pink dolphin) ในจังหวัดเดียวกันไม่กี่กิโลเมตร ราคาห้องเฉลี่ย 2,400-4,800 บาท/คืน เปิดให้บริการมา 11 ปี เจ้าของเป็นชาวฮ่องกงที่แต่งงานกับคนนครศรีฯ และตั้งใจปั้นให้เป็น “alternative” ของจังหวัดท่องเที่ยวยอดนิยมที่เงียบกว่า ราคาถูกกว่า แต่ยังมี wow factor ระดับโลก ปัญหาที่มาเล่าให้ฟังตอน discovery call คือ revenue 78% มาจาก OTA (Agoda 42%, Booking.com 28%, Expedia 8%) ที่หักค่าคอมมิชชั่นเฉลี่ย 18% — แปลว่าค่าคอมรวมต่อปีอยู่ที่ประมาณ 2.4 ล้านบาท ที่ “ตำใจ” มากเพราะถ้าได้กลับมาเต็มจะเอาไป renovate ห้องและเพิ่มสปาเฟส 2 ได้ทันที
ที่หนักกว่านั้นคือ pink dolphin tour ซึ่งเป็น signature experience ของรีสอร์ท (ลูกค้า 70% มาในจังหวัดเพราะอยากดูโลมาสีชมพู) ไม่มี booking flow ออนไลน์เลย ลูกค้าต้อง LINE หาแม่บ้าน front desk ทีละราย เพื่อจอง trip ส่งสลิปโอนเงิน รับยืนยันด้วยข้อความ ทำให้ pink dolphin booking conversion ต่ำมาก แม้ traffic ที่สนใจจะสูง รวมถึง airport transfer (สนามบินใกล้สุดคือสุราษฎร์ธานี ขับรถ 1.5 ชั่วโมง) ก็มี friction เดียวกัน ทำให้ลูกค้าหลายรายเลือกใช้ Grab หรือรถสาธารณะแทน — รีสอร์ทเสีย ancillary revenue ที่ควรได้
ลูกค้าเคยจ้าง freelancer สร้างเว็บ WordPress + WooCommerce ใช้มา 3 ปี ปัญหาคือ LCP 4.8s บนมือถือ checkout flow แตกบ่อยเมื่อสลับภาษา (TH/EN/CN) เพราะ multilingual plugin tích hợp กับ WooCommerce ไม่สมบูรณ์ checkout dropoff rate วัดได้ 71% เป้าหมายที่ตั้งกับเราคือ direct booking +400% ภายใน 6 เดือน + เพิ่ม ancillary revenue จาก pink dolphin + airport transfer + spa package เป็นช่องทางรายได้รองที่จับต้องได้
ทำไม Solution เดิมไม่ได้ผล
WooCommerce ออกแบบมาสำหรับขายสินค้า retail ไม่ใช่ booking ที่มี business rules ซับซ้อน เช่น room availability ที่เปลี่ยนตามวัน, package bundle ที่ลูกค้าเลือก room + tour + transfer พร้อมกัน, dynamic pricing high/low season ทุก feature เหล่านี้ทำได้ใน WooCommerce ก็จริงแต่ต้อง stack plugins 8-12 ตัวที่ค่า license รวมกันปีละ 600-800 USD และ Core Web Vitals พังเพราะ plugin โหลด JS ทับซ้อนกัน
ส่วน SaaS booking engine ที่ตลาดรีสอร์ทไทยนิยม (Cloudbeds, Little Hotelier, eviivo) รองรับ room booking ได้ดี แต่ทุกตัวไม่รองรับ activity/tour booking ที่ link กับ booking ห้องในธุรกรรมเดียว — ทำให้ลูกค้าต้อง check-out 2 ครั้ง (room + tour แยก) ซึ่งเป็น UX ที่ทำลาย conversion อย่างชัดเจน นอกจากนี้ค่า license รายเดือนของ SaaS เหล่านี้อยู่ที่ 4,500-9,000 บาท ต่อเดือน — สำหรับรีสอร์ทขนาดกลาง 5-year TCO อยู่ที่ 270,000-540,000 บาท
การยิง Google Ads ก็เผาเงินเปล่าเพราะ keyword “resort นครศรีธรรมราช” volume ต่ำ ส่วน keyword volume สูง “pink dolphin tour thailand” CPC สูงและ landing page เดิมไม่ดี conversion rate < 0.5% ส่วน Facebook Ads ที่ลูกค้าลองยิงไป Hong Kong audience แม้ CTR สูงแต่ booking ไม่เกิดเพราะ checkout flow ไม่ work บนมือถือ
แนวทางของ Southern Whale
หลัง discovery 2 ครั้งกับเจ้าของและ GM (สามีและภรรยา) เราวางแผน 4 pillars
1) Astro migration + Performance baseline เลือก Astro แทน WordPress เพื่อ LCP < 1.5s + zero JS by default + zero plugin attack surface ห้อง R2 รูปรีสอร์ท + รูป pink dolphin 320+ รูป ดูรายละเอียดเหตุผลทาง technical ได้ที่ web development service
2) Custom booking engine บน Supabase สร้าง booking flow ที่รวม room + pink dolphin tour + airport transfer ในธุรกรรมเดียว โดยใช้ Supabase (Postgres + Auth + Realtime) ที่ราคาถูกกว่า SaaS 70% (5-year TCO ประมาณ 90,000 บาท vs 400,000+ บาทของ SaaS) และมี real-time fleet sync ระหว่างเรือทัวร์เพื่อกัน overbooking
3) Pink dolphin tour widget ออกแบบ widget ที่ติดได้บนทุกหน้า + email signature ของ team แสดง available slots + booking ในคลิกเดียว ใช้ Schema markup TouristAttraction + Trip เพื่อ Google Rich Results
4) Local content + Mandarin SEO เนื่องจากลูกค้า 35% เป็นชาวจีน/ฮ่องกง/สิงคโปร์ที่หา content จีนใน Baidu + Xiaohongshu สร้าง content hub ภาษาจีนกลาง 8 บทความเริ่มต้นเกี่ยวกับจังหวัด + pink dolphin (เนื้อหา native Mandarin writer ไม่ใช่ Google Translate)
กระบวนการทำงาน (Week-by-Week)
Week 1-2: Discovery + Database Schema สัมภาษณ์ team รีสอร์ท + boat captain + spa manager เพื่อ map operational workflow design Postgres schema 18 tables ครอบคลุม room, tour, transfer, package bundle, payment, refund, audit log ทำ keyword research 180+ keywords แบ่ง 4 cluster (direct booking TH, direct booking EN, Mandarin search, pink dolphin tour intent)
Week 3-5: Backend + Booking Engine สร้าง booking API บน Supabase: seat-lock 5 นาที, real-time fleet sync เรือทัวร์ via Postgres triggers + Supabase Realtime, payment processors Stripe + PromptPay QR (custom generator) + bank transfer reconciliation, email confirmation 3 ภาษา (TH/EN/ZH) ผ่าน Resend
Week 6-7: Frontend + Migration Migrate WordPress → Astro 28 หน้า, build conversion-first landing page (hero booking checker + pink dolphin video bg + sticky bottom bar mobile), implement i18n routing TH/EN/ZH + Cloudflare R2 รูปขนาดรวม 1.2GB → 290MB หลัง WebP convert
Week 8-9: Pink Dolphin Tour Widget + Add-ons สร้าง widget ที่ embed ได้ทุกหน้า + email signature, ออกแบบ package bundle UI ที่ลูกค้าเลือก room + tour + transfer + spa package ในขั้นตอนเดียว, build admin console สำหรับ front desk เพื่อจัดการ booking + ยกเลิก + refund
Week 10-11: SEO + Content + Schema เขียน content hub TH/EN/ZH 22 บทความ (8 ZH เพิ่ม) เกี่ยวกับ pink dolphin guide, Nakhon Si Thammarat itinerary, Wat Phra Mahathat day trip, southern Thai food guide, implement Schema markup ครบ Hotel + TouristAttraction + Trip + FAQPage, optimize Google Business Profile + 30 local citations
Week 12: QA + Soft Launch Test booking flow end-to-end + payment gateway testing + load test (Locust simulate 500 concurrent users), accessibility audit WCAG AA, soft launch 5 วัน gradual 10% → 30% → 70% → 100%
หลัง launch ต่อ 6-month retainer ทำ content 3 บทความ/เดือน + monitoring + GBP post weekly + backlink outreach
Obstacles + Pivots
ปัญหา 1: Pink dolphin schedule depends on tide + weather — สัปดาห์ที่ 8 ตอน implement booking flow เจอข้อจำกัด business logic ที่ไม่ได้อยู่ใน original spec — pink dolphin tour ทำได้เฉพาะช่วงน้ำขึ้นและสภาพอากาศดี boat captain ต้อง confirm 1 วันก่อนทุก trip ระบบต้องรองรับ tentative booking ที่ confirm/cancel ภายหลัง แก้โดยเพิ่ม “tentative booking” status พร้อม auto-notify ลูกค้า 24h ก่อน trip + auto-refund ถ้า cancel จาก weather
ปัญหา 2: PromptPay slip reconciliation manual workload สูง — เดือนแรกหลัง launch เจ้าหน้าที่ accounting ต้องเช็คสลิป PromptPay ที่ลูกค้าส่งกับ booking ID ทีละราย ใช้เวลา 2-3 ชั่วโมง/วัน แก้โดย integrate Slip Verify API ของธนาคารกรุงเทพ + auto-match กับ booking amount + booking ID ลด workload 85%
ปัญหา 3: เดือนที่ 3 Mandarin traffic ต่ำกว่าคาด — แม้ content ZH เขียนโดย native writer แต่ Baidu indexing ในไทยช้ามาก (Baidu crawler มี IP block list สำหรับ TH hosting) แก้โดย submit sitemap ตรงผ่าน Baidu Webmaster + ขอเชื่อม Xiaohongshu (Little Red Book) account ของรีสอร์ทแลกเปลี่ยน traffic 6 สัปดาห์หลัง implement Mandarin traffic เพิ่ม 3.2 เท่า
Post-launch + Ongoing
ภายใน 6 เดือนหลัง launch organic traffic เพิ่มจาก 120 เป็น 2,340 sessions/เดือน (+1,850%), direct booking +420%, OTA dependency ลดจาก 78% เหลือ 35% ของ revenue, ancillary revenue (pink dolphin tour + airport transfer + spa package) เพิ่ม 1.8 ล้านบาทในเดือน 6 — เป็นช่องทางรายได้ใหม่ที่ก่อนหน้านี้ไม่เคยเก็บได้
Lessons learned Resort + activity bundle ที่ทำในธุรกรรมเดียวคือ “moat” ที่ SaaS booking engine ทั่วไปทำไม่ได้ — สำหรับรีสอร์ทที่มี signature experience การลงทุน custom booking engine ROI เร็วกว่าที่คิด รีสอร์ทคืน CAPEX ของระบบใหม่ภายในเดือนที่ 8 จากค่าคอม OTA ที่ประหยัดได้
ตอนนี้ลูกค้ายังเป็น retainer client เดือนที่ 9 และเริ่ม phase 2 — ขยายระบบ booking ไปรองรับ wedding venue (รีสอร์ทมีหาดส่วนตัวที่จัด beach wedding ได้) + corporate retreat package พร้อมเชื่อม CRM (HubSpot) สำหรับ B2B lead management ดู ระบบจองทัวร์ของจังหวัดกระบี่ ที่ใช้ pattern คล้ายกันหรือ บริการ software development สำหรับ custom build อื่น