Chatbot WA untuk Konfirmasi COD Otomatis
Setup chatbot WhatsApp untuk konfirmasi COD. Kurangi fake order, auto reminder, konfirmasi alamat otomatis. Tutorial!
COD = Banyak fake order!
Customer order, paket dikirim, eh ditolak. Rugi ongkir balik!
Solusinya: Konfirmasi COD otomatis via chatbot!
Masalah COD tanpa Konfirmasi
😫 Fake order (PHP)
😫 Alamat tidak lengkap
😫 Customer tidak di tempat
😫 Tolak bayar saat terima
😫 Rugi ongkir 2x (kirim + retur)Solusi: COD Confirmation Flow
Order COD masuk
↓
Bot kirim konfirmasi ke customer
↓
Customer reply KONFIRMASI
↓
Baru proses kirim
↓
Bot reminder H-1 pengiriman
↓
Paket sampai, COD berhasil ✅Template Konfirmasi COD
Step 1: Konfirmasi Order
🛒 KONFIRMASI ORDER COD
Hai Kak [NAMA]!
Berikut detail pesanan COD kamu:
━━━━━━━━━━━━━━━━━━
📦 Order #[NOMOR]
[PRODUK] x [QTY]
Harga: Rp [HARGA]
Ongkir: Rp [ONGKIR]
━━━━━━━━━━━━━━━━━━
💰 TOTAL BAYAR: Rp [TOTAL]
(Bayar saat terima paket)
━━━━━━━━━━━━━━━━━━
📍 Alamat kirim:
[ALAMAT LENGKAP]
✅ Apakah data sudah benar?
Reply:
- KONFIRMASI - Jika setuju
- UBAH - Jika ada yang salah
- BATAL - Jika cancel order
⏰ Batas konfirmasi: 12 jam
Tanpa konfirmasi = order batal otomatisStep 2: Konfirmasi Diterima
✅ ORDER COD DIKONFIRMASI!
Terima kasih Kak [NAMA]!
Pesanan akan segera diproses:
📦 Order #[NOMOR]
💰 Total bayar saat terima: Rp [TOTAL]
📅 Estimasi sampai: [TANGGAL]
⚠️ PENTING:
- Pastikan ada orang di alamat
- Siapkan uang pas: Rp [TOTAL]
- Kurir akan hubungi sebelum antar
Kami akan kabari saat paket dikirim! 📦Step 3: Paket Dikirim
📦 PAKET SUDAH DIKIRIM!
Hai Kak [NAMA]!
Order #[NOMOR] sudah dalam perjalanan!
🚚 Kurir: [KURIR]
📝 Resi: [RESI]
📅 Estimasi: [TANGGAL]
Track: [LINK]
💰 Siapkan uang: Rp [TOTAL]
Bayar ke kurir saat terima paket.
📱 Kurir akan hubungi sebelum antar.
Pastikan HP aktif ya!Step 4: Reminder H-1
🔔 REMINDER PAKET COD
Hai Kak [NAMA]!
Paket COD akan sampai BESOK!
📦 Order #[NOMOR]
💰 Bayar: Rp [TOTAL]
📍 Alamat: [ALAMAT]
✅ Checklist:
□ Siapkan uang pas
□ Ada orang di alamat
□ HP aktif
Jika berhalangan, reply RESCHEDULE.
Terima kasih! 🙏Step 5: Delivered
🎉 PAKET SUDAH DITERIMA!
Hai Kak [NAMA]!
Terima kasih sudah belanja di [TOKO]!
📦 Order #[NOMOR] ✅ SELESAI
Gimana produknya?
Semoga suka ya! 💕
Kalau puas, boleh minta review? ⭐
[LINK REVIEW]
Belanja lagi? Ketik KATALOG!Implementasi COD Bot
javascript
// COD order state
const codOrders = new Map();
// Step 1: Order masuk
async function handleCODOrder(order) {
codOrders.set(order.id, {
...order,
status: 'pending_confirmation',
createdAt: new Date()
});
await sendCODConfirmation(order);
// Schedule auto-cancel jika tidak konfirmasi
setTimeout(async () => {
const current = codOrders.get(order.id);
if (current?.status === 'pending_confirmation') {
await cancelOrder(order.id, 'No confirmation');
await notifyCustomer(order.phone,
`Order #${order.id} dibatalkan karena tidak dikonfirmasi.`);
}
}, 12 * 60 * 60 * 1000); // 12 jam
}
// Handle customer response
client.on('message', async msg => {
const text = msg.body.toUpperCase();
const order = findOrderByPhone(msg.from);
if (!order) return;
if (order.status === 'pending_confirmation') {
if (text === 'KONFIRMASI') {
order.status = 'confirmed';
await msg.reply(confirmedMessage(order));
await notifyAdmin(`Order #${order.id} dikonfirmasi!`);
}
else if (text === 'UBAH') {
await msg.reply('Apa yang mau diubah?\n\n' +
'1. Alamat\n2. Produk\n3. Kurir');
}
else if (text === 'BATAL') {
await cancelOrder(order.id, 'Customer cancel');
await msg.reply('Order dibatalkan. Terima kasih! 🙏');
}
}
});Auto Reminder Schedule
javascript
const cron = require('node-cron');
// Reminder H-1 setiap pagi
cron.schedule('0 8 * * *', async () => {
const tomorrow = getTomorrowDate();
const ordersArrivingTomorrow = await db.orders.find({
estimatedArrival: tomorrow,
paymentMethod: 'COD',
status: 'shipped'
});
for (const order of ordersArrivingTomorrow) {
await sendReminderH1(order);
}
});
// Check delivered orders
cron.schedule('0 */3 * * *', async () => {
const shippedOrders = await db.orders.find({
paymentMethod: 'COD',
status: 'shipped'
});
for (const order of shippedOrders) {
const trackingStatus = await checkTracking(order.resi);
if (trackingStatus === 'delivered') {
order.status = 'delivered';
await sendDeliveredMessage(order);
}
}
});Handle Masalah COD
Customer Tidak Konfirmasi:
⚠️ ORDER DIBATALKAN
Hai Kak [NAMA],
Order #[NOMOR] dibatalkan karena
tidak ada konfirmasi dalam 12 jam.
Mau order ulang? Ketik ORDER!
Terima kasih 🙏Customer Minta Reschedule:
📅 RESCHEDULE PENGIRIMAN
Order #[NOMOR]
Kapan waktu yang cocok?
1️⃣ Besok, [TANGGAL]
2️⃣ Lusa, [TANGGAL]
3️⃣ [TANGGAL LAIN]
Ketik angka atau tanggal (DD/MM)Customer Tolak Paket:
📦 PAKET DITOLAK
Order #[NOMOR] ditolak oleh penerima.
Alasan: [ALASAN]
Paket akan diretur ke kami.
⚠️ Customer dengan 2x penolakan
tidak bisa order COD lagi.
Mau order ulang dengan transfer?
Ketik ORDER.Blacklist System
javascript
const codBlacklist = new Set();
const codWarnings = new Map();
async function handleCODRejection(customer, order) {
const currentWarnings = codWarnings.get(customer.phone) || 0;
const newWarnings = currentWarnings + 1;
codWarnings.set(customer.phone, newWarnings);
if (newWarnings >= 2) {
codBlacklist.add(customer.phone);
await sendMessage(customer.phone,
`Maaf, akun Anda tidak bisa menggunakan COD karena
2x penolakan paket. Silakan gunakan transfer.`);
} else {
await sendMessage(customer.phone,
`⚠️ Warning: Ini penolakan COD ke-${newWarnings}.
${2 - newWarnings}x lagi, COD akan dinonaktifkan.`);
}
}
// Check before accepting COD
function canUseCOD(phone) {
return !codBlacklist.has(phone);
}Tips Kurangi Fake Order
1. Wajib Konfirmasi
Tanpa reply "KONFIRMASI" = tidak proses
Kurangi 70% fake order!2. Minimum Order COD
COD tersedia untuk:
- Min. order Rp 100.000
- Alamat lengkap (termasuk RT/RW)
- No HP aktif (bisa di-call)3. DP untuk First Timer
Customer baru?
Minta DP 20-30% untuk COD pertama.
Setelah sukses, bisa full COD.4. Verifikasi Telepon
Sebelum kirim, call customer:
"Konfirmasi, besok paket COD Rp X sampai ya"FAQ
Berapa efektif konfirmasi COD via bot?
Dari pengalaman, bisa kurangi fake order 50-70%. Yang tidak serius biasanya tidak mau repot konfirmasi.
Bagaimana jika customer tidak punya WA?
Gunakan SMS atau telepon sebagai backup. Atau set rule: COD hanya untuk yang bisa dihubungi via WA.
Perlu blacklist permanent?
Tergantung kebijakan. Bisa permanent atau temporary (6 bulan). Yang penting ada konsekuensi untuk yang sering reject.
Kesimpulan
COD Bot = Kurangi fake order!
| Tanpa Bot | Dengan Bot |
|---|---|
| Langsung kirim | Konfirmasi dulu |
| Banyak reject | Filter di awal |
| No reminder | Auto reminder |
| Rugi ongkir | Minimized loss |
Lindungi bisnis dari PHP customer!