Chatbot WA untuk Konfirmasi COD Otomatis

Setup chatbot WhatsApp untuk konfirmasi COD. Kurangi fake order, auto reminder, konfirmasi alamat otomatis. Tutorial!

Chatbot WA untuk Konfirmasi COD Otomatis
Chatbot WA untuk Konfirmasi COD Otomatis

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 otomatis

Step 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 BotDengan Bot
Langsung kirimKonfirmasi dulu
Banyak rejectFilter di awal
No reminderAuto reminder
Rugi ongkirMinimized loss

Lindungi bisnis dari PHP customer!

Setup COD Bot →


Artikel Terkait