Jawaban singkat: workflow n8n bot WhatsApp AI = 7 node utama (Trigger → Classifier → Router → FAQ Engine / Order Flow / Status Check / Handover → Delay → Send) + 3 Cron Jobs (Follow-up, Shipping, Nurture) + Error Handling + Logging. Semua visual drag-and-drop. Artikel ini step-by-step lengkap dari canvas kosong sampai workflow produksi siap pakai.
Persiapan Sebelum Mulai (Checklist 5 Menit)
- [ ] n8n sudah jalan (VPS / Cloud) → akses `https://domain-anda.com`
- [ ] WhatsApp terkoneksi (Gateway scan QR / API Resmi token) → test kirim/terima OK
- [ ] AI Credential siap (OpenAI / Anthropic / Google / OpenRouter API Key)
- [ ] Google Sheets OAuth connected di n8n Credentials
- [ ] Telegram Bot Token + Chat ID (untuk notif admin & error)
- [ ] Knowledge Base Sheets ready: Tab Produk, FAQ_Kebijakan, Ongkir_Detail, Promo_Aktif
- [ ] System Prompt draft siap copy-paste
Arsitektur Workflow Utama (7 Node Inti)
→ Output: `message`, `from`, `timestamp`, `type` (text/image/document), `chatId`
→ System Prompt: Klasifikasi Intent + Urgency + Entitas → Output JSON
→ Output: `intent`, `urgency`, `entities`, `confidence`
→ 6 Jalur: FAQ, ORDER, STATUS, KOMPLAIN, CUSTOM, CHITCHAT
→ Input: `chatId` dari Trigger, `text` dari jalur sebelumnya
→ Log: ID, Nomor, Intent, Urgency, Jalur, Response_Time, Timestamp, Status
Step-by-Step Bangun Workflow di n8n Canvas
Langkah 1: Buat Workflow Baru & Setup Trigger
- n8n Dashboard → **New Workflow** → Nama: `WhatsApp AI Bot – Production`
- Klik `+` → Search **”WhatsApp Trigger”** → Pilih versi Official (API Resmi) / Unofficial (Gateway)
- Credential: Pilih WhatsApp Credential yang sudah dibuat
- Settings:
– **Webhook URL**: Copy URL yang muncul (format: `https://domain-anda.com/webhook/whatsapp`)
– **Events**: `message` (centang semua: text, image, document, audio, video, location, contact) - Test: Kirim “Halo” dari WhatsApp lain → Execution → Cek Output JSON
Langkah 2: Tambah AI Classifier Node
- Klik `+` di kanan Trigger → Search **”Chat Model”** → Pilih provider (OpenAI / Anthropic / Google / OpenRouter)
- Credential: Pilih AI Credential (API Key)
- Model: `gpt-4o-mini` / `claude-3-haiku` / `gemini-1.5-flash` / `llama-3.1-8b` (hemat & cepat)
- System Prompt (COPY PASTE INI):
{
“intent”: “FAQ | ORDER | STATUS | KOMPLAIN | CUSTOM | CHITCHAT”,
“urgency”: “LOW | MEDIUM | HIGH | CRITICAL”,
“entities”: { “produk”: “kode/nama”, “nomor_order”: “xxx”, “lokasi”: “kota” },
“confidence”: 0.0-1.0
}
INTENT RULES:
– FAQ: Tanya harga, fitur, ongkir, pembayaran, pengiriman, retur, garansi, jam buka, promo
– ORDER: Mau beli, minta rekening, “order [produk]”, “beli [produk]”
– STATUS: “Resi”, “Tracking”, “Belum dikirim”, “Di mana barang”, “Nomor order”
– KOMPLAIN: “Rusak”, “Salah kirim”, “Komplain”, “Kecewa”, “Lapor”, “BPOM”, “Advokat”
– CUSTOM: “Custom”, “Kustom”, “Request khusus”, “Tanya bos”, “B2B”, “Grosir”, “Korporat”
– CHITCHAT: “Halo”, “Apa kabar”, “Terima kasih”, “Bye”, “Siapa nama kamu”
URGENCY RULES:
– LOW: FAQ, CHITCHAT
– MEDIUM: ORDER, STATUS
– HIGH: KOMPLAIN (emosi marah), CUSTOM (nilai besar)
– CRITICAL: KOMPLAIN + keyword: BPOM, lapor, polisi, advokat, viral, mati, beracun, bocor, luka
CONTOH:
“Brp harga Paket Pro?” → {“intent”:”FAQ”,”urgency”:”LOW”,”entities”:{“produk”:”Paket Pro”},”confidence”:0.95}
“Mau order Paket Pro, nama Budi, Jakarta” → {“intent”:”ORDER”,”urgency”:”MEDIUM”,”entities”:{“produk”:”Paket Pro”,”nama”:”Budi”,”lokasi”:”Jakarta”},”confidence”:0.9}
“Barang rusak! Lapor BPOM!” → {“intent”:”KOMPLAIN”,”urgency”:”CRITICAL”,”entities”:{“kerusakan”:”rusak”},”confidence”:1.0}
- Options: Temperature `0.1` (deterministik), Max Tokens `500`
- Connect: Trigger → Chat Model (drag line dari Trigger ke Chat Model)
Langkah 3: Tambah Switch Node (Router)
- `+` di kanan Chat Model → Search **”Switch”**
- Mode: **Rules** (bukan Expression)
- Add Rule 1: `{{$json.intent}}` **Equal** `FAQ` → Output: `FAQ`
- Add Rule 2: `{{$json.intent}}` **Equal** `ORDER` → Output: `ORDER`
- Add Rule 3: `{{$json.intent}}` **Equal** `STATUS` → Output: `STATUS`
- Add Rule 4: `{{$json.intent}}` **Equal** `KOMPLAIN` → Output: `KOMPLAIN`
- Add Rule 5: `{{$json.intent}}` **Equal** `CUSTOM` → Output: `CUSTOM`
- Add Rule 6: `{{$json.intent}}` **Equal** `CHITCHAT` → Output: `CHITCHAT`
- Fallback Output: `FAQ` (default kalau tidak match)
- Connect: Chat Model → Switch
Langkah 4: Bangun 6 Jalur (Sub-Workflow per Output Switch)
Untuk masing-masing output Switch (FAQ, ORDER, STATUS, KOMPLAIN, CUSTOM, CHITCHAT), buat jalur:
📚 JALUR FAQ (Output: FAQ)
- Switch (FAQ) → **Google Sheets Read** (Tab: FAQ_Kebijakan, Filter: Aktif=TRUE)
- → **Chat Model** (AI Jawab): System Prompt FAQ + Memory + KB dari Sheets → Output: `answer`
- → **IF Node** (Fallback Check): `{{$json.confidence < 0.7 || $json.answer.includes("tidak tahu")}}` → True: Fallback, False: Continue
- → **Set Node** (Build Response): `{{$json.answer}}` atau Fallback: “Maaf kak, untuk itu tanya admin ya”
📦 JALUR ORDER (Output: ORDER)
- Switch (ORDER) → **Chat Model** (Ekstrak Data): Prompt ekstrak nama, alamat, produk, catatan dari chat → JSON
- → **Google Sheets Read** (Tab: Produk, Filter: Kode=produk & Aktif=TRUE & Stok>0)
- → **IF** (Stok cek): Stok>0 → Continue, Else: “Maaf stok habis”
- → **Google Sheets Read** (Tab: Ongkir_Detail, Filter: Provinsi=alamat)
- → **Set** (Build Quote): Harga + Ongkir + Total + Rekening/VA/QRIS + CTA
- → **Google Sheets Write** (Tab: Order_Masuk, Append: Order Baru)
🔍 JALUR STATUS (Output: STATUS)
- Switch (STATUS) → **Chat Model** (Ekstrak Nomor Order/Nama)
- → **Google Sheets Read** (Tab: Order_Masuk, Filter: Nomor_Order ATAU Nomor_WA+Nama)
- → **IF** (Ditemukan): **HTTP Request** (API Kurir Tracking – opsional) → **Set** (Format Resi + Link Tracking)
- → **IF** (Tidak Ditemukan): “Maaf kak, order tidak ditemukan. Cek nomor order / nama.”
🚨 JALUR KOMPLAIN (Output: KOMPLAIN)
- Switch (KOMPLAIN) → **IF** (Urgency=CRITICAL): **Telegram Send** (🚨 CRITICAL + Owner + Legal)
- → **IF** (Urgency=HIGH): **Telegram Send** (🔴 HIGH + Manajemen)
- → **IF** (Urgency=MEDIUM): **Telegram Send** (🟠 MEDIUM + Admin)
- → **Set** (Response): Template empatetik per tingkat + “Admin hubungi
- → **Set Node** (Pause Flag): `pause_bot: true` (simpan ke Sheets/Redis untuk pause bot)
🤝 JALUR CUSTOM (Output: CUSTOM)
- Switch (CUSTOM) → **Telegram Send** (🟡 CUSTOM + Admin Senior)
- → **Set** (Response): “Untuk request custom, mending chat admin langsung ya biar detail. Admin hubungi <15 menit."
- → **Set** (Pause Flag): `pause_bot: true`
💬 JALUR CHITCHAT (Output: CHITCHAT)
- Switch (CHITCHAT) → **Chat Model** (System Prompt: Ramah singkat, arahkan ke bisnis)
- → **Set** (Response): Output AI
Langkah 5: Converge → Delay → Send → Log (Shared untuk Semua Jalur)
- Semua 6 jalur → **Merge Node** (Mode: `Wait for all` / `Choose first` tergantung desain) → Output: `response_text`
- → **Wait Node** (Delay Human-like): Mode `Fixed Duration` → Expression: `{{Math.floor(Math.random()*3000)+2000}}` (2-5 detik random)
- → **WhatsApp Send Node**: Credential WhatsApp, `chatId`: `{{$json.chatId}}` (dari Trigger), `text`: `{{$json.response_text}}`
- → **Google Sheets Write** (Tab: Chat_History): Append row: `ID`, `Nomor`, `Intent`, `Urgency`, `Jalur`, `Response_Time_ms`, `Timestamp`, `Status`
3 Cron Jobs Wajib (Workflow Terpisah)
| Workflow Cron | Schedule | Fungsi |
|---|---|---|
| Follow-Up Belom Bayar | Every 30 minutes | Cek Order_Masuk Status=MENUNGGU_BAYAR >2 jam → Kirim follow-up 1/2/3 → Log |
| Shipping Notification | Every 15 minutes | Cek Order_Masuk Status=DIKIRIM + Resi ada + Belum notif → Kirim Resi + Link Tracking |
| Nurture & Retention | Daily 10:00 | Repeat Order H+30, Birthday H-1/H/H+1, Win-back COLD, VIP Exclusive |
Error Handling & Monitoring (Wajib Produksi)
- Error Trigger Workflow (Terpisah): Trigger: **Error Trigger** → **Telegram Send** (🚨 ERROR: Workflow `{{$workflow.name}}`, Node `{{$node.name}}`, Error: `{{$error.message}}`, Time: `{{$now}}`)
- Uptime Monitoring: UptimeRobot (Free) → Monitor `https://domain-anda.com/webhook/whatsapp` (GET/POST) → Interval 5 menit → Alert Telegram/Email
- Daily Health Check (Cron 08:00): Cek: VPS Disk/RAM/CPU, n8n Process, WhatsApp Connection, AI API Quota, Sheets Access → Notif Summary ke Telegram
Testing Checklist (Wajib Sebelum Launch)
🧪 20 SKENARIO UJI (KIRIM DARI NOMOR LAIN):
- FAQ: “Brp harga Paket Pro?” → Jawab benar, <1 detik
- FAQ Variasi: “Harga pro brp?” → Jawab sama (AI paham variasi)
- FAQ Di Luar KB: “Cara hack akun?” → Fallback: “Tanya admin”
- Order: “Mau beli Paket Pro, Budi, Jakarta” → Quote + Rekening + Stok cek
- Order Stok Habis: “Mau beli Produk X (stok 0)” → “Stok habis”
- Status: “Resi order #123” → Resi + Link Tracking
- Status Not Found: “Resi order #999” → “Tidak ditemukan”
- Komplain Ringan: “Barang belum sampai 5 hari” → Empati + Admin follow-up
- Komplain Berat: “Barang rusak, lapor BPOM!” → 🚨 CRITICAL notif + Pause bot
- Custom: “Mau custom 1000 pcs, harga grosir” → 🟡 CUSTOM notif + “Chat admin”
- Chit-chat: “Halo, apa kabar?” → Ramah + “Ada yang bisa bantu?”
- Memory: Tanyakan “Paket Pro” → “Yang tadi yang mana?” → Referensi benar
- Follow-up: Buat order, tunggu 2 jam → Auto follow-up kirim
- Shipping: Update Status=DIKIRIM + Resi → Auto notif 15 menit
- Repeat Order: Order selesai 30 hari lalu → Auto H+30 offer
- Birthday: Set Tanggal_Lahir besok → Auto H-1/H/H+1 birthday
- Opt-out: Balas “STOP” → Tag NO_BROADCAST → Broadcast skip
- Error Handling: Matikan AI API → Error Trigger notif Telegram
- Concurrency: Kirim 10 chat bersamaan → Semua jalan, tidak timeout
- Rollback: Toggle Off Workflow → Bot stop, admin manual
Checklist Launch Workflow Minggu Ini
- [ ] Bangun Workflow Utama: Trigger → Classifier → Switch → 6 Jalur → Merge → Delay → Send → Log
- [ ] Setup System Prompt Classifier + FAQ Jawab + Order Ekstrak + Chitchat
- [ ] Setup 6 Jalur: FAQ (Sheets+AI+Fallback), Order (Ekstrak+Stok+Ongkir+Write), Status (Lookup+Tracking), Komplain (Notif+Pause), Custom (Notif+Pause), Chitchat
- [ ] Setup Converge: Merge → Wait (2-5s random) → WhatsApp Send → Sheets Log
- [ ] Bangun 3 Cron Workflow: Follow-up (30min), Shipping (15min), Nurture (Daily 10:00)
- [ ] Setup Error Trigger Workflow → Telegram Notif
- [ ] Setup UptimeRobot Monitor Webhook URL
- [ ] Setup Daily Health Check Cron 08:00 → Telegram Summary
- [ ] UJI 20 SKENARIO (checklist di atas) → Fix yang gagal
- [ ] Launch Mode Pendamping 7 Hari: Review Log Harian, Poles Prompt, Update KB
- [ ] Target: Bot Handle >75%, Response <1 detik, 0 Error Kritis, Admin Happy
FAQ: Membuat Workflow n8n Bot WhatsApp AI dari Nol
Berapa lama bangun workflow ini dari nol?
Punya template & KB siap: 2-3 jam. Dari nol total (belum punya n8n, KB, AI): 4-6 jam (termasuk setup VPS, n8n, Gateway, AI, Sheets, testing). Template siap import: Ebook + Template n8n → 30 menit import + isi kredensial + test.
Apakah workflow ini bisa dikembangkan (modular) nanti?
YA — desain sudah modular: Trigger → Classifier → Switch → Sub-flow per intent. Nanti bisa: Pisah Sub-flow jadi Workflow terpisah (FAQ Agent, Sales Agent, Support Agent) → Panggil via Execute Workflow / HTTP Request. Bisa scale ke Multi-Agent Architecture.
Bagaimana handle update workflow tanpa downtime?
n8n: Edit workflow → Save → Active workflow otomatik reload (running executions finish, baru pakai versi baru). Untuk update besar: Duplicate workflow → Edit duplicate → Test → Rename lama → Rename baru → Activate. Zero downtime.
Bisakah workflow ini di-export untuk backup/migrasi?
YA — n8n: Workflow → Export → JSON file. Bisa import ke n8n lain (VPS lain, n8n Cloud, fork). Backup mingguan otomatis via Cron: n8n CLI export → push ke GitHub/GitLab/Drive. Template include backup script.
Template workflow lengkap sudah jadi di mana?
Ebook + Template n8n — include: Workflow JSON siap import (Utama + 3 Cron + Error Trigger), System Prompt library, Sheets format 10+ tab, Setup guide screenshot step-by-step, Testing checklist 20 skenario, Troubleshooting guide, Scale modular architecture.
Baca juga: Cara Membuat Workflow n8n untuk Bot WhatsApp AI dari Nol untuk panduan lengkapnya.