Bangun AI Agent WhatsApp Order-Taking dengan n8n + OpenAI + Google Sheets (MVP 1 Hari)
· 8 menit baca
Bangun AI Agent WhatsApp Order-Taking dengan n8n + OpenAI + Google Sheets (MVP 1 Hari)
AI Agent WhatsApp itu bukan “chatbot lucu” — ini mesin penerima order 24/7 yang bisa balas cepat, paham menu, cek stok, sampai kirim link pembayaran. Kalau hari ini kamu masih balas WA manual, copy-paste ke Google Sheets, lalu ngetik total harga secara manual, kamu sedang buang waktu (dan pelanggan) di jam sibuk. Di artikel ini kita akan bangun MVP order-taking end-to-end: WhatsApp Cloud API → n8n automation → OpenAI → Google Sheets → (opsional) invoice Xendit/Midtrans. Target: live dalam 1 hari, tanpa coding berat.
Kenapa kamu butuh AI Agent WhatsApp untuk order?
Masalah nyata di lapangan:
- Balasan lambat saat ramai → pelanggan kabur.
- Order berantakan di chat → sering salah input, salah total, lupa stok.
- Owner jadi “router manusia” antara pelanggan, kasir, dan kurir.
Solusi: AI Agent WhatsApp yang paham intent pelanggan (“saya mau 2 latte, 1 tanpa gula”), mengecek stok, menghitung total dari source of truth (Google Sheets), membuat order, dan mengirim update otomatis. n8n jadi orkestrator yang rapi, OpenAI untuk NLU/reasoning, dan Google Sheets sebagai database ringan.
Konsep ringkas: bukan chatbot generik, tapi workflow berlapis
- Lapisan 1: State machine — order itu fase: greet → pilih produk → konfirmasi → pembayaran → selesai. Kita kunci transisi di n8n agar AI tidak offside.
- Lapisan 2: LLM reasoning — OpenAI menerjemahkan bahasa natural ke aksi: tambah item, ganti ukuran, atau tanya ongkir.
- Lapisan 3: Tooling deterministik — cek stok, harga, dan total dari Google Sheets; kirim pesan via WhatsApp Cloud API; buat invoice via Xendit/Midtrans.
Pattern ini bikin workflow automation stabil: AI fokus di pemahaman dan penyusunan konteks; keputusan kritis (harga, stok, status) tetap dari sistem deterministik.
Arsitektur AI Agent WhatsApp
- WhatsApp Cloud API Webhook → n8n Webhook (verifikasi signature + routing event)
- n8n → OpenAI (intent + tool call suggestion)
- n8n → Google Sheets (menu, stok, order, history)
- n8n → Xendit/Midtrans (opsional: invoice/link bayar)
- n8n → WhatsApp Send API (balasan ke pelanggan)
State disimpan sederhana di Sheets (kolom status) atau Redis (kalau butuh skala). Idempotensi pakai message_id dari WhatsApp agar tidak double process saat webhook retry.
Setup WhatsApp Cloud API untuk AI Agent WhatsApp
- Di Meta for Developers, buat App → tambahkan WhatsApp → dapatkan Phone Number ID dan WhatsApp Business Account ID.
- Generate Access Token (lebih baik System User + token jangka panjang). Simpan di kredensial n8n.
- Di WhatsApp → Configuration → set Webhook URL ke endpoint n8n (Webhook node) dan Verify Token.
- Subscribe event messages dan message_template_status_update.
- Siapkan Message Template untuk notifikasi proaktif (misal: order update). Balasan percakapan biasa tetap dalam 24-hour customer care window.
Tips: Simpan ENV di n8n: WHATSAPP_TOKEN, PHONE_NUMBER_ID. Gunakan HTTP Request node dengan Bearer token.
Struktur Google Sheets
- Menu: sku, nama, kategori, varian, harga, stok, aktif
- Orders: order_id, wa_id, nama, alamat, status, total, payment_link, created_at
- OrderItems: order_id, sku, nama, qty, harga_satuan, subtotal
- ProcessedEvents: message_id, wa_id, processed_at
Kenapa Sheets? Untuk MVP, semua orang sudah familiar, mudah diedit, murah, dan cukup cepat. Nanti tinggal migrasi ke DB saat skala.
Workflow n8n: membangun AI Agent WhatsApp langkah demi langkah
1) Webhook Inbound (verifikasi + parser)
- Webhook node: Method GET/POST. GET untuk verifikasi (kembalikan hub.challenge). POST untuk event.
- Function node: Verify & Parse — validasi signature (X-Hub-Signature-256) jika diaktifkan. Ekstrak: message_id, wa_id (customer), text/body, type (text, button, interactive), timestamp.
- Idempotensi: cek message_id di Sheet ProcessedEvents. Jika sudah ada → stop.
2) Intent + Tool Calls (OpenAI)
Gunakan OpenAI Chat dengan gaya function/tool calling. System prompt ringkas dan guardrails jelas:
- System: “Kamu agen order kedai kopi. Jangan pernah mengarang harga atau SKU. Selalu minta konfirmasi final sebelum checkout. Jika user minta di luar menu, tawarkan alternatif. Gunakan tool yang sesuai.”
- Tools: lookup_menu(term), add_item(sku, qty), remove_item(sku), summarize_cart(), checkout(name, address, payment_method).
LLM mengembalikan rencana aksi (misal memanggil lookup_menu), dan n8n mengeksekusi dengan node-node deterministik.
3) Tool: Lookup Menu (Google Sheets)
- Google Sheets: Read Range ke tab Menu. Filter aktif = TRUE.
- Function: normalisasi nama (lowercase, hapus tanda). Cocokkan nama/alias (“latte”, “caffe latte”). Kalau ragu, kirim disambiguation balik ke user.
4) State Machine: Keranjang & Order
- Buat order saat user menambah item pertama. Tulis ke tab Orders dengan status building.
- Tulis item ke tab OrderItems. Update total dari harga di Menu x qty.
- Konfirmasi: kirim ringkasan keranjang (nama item, qty, subtotal, total). Minta “ketik KONFIRM” untuk checkout.
5) Checkout + Pembayaran
- Jika pilih COD: ubah status ke confirmed, kirim estimasi waktu.
- Jika non-COD: panggil Xendit/Midtrans untuk invoice. Simpan payment_link di Orders. Kirim link ke pelanggan (pakai template HSM jika di luar window 24 jam).
- Tambahkan webhook dari gateway pembayaran ke n8n untuk update status paid.
6) Kirim Balasan via WhatsApp
- HTTP Request → POST https://graph.facebook.com/v18.0/{PHONE_NUMBER_ID}/messages
- Body minimal untuk teks: { type: "text", to: wa_id, text: { body: "..." } }
- Gunakan interactive (list/button) untuk pemilihan cepat: ukuran, metode bayar, dll.
7) Logging, Observability, dan Recovery
- Statistik: tulis log ke Sheets/DB: intent, durasi, model, token.
- Retry: aktifkan retry terbatas untuk API eksternal. WhatsApp punya rate limit, gunakan jeda.
- Fallback human: jika confidence rendah, rute ke operator (Slack/Telegram) dengan ringkasan percakapan.
Contoh use case real: Kedai Kopi “Sore Sore”
Skenario:
- Pelanggan: “Kak saya mau 2 latte 1 kurang manis, sama 1 croissant.”
- Agent: cek menu (latte, croissant), tanya ukuran latte (S/M/L) jika belum disebut, interpret “kurang manis” → less sugar.
- Agent: hitung total (harga dari Sheets), kirim ringkasan dan opsi bayar (COD / transfer / e-wallet via link).
- Pelanggan: “Transfer aja.”
- Agent: panggil Xendit → buat invoice → kirim link.
- Gateway: webhook paid → n8n update status order “paid” → kirim pesan “Pesanan diproses, estimasi 20 menit.”
Di jam sibuk, bot ini ambil 70% percakapan standar. Sisanya dioper ke manusia kalau ada permintaan kustom berat.
Prompt yang nempel ke bisnis (bukan generik)
Jangan pakai prompt generik. Kaitkan langsung ke menu dan aturanmu:
- “Harga dan stok hanya valid dari tabel Menu.”
- “Jika user minta item non-aktif, tawarkan 2 alternatif terdekat harga/varian.”
- “Selalu minta konfirmasi final dengan kata kunci KONFIRM sebelum checkout.”
- “Jika alamat tidak lengkap, minta patokan/RT/RW.”
Aha moment: LLM boleh salah paham, tapi kamu bisa buat sistem yang tidak bisa salah total/harga karena semua angka diambil dari Sheets. Itu inti guardrail.
Strategi & insight bawa AI Agent WhatsApp ke produksi
- Three-layer agent: policy → LLM → tools. Keputusan uang dan stok selalu di tools.
- 24-hour window: pastikan semua balasan tetap dalam window. Kalau lewat, pakai template HSM (harus disetujui dulu di Meta).
- Idempotensi: simpan message_id ke ProcessedEvents. Kalau n8n crash dan Meta retry, workflow tetap aman.
- Concurrency: lock order per wa_id. Sederhana: di Orders simpan kolom locked_by dan cek sebelum update.
- Anti-hallucination: LLM tidak boleh membuat SKU baru. Cocokkan hanya dari Sheet Menu. Jika tidak ditemukan → klarifikasi.
- Upsell terukur: setelah ringkasan keranjang, tawarkan 1 add-on relevan (kue/ukuran besar) berdasarkan kategori item.
- Monitoring: buat dashboard sederhana: orders per jam, conversion rate, waktu respons. Kalau latency > 3 detik, periksa bottleneck (LLM/pembacaan Sheets).
- Biaya: pakai model gpt-4o-mini atau yang hemat; cache jawaban FAQ (ongkir, jam buka) di n8n Data Store.
- Privasi: redaksi PII (alamat/telepon) saat kirim ke channel internal untuk debug.
Detail teknis node kunci (yang sering bikin nyangkut)
WhatsApp Send API
- Endpoint: /{PHONE_NUMBER_ID}/messages
- Header: Authorization: Bearer WHATSAPP_TOKEN; Content-Type: application/json
- Body teks: { "messaging_product": "whatsapp", "to": "62xxxx", "type": "text", "text": { "body": "Halo!" } }
- Interactive list: type=interactive, action=list, rows untuk varian/ukuran.
Parser event WhatsApp (core fields)
- changes[0].value.messages[0].id → message_id
- ...from → wa_id
- ...text.body atau interactive.list_reply/title
- statuses event untuk delivery/read (boleh diabaikan untuk MVP)
Google Sheets sebagai DB ringan
- Gunakan Append untuk Orders/OrderItems, Update untuk status.
- Index sederhana: order_id = concat(timestamp + 4-digit random). Simpan di semua baris OrderItems.
- Query by wa_id untuk menemukan order aktif (status building/confirmed).
OpenAI node (function calling)
- System: aturan bisnis + format respons
- Temperature rendah (0.1–0.3) untuk konsistensi
- Berikan contoh dialog 2–3 putaran agar model paham style
Ekstensi cepat (biar MVP naik kelas)
- Alamat → koordinat: panggil Geocoding API (Google/Mapbox) untuk estimasi ongkir.
- Kurir lokal: integrasi API Gojek/Grab/AnterAja instan setelah status paid.
- Catalog sync: push Sheet → WhatsApp Catalog untuk balasan bergambar.
- RAG FAQ: tambahkan knowledge base (jam buka, kebijakan) supaya jawaban konsisten.
- Multi-tenant: parametrisasi Sheets dan nomor WA per tenant untuk dijual sebagai micro‑SaaS.
Vibe coding: deliver dulu, rapikan belakangan
Target 1 hari:
- Pagi: setup WhatsApp Cloud API + Webhook n8n; kirim balasan statis.
- Siang: sambungkan Sheets; bisa tambah item + ringkas keranjang.
- Sore: checkout + kirim link invoice; tutup dengan notifikasi paid.
- Malam: tambahkan guardrail minimal (idempotensi + konfirmasi final).
Besoknya baru pikirkan observability dan scale. Build SaaS cepat dengan AI itu fokus ke nilai yang langsung terasa, bukan kesempurnaan arsitektur.
Checklist sebelum go-live
- Semua harga/sku benar di Sheets; kolom aktif terisi.
- Template HSM minimal satu untuk follow-up di luar 24 jam.
- Pesan error ramah (“maaf, lagi ramai, ini alternatifnya…”).
- Nomor eskalasi manual siap kalau bot bingung.
- Log token/PII tidak bocor di error output n8n.
Penutup
Kamu baru saja punya AI Agent WhatsApp yang beneran kerja: menerima order, cek menu, hitung total, dan kirim link bayar. Ini bukan teori — ini workflow automation nyata yang bisa langsung diuji di bisnis kecil hingga skala ratusan order/hari. Langkah next:
- Tambah kurir instan atau POS lokal kamu.
- Jadikan multi-tenant dan tawarkan sebagai layanan ke bisnis sekitar.
- Eksperimen upsell otomatis dan A/B test prompt untuk meningkatkan AOV.
Kalau kamu bangun ini hari ini, besok kamu sudah tidur lebih nyenyak. Gaskeun.