Cara Membuat Sistem Booking dan Reservasi Otomatis via WhatsApp AI

Jawaban singkat: sistem booking WhatsApp AI = n8n + Google Sheets (slot ketersediaan) + AI ekstrak preferensi user → cek slot real-time → konfirmasi → reminder H-1 & H-0 → cancel/reschedule otomatis. Cocok: salon, klinik, kursus, konsultasi, rental, event. Semua visual no-code. Artikel ini arsitektur lengkap, format data, flow booking, dan edge case handling.

Jenis Bisnis yang Butuh Booking WhatsApp AI

Kategori Contoh Slot Type Kompleksitas
Personal Care Salon, spa, barbershop, nail art, massage Waktu tetap (30/60/90 menit), staff spesifik Sedang
Kesehatan Klinik, dokter gigi, fisioterapi, psikolog, check-up Waktu fleksibel, dokter spesifik, room Tinggi (privasi, regulasi)
Pendidikan Kursus, les privat, workshop, training, sertifikasi Sesi berulang (mingguan), batch/private Sedang
Konsultasi Hukum, pajak, bisnis, keuangan, arsitek Slot 30/60 menit, konsultan spesifik Sedang
Event & Rental Studio foto, meeting room, alat, venue, kendaraan Durasi jam/hari, item spesifik Rendah-Sedang
Food & Beverage Restoran private dining, catering, cooking class Waktu + pax + menu Tinggi

Arsitektur Sistem Booking (n8n Visual)

💬 Trigger WhatsApp — User: “Mau booking potong rambut besok siang”
↓
🧠 AI Ekstrak Intent & Entitas — {intent:BOOKING, layanan:potong rambut, tanggal:besok, waktu:siang, staff:aman}
↓
🔍 Sheets Read (Slot_Tersedia) — Filter: Tanggal=besok, Waktu=siang, Staff=aman, Status=TERSEDIA
↓
🤖 AI Bangun Response — “Slot tersedia: 13:00, 13:30, 14:00. Pilih nomor 1/2/3 atau balas ‘BEBAK’ ya kak.”
↓
👤 User Balas: “2” → AI ekstrak pilihan → Slot 13:30
↓
✅ Konfirmasi & Sheets Write (Booking) — Update Slot Status=BOOKED, Tulis Booking_Log
↓
📅 Cron Reminder — H-1 jam 10:00 & H-0 jam 08:00 → Kirim reminder + Maps link

Format Data Google Sheets (4 Tab Wajib)

1. Tab “Slot_Tersedia” (Master Jadwal)

Kolom Contoh Keterangan
Slot_ID SLT-20260115-1330-AMAN Unique: Tanggal-Waktu-Staff
Tanggal 2026-01-15 Format YYYY-MM-DD
Waktu_Mulai 13:30 Format HH:MM (24 jam)
Waktu_Selesai 14:00 Durasi 30 menit
Staff Aman Nama staff / dokter / ruang
Layanan Potong Rambut Kategori layanan
Durasi_Menit 30 Untuk validasi
Harga 150000 Angka saja
Status TERSEDIA TERSEDIA / BOOKED / BLOCKED / OFF
Catatan Khusus pria Opsional

Generate otomatis: Script/Apps Script generate slot 3 bulan ke depan berdasarkan jam operasional & staff. Atau manual update mingguan.

2. Tab “Booking_Log” (Riwayat Semua Booking)

Kolom Contoh
Booking_ID BK-20260115-001
Slot_ID SLT-20260115-1330-AMAN
Nomor_User 628123456789
Nama_User Budi Santoso
Layanan Potong Rambut
Staff Aman
Tanggal 2026-01-15
Waktu 13:30
Status KONFIRMASI / SELESAI / BATAL / NO_SHOW
Waktu_Booking 2026-01-14 20:15:00
Waktu_Konfirmasi 2026-01-14 20:16:00
Waktu_Reminder_H1 2026-01-14 10:00:00
Waktu_Reminder_H0 2026-01-15 08:00:00
Catatan_User Rambut tebal, potong pendek

3. Tab “Staff_Jadwal” (Master Staff & Libur)

Kolom Contoh
Staff Aman
Role Senior Barber
Jam_Mulai 09:00
Jam_Selesai 21:00
Hari_Libur Minggu
Cuti_Tanggal 2026-01-20|2026-01-21
Aktif TRUE

4. Tab “Layanan_Menu” (Daftar Layanan & Durasi)

Kolom Contoh
Kode PR-01
Nama Potong Rambut
Durasi_Menit 30
Harga 150000
Staff_Bisa Aman|Budi|Citra
Deskripsi Potong + keramas + styling
Aktif TRUE

AI Prompt Ekstrak Booking Intent (Node AI Classifier)

Ekstrak info booking dari chat user. Output JSON SAJA:
{
“intent”: “BOOKING | CEK_SLOT | KONFIRMASI | BATAL | RESCHEDULE | TANYA_JADWAL”,
“layanan”: “kode/nama layanan (dari Layanan_Menu)”,
“staff_preferensi”: “nama staff / ‘apa saja’ / null”,
“tanggal”: “YYYY-MM-DD / ‘besok’ / ‘lusa’ / ‘minggu depan’ / null”,
“waktu_preferensi”: “pagi/siang/sore/malam / HH:MM / ‘bebas’ / null”,
“durasi_estimasi”: “menit / null”,
“catatan”: “request khusus user / null”,
“confidence”: 0.0-1.0
}

CONTOH:
User: “Mau booking potong rambut besok siang pak Aman” → {“intent”:”BOOKING”,”layanan”:”Potong Rambut”,”staff_preferensi”:”Aman”,”tanggal”:”2026-01-15″,”waktu_preferensi”:”siang”,”durasi_estimasi”:30,”catatan”:null,”confidence”:0.95}
User: “Slot kosong besok jam 14:00?” → {“intent”:”CEK_SLOT”,”layanan”:null,”staff_preferensi”:null,”tanggal”:”2026-01-15″,”waktu_preferensi”:”14:00″,”durasi_estimasi”:null,”catatan”:null,”confidence”:0.9}
User: “Batalin booking besok jam 13:30” → {“intent”:”BATAL”,”layanan”:null,”staff_preferensi”:null,”tanggal”:”2026-01-15″,”waktu_preferensi”:”13:30″,”durasi_estimasi”:null,”catatan”:null,”confidence”:0.9}

Flow Booking Lengkap (n8n Workflow Utama)

  1. Trigger → AI Classifier (di atas)
  2. Switch (Intent):
    • BOOKING: Sheets Read Slot_Tersedia (filter tanggal, staff, status=TERSEDIA) → AI bangun daftar slot → User pilih → Sheets Update Slot=BOOKED + Write Booking_Log → Kirim konfirmasi + Google Maps link lokasi
    • CEK_SLOT: Sheets Read Slot_Tersedia → AI format daftar → Kirim
    • KONFIRMASI: User balas “YA” / “KONFIRMASI” → Sheets Update Booking_Log Status=KONFIRMASI → Kirim “Terkonfirmasi kak!”
    • BATAL: Sheets Read Booking_Log (filter user + tanggal/waktu) → Sheets Update Slot=TERSEDIA + Booking_Log Status=BATAL → Kirim “Dibatalkan kak, slot dibuka lagi.”
    • RESCHEDULE: BATAL lama + BOOKING baru (atomic: node Function handle transaksi)
    • TANYA_JADWAL: Sheets Read Slot_Tersedia (filter tanggal minggu ini) → AI format kalender mingguan → Kirim

Reminder Otomatis (Cron Jobs – Wajib untuk No-Show Rate Rendah)

Reminder Cron Schedule Target Template Pesan
H-1 (Besok) Daily 10:00 Booking tanggal besok Status=KONFIRMASI “Kak [Nama], ingat besok [Tanggal] jam [Waktu] booking [Layanan] dgn [Staff] di [Lokasi]. Maps: [Link]. Balas ‘BATAL’ kalau tidak bisa ya.”
H-0 (Hari Ini) Daily 08:00 Booking hari ini Status=KONFIRMASI “Kak [Nama], hari ini jam [Waktu] booking [Layanan]. Datang 10 menit sebelum ya. Butuh reschedule? Balas ‘RESCHEDULE’.”
Post-Visit (H+1) Daily 10:00 Booking kemarin Status=SELESAI “Kak [Nama], terima kasih kunjungan kemarin! Gimana hasilnya? Butuh follow-up? Balas ‘REVIEW’ kirim link Google Review.”

Edge Case Handling (Wajib Diimplementasikan)

Kasus Solusi Bot
User pilih slot yang sudah booked (race condition) Node IF cek status slot SEBELUM update → kalau sudah BOOKED: “Maaf kak, slot tadi keboking orang lain. Slot lain: [daftar lagi].”
User booking di masa lalu AI Classifier: tanggal < today → intent=TANYA_JADWAL, balas: "Tanggal itu sudah lewat kak. Mau booking tanggal depan?"
User booking di hari libur staff Slot_Tersedia sudah filter Staff_Jadwal (libur & cuti) → tidak muncul slot. Kalau user minta staff yg libur: “Staff [Nama] libur tanggal itu. Staff lain tersedia: [daftar].”
Double booking user yang sama Node IF cek Booking_Log user + tanggal/waktu overlap → “Kak, Anda sudah booking [Layanan] jam [Waktu] tanggal itu. Mau ganti?”
No-show (user tidak datang) Admin update Status=NO_SHOW → Cron H+1 kirim: “Kak, kemarin booking tidak hadir. Mau booking ulang? Atau ada kendala?”
User balas angka tidak valid (pilih slot) Node IF validasi angka → tidak valid: “Maaf kak, balas nomor 1/2/3 sesuai daftar ya.”
Cancel letzte minute (<2 jam) Flag “LATE_CANCEL” di Booking_Log → kebijakan: fee / tidak bisa booking 1 minggu. Bot informasikan.

Dashboard Booking (Sheets Tab “Booking_Dashboard”)

  • Total Booking / Hari, Minggu, Bulan
  • Occupancy Rate: Slot BOOKED / Total Slot Tersedia (per staff, per hari)
  • No-Show Rate: Status=NO_SHOW / Total Booking
  • Late Cancel Rate: Flag LATE_CANCEL / Total Cancel
  • Revenue: SUM Harga dari Booking_Log Status=SELESAI
  • Top Layanan & Top Staff
  • Peak Hours (heatmap jam)
  • Conversion: Chat → Booking (dari Chat_History join Booking_Log)

Checklist Launch Sistem Booking Minggu Ini

  • [ ] Definisi layanan, durasi, harga, staff di Layanan_Menu & Staff_Jadwal
  • [ ] Generate Slot_Tersedia 3 bulan ke depan (script / manual)
  • [ ] Setup AI Classifier prompt booking (copy template di atas)
  • [ ] Import workflow: Trigger → Classifier → Switch 6 intent → Sheets Read/Write
  • [ ] Setup atomic update: Slot + Booking_Log (node Function transaksi)
  • [ ] Setup 3 Cron Reminder: H-1 10:00, H-0 08:00, H+1 10:00
  • [ ] Edge case: race condition, masa lalu, libur staff, double booking, no-show
  • [ ] Setup Booking_Dashboard (PIVOT tables)
  • [ ] Uji: booking baru, cek slot, konfirmasi, batal, reschedule, tanya jadwal
  • [ ] Uji edge case: pilih slot booked, tanggal lewat, staff libur, double booking
  • [ ] Launch: mode pendamping 7 hari → monitor occupancy, no-show, user feedback

FAQ: Sistem Booking Reservasi WhatsApp AI

Apakah sistem ini handle konflik jadwal (race condition) saat 2 user pilih slot sama?

Ya — Node IF cek status slot SEBELUM update (SELECT FOR UPDATE logic via Sheets: baca → IF status=TERSEDIA → UPDATE). Kalau antara baca & update user lain booking: update ke-2 akan gagal (status sudah BOOKED) → bot balas “Slot tadi keboking orang lain, ini slot lain.” Untuk volume tinggi: butuh database dengan transaksi ACID (PostgreSQL/Supabase) bukan Sheets.

Bisakah user booking berulang (misal setiap Senin 10:00 selama 3 bulan)?

Bisa — Node Loop: generate multiple Booking_Log entries + update multiple Slot_Tersedia. Atau fitur “Recurring Booking” di Sheets: kolom Recurring_Weekly=TRUE, End_Date. Cron mingguan generate slot berikutnya. Template include logic ini.

Bagaimana handle pembayaran booking (DP / full)?

Workflow booking: setelah konfirmasi → kirim rekening/VA/QRIS + “Bayar DP 50% / Full dalam 2 jam ya kak, kalau tidak slot dibuka lagi.” → Cron cek payment (manual admin / Payment Gateway callback) → Status=KONFIRMASI kalau bayar, Status=BATAL kalau timeout.

Apakah butuh integrasi Google Calendar / Outlook?

Bisa — Node HTTP Request ke Google Calendar API / Microsoft Graph → create event untuk staff. Atau satu arah: staff subscribe kalender Sheets (export CSV → import Calendar). Untuk mulai: Sheets cukup, staff cek HP/WhatsBot reminder.

Template sistem booking lengkap sudah jadi di mana?

Ebook + Template n8n — include: 4 tab Sheets format, AI Classifier prompt booking, workflow 6 intent, atomic update logic, 3 cron reminder, edge case handlers, Booking_Dashboard, recurring booking logic, payment integration guide.

Baca juga: Cara Membuat Sistem Booking dan Reservasi Otomatis via WhatsApp AI untuk panduan lengkapnya.

Scroll to Top