Bot WA untuk Lead Generation

Cara buat bot WhatsApp untuk lead generation. Capture, qualify, dan nurture leads otomatis. Tingkatkan konversi sales!

Bot WA untuk Lead Generation
Bot WA untuk Lead Generation

Leads masuk tapi tidak ter-follow up = Sales hilang!

Bot lead generation memastikan setiap lead ter-capture dan di-nurture sampai jadi customer.


Apa Itu Lead Generation Bot?

LEAD GENERATION BOT:
Bot yang otomatis:
1. Capture informasi kontak
2. Qualify (filter) leads
3. Nurture dengan info/promo
4. Handover ke sales saat ready

Bukan cuma balas chat, tapi CONVERT ke sales!

Alur Lead Generation

┌──────────────────────────────────────────┐
│           TRAFFIC SOURCE                  │
│  (Iklan, Website, Social Media, dll)     │
└────────────────────┬─────────────────────┘
                     │
                     ▼
┌──────────────────────────────────────────┐
│              BOT CAPTURE                  │
│    "Hai! Mau tau info lebih lanjut?"     │
│    Collect: Nama, Email, Kebutuhan       │
└────────────────────┬─────────────────────┘
                     │
                     ▼
┌──────────────────────────────────────────┐
│              BOT QUALIFY                  │
│    Score lead berdasarkan:               │
│    Budget, Timeline, Authority, Need     │
└────────────────────┬─────────────────────┘
                     │
        ┌────────────┴────────────┐
        ▼                         ▼
┌──────────────────┐    ┌──────────────────┐
│   HOT LEAD 🔥     │    │   WARM LEAD 🌡️   │
│   → Sales Call    │    │   → Nurture      │
└──────────────────┘    └──────────────────┘

Step 1: Capture Leads

Greeting & Data Collection:

👋 Hai! Selamat datang di [BRAND]!

Senang bisa membantu. Boleh kenalan dulu?

Ketik NAMA kakak untuk mulai 😊

Progressive Profiling:

javascript

const leadFlow = {
    step1_name: {
        question: "Boleh tau nama kakak?",
        field: 'name',
        next: 'step2_need'
    },
    step2_need: {
        question: "Hai {name}! Kakak tertarik dengan produk apa?\n\n1️⃣ Produk A\n2️⃣ Produk B\n3️⃣ Produk C\n4️⃣ Belum tau, mau lihat-lihat",
        field: 'interest',
        next: 'step3_budget'
    },
    step3_budget: {
        question: "Budget kakak kisaran berapa?\n\n1️⃣ < Rp 1 juta\n2️⃣ Rp 1-5 juta\n3️⃣ Rp 5-10 juta\n4️⃣ > Rp 10 juta",
        field: 'budget',
        next: 'step4_timeline'
    },
    step4_timeline: {
        question: "Rencananya mau beli kapan?\n\n1️⃣ Minggu ini\n2️⃣ Bulan ini\n3️⃣ 1-3 bulan lagi\n4️⃣ Belum pasti",
        field: 'timeline',
        next: 'complete'
    }
};

Implementation:

javascript

const leadState = new Map();

client.on('message', async msg => {
    let lead = leadState.get(msg.from) || { step: 'step1_name', data: {} };
    
    const currentStep = leadFlow[lead.step];
    
    // Save answer
    lead.data[currentStep.field] = msg.body;
    
    // Move to next step
    if (currentStep.next === 'complete') {
        // Lead captured!
        await saveLead(msg.from, lead.data);
        await qualifyLead(msg.from, lead.data);
        leadState.delete(msg.from);
        
        await msg.reply(`Terima kasih ${lead.data.name}! 🙏\n\nTim kami akan segera menghubungi kakak.`);
    } else {
        lead.step = currentStep.next;
        leadState.set(msg.from, lead);
        
        // Send next question (with personalization)
        const nextQuestion = leadFlow[lead.step].question
            .replace('{name}', lead.data.name || 'Kak');
        
        await msg.reply(nextQuestion);
    }
});

Step 2: Qualify Leads (Lead Scoring)

BANT Framework:

B - Budget: Punya budget yang cukup?
A - Authority: Pengambil keputusan?
N - Need: Ada kebutuhan nyata?
T - Timeline: Mau beli dalam waktu dekat?

Scoring System:

javascript

function calculateLeadScore(leadData) {
    let score = 0;
    
    // Budget scoring
    const budgetScores = {
        '< Rp 1 juta': 10,
        'Rp 1-5 juta': 20,
        'Rp 5-10 juta': 30,
        '> Rp 10 juta': 40
    };
    score += budgetScores[leadData.budget] || 0;
    
    // Timeline scoring
    const timelineScores = {
        'Minggu ini': 40,
        'Bulan ini': 30,
        '1-3 bulan lagi': 15,
        'Belum pasti': 5
    };
    score += timelineScores[leadData.timeline] || 0;
    
    // Interest scoring
    if (leadData.interest !== 'Belum tau') {
        score += 20; // Specific interest = more serious
    }
    
    return score;
}

function getLeadCategory(score) {
    if (score >= 70) return 'HOT 🔥';      // Prioritas tinggi
    if (score >= 40) return 'WARM 🌡️';     // Follow up soon
    return 'COLD ❄️';                       // Nurture dulu
}

Auto-Categorization:

javascript

async function qualifyLead(phone, leadData) {
    const score = calculateLeadScore(leadData);
    const category = getLeadCategory(score);
    
    // Update lead di database
    await db.leads.updateOne(
        { phone },
        { 
            $set: { 
                score, 
                category,
                qualifiedAt: new Date() 
            } 
        }
    );
    
    // Action berdasarkan category
    if (category === 'HOT 🔥') {
        // Immediately notify sales
        await notifySales({
            message: `🔥 HOT LEAD!\n\nNama: ${leadData.name}\nPhone: ${phone}\nInterest: ${leadData.interest}\nBudget: ${leadData.budget}\nTimeline: ${leadData.timeline}\nScore: ${score}`,
            priority: 'urgent'
        });
        
        // Promise quick response to lead
        await sendWhatsApp(phone, 
            `${leadData.name}, tim sales kami akan menghubungi kakak dalam 15 menit! 🚀`
        );
    } else if (category === 'WARM 🌡️') {
        // Add to nurture sequence
        await startNurtureSequence(phone, 'warm_lead');
    } else {
        // Add to long-term nurture
        await startNurtureSequence(phone, 'cold_lead');
    }
}

Step 3: Lead Nurturing

Nurture Sequences:

javascript

const nurtureSequences = {
    warm_lead: [
        { day: 0, template: 'welcome_warm' },
        { day: 1, template: 'product_benefits' },
        { day: 3, template: 'case_study' },
        { day: 5, template: 'limited_offer' },
        { day: 7, template: 'last_chance' }
    ],
    cold_lead: [
        { day: 0, template: 'welcome_cold' },
        { day: 7, template: 'educational_content' },
        { day: 14, template: 'tips_and_tricks' },
        { day: 30, template: 'check_in' }
    ]
};

const templates = {
    welcome_warm: `Hai {name}! 👋

Terima kasih sudah tertarik dengan {product}.

Ini beberapa info yang mungkin membantu:
📄 Brosur: [LINK]
💰 Pricelist: [LINK]
⭐ Testimoni: [LINK]

Ada pertanyaan? Langsung reply aja ya!`,

    product_benefits: `Hai {name}! 😊

Tau gak sih, {product} kami sudah dipakai 1000+ customer!

Keunggulannya:
✅ [Benefit 1]
✅ [Benefit 2]
✅ [Benefit 3]

Mau tau lebih detail?
Ketik INFO untuk penjelasan lengkap!`,

    limited_offer: `🔥 SPECIAL OFFER untuk {name}!

Karena kakak sudah menunjukkan interest,
kami kasih penawaran khusus:

🏷️ DISKON 15%
⏰ Berlaku 48 jam saja!

Mau claim?
Ketik CLAIM untuk ambil promo ini!`
};

Step 4: Handover ke Sales

Trigger Handover:

javascript

// Kondisi handover ke human sales
const handoverTriggers = [
    'mau beli',
    'deal',
    'ok order',
    'siap bayar',
    'hubungi saya',
    'CLAIM' // dari promo
];

client.on('message', async msg => {
    const text = msg.body.toLowerCase();
    
    // Check for buying signals
    const shouldHandover = handoverTriggers.some(trigger => 
        text.includes(trigger)
    );
    
    if (shouldHandover) {
        const lead = await db.leads.findOne({ phone: msg.from });
        
        // Notify sales immediately
        await notifySales({
            type: 'HOT_LEAD_READY',
            lead: lead,
            lastMessage: msg.body
        });
        
        // Inform customer
        await msg.reply(`Mantap ${lead.name}! 🎉

Tim sales kami akan langsung menghubungi kakak.
Mohon tunggu sebentar ya! 📞`);
        
        // Mark lead as handed over
        await db.leads.updateOne(
            { phone: msg.from },
            { $set: { status: 'handed_over', handoverAt: new Date() } }
        );
    }
});

Lead Dashboard

📊 LEAD GENERATION DASHBOARD

Today's Stats:
├── New Leads: 45
├── Qualified: 38
├── Hot Leads: 8 🔥
├── Warm Leads: 18 🌡️
└── Cold Leads: 12 ❄️

Conversion Funnel:
Visitors → Leads: 15%
Leads → Qualified: 84%
Qualified → Sales: 21%
Sales → Closed: 35%

Top Sources:
1. Facebook Ads: 52%
2. Google Ads: 28%
3. Organic: 15%
4. Referral: 5%

Integration dengan CRM

javascript

// Sync leads ke CRM (contoh: HubSpot)
async function syncToCRM(lead) {
    const hubspot = new HubSpotClient({ apiKey: process.env.HUBSPOT_KEY });
    
    await hubspot.contacts.create({
        properties: {
            phone: lead.phone,
            firstname: lead.name,
            lead_score: lead.score,
            lead_source: 'WhatsApp Bot',
            interest: lead.interest,
            budget_range: lead.budget,
            timeline: lead.timeline
        }
    });
}

Best Practices

DO ✅

- Capture minimal info dulu (nama)
- Progressive profiling (bertahap)
- Quick response untuk hot leads
- Personalisasi semua messages
- Track dan optimize conversion
- Integrate dengan CRM

DON'T ❌

- Tanya terlalu banyak di awal
- Slow response untuk hot leads
- Generic nurture content
- Tidak ada lead scoring
- Manual tracking (pakai spreadsheet)
- Tidak ada follow up

FAQ

Berapa pertanyaan ideal untuk capture lead?

3-5 pertanyaan sudah cukup untuk qualify. Lebih dari itu, drop rate naik.

Berapa lama nurture cold leads?

30-90 hari dengan content berkala. Jangan terlalu sering (spam), jangan terlalu jarang (forgotten).

Hot lead harus di-follow up dalam berapa lama?

15 menit - 1 jam maksimal. Lebih lama = conversion drop significantly.


Kesimpulan

Lead generation bot = Sales machine 24/7!

ManualDengan Bot
Lead terlewatSemua ter-capture
Tidak ter-qualifyAuto scoring
Lupa follow upAuto nurture
Slow responseInstant

Capture every lead, convert more sales!

Setup Lead Gen Bot →


Artikel Terkait