Bot Jualan dengan Referral System

Cara buat bot jualan WhatsApp dengan referral system. Kode referral, tracking, rewards otomatis. Grow via word of mouth!

Bot Jualan dengan Referral System
Bot Jualan dengan Referral System

Referral = Free marketing!

Customer yang happy adalah salesperson terbaik. Bot dengan referral system memudahkan mereka share dan dapat reward.


Referral Mechanics

🎁 STRUKTUR REFERRAL:

TWO-SIDED REWARDS:
- Referrer: dapat bonus
- Referee: dapat diskon

REWARD OPTIONS:
- Cash/wallet balance
- Discount voucher
- Free product
- Points

TRACKING:
- Unique referral code
- Link tracking
- Automatic attribution

Template Messages

Referral Program Info:

🎁 PROGRAM REFERRAL

Ajak teman, dapat bonus! 💰

CARA KERJANYA:
━━━━━━━━━━━━━━━━━━━━
1. Share kode referral kamu
2. Teman pakai kode saat checkout
3. Teman dapat diskon 15%
4. Kamu dapat Rp 50.000! 🎉
━━━━━━━━━━━━━━━━━━━━

🎫 KODE REFERRAL KAMU:
BUDI2026

🔗 LINK SHARE:
[BRAND].com/ref/BUDI2026

📊 STATISTIK:
- Total referral: 5 orang
- Pending: 2 orang
- Earned: Rp 250.000

Share sekarang! 👇

Share Templates:

📤 TEMPLATE SHARE

Copy & share ke teman:

─────────────────
WHATSAPP:
"Hai! Aku lagi suka banget sama 
[BRAND]. Produknya bagus!

Kalau mau coba, pakai kode aku:
BUDI2026

Dapat diskon 15%! 🎁

Order di: [LINK]"
─────────────────

INSTAGRAM:
"Best purchase ever! 🛍️
Use my code BUDI2026 for 15% off
@[BRAND] #[BRAND]Referral"
─────────────────

Atau share langsung via:
1️⃣ WhatsApp
2️⃣ Instagram DM
3️⃣ Copy Link

Ketik angka!

WhatsApp Share:

📱 SHARE VIA WHATSAPP

Pilih mau share ke:

1️⃣ Satu kontak
2️⃣ Grup WhatsApp
3️⃣ WA Status/Story

Ketik angka untuk generate
link share yang bisa diklik!

💡 Tip: Share ke grup yang relevan
   untuk hasil maksimal!

Referral Code Applied:

🎉 KODE REFERRAL VALID!

Kode: BUDI2026
Referrer: Kak Budi

✅ DISKON 15% APPLIED!

Subtotal: Rp 200.000
Diskon: -Rp 30.000
━━━━━━━━━━━━━━━━━━━━
TOTAL: Rp 170.000

Hemat Rp 30.000! 💰

Kak Budi akan dapat bonus
setelah pesanan selesai.

Lanjut checkout?

Referral Success (to Referrer):

🎉 REFERRAL BERHASIL!

Hai Kak Budi!

Teman kamu berhasil order! 🛍️

📋 Detail:
━━━━━━━━━━━━━━━━━━━━
Referee: Kak Ani
Order: #ORD-20260217-001
Kode: BUDI2026

💰 REWARD KAMU:
+Rp 50.000 ke saldo!
━━━━━━━━━━━━━━━━━━━━

📊 TOTAL EARNED:
Rp 300.000 (6 referrals)

Saldo bisa dipakai belanja
atau withdraw ke rekening!

Terus share untuk dapat lebih! 💪

Milestone Achievement:

🏆 MILESTONE ACHIEVED!

Selamat Kak Budi!

Kamu sudah refer 10 orang! 🎉

BONUS MILESTONE:
━━━━━━━━━━━━━━━━━━━━
✅ 5 referrals: +Rp 100k ✓
✅ 10 referrals: +Rp 250k ← NOW!
⬜ 25 referrals: +Rp 500k
⬜ 50 referrals: +Rp 1.000k + Gift
━━━━━━━━━━━━━━━━━━━━

💰 Bonus credited: +Rp 250.000

Total saldo: Rp 800.000

Kamu luar biasa! 🌟
Next milestone: 15 referrals lagi!

Referral Dashboard:

📊 REFERRAL DASHBOARD

Kode: BUDI2026

OVERVIEW:
━━━━━━━━━━━━━━━━━━━━
Total Clicks: 45
Signups: 18
Purchases: 12
Conversion: 27%

💰 EARNINGS:
━━━━━━━━━━━━━━━━━━━━
Completed: Rp 600.000 (12 ref)
Pending: Rp 100.000 (2 ref)
Withdrawn: Rp 400.000
Available: Rp 200.000

📅 THIS MONTH:
- Clicks: 15
- Purchases: 4
- Earned: Rp 200.000

🏆 RANK:
#23 of 500 referrers

Mau withdraw? Ketik WITHDRAW!

Withdrawal Process

Withdrawal Request:

💳 WITHDRAW SALDO

Saldo tersedia: Rp 200.000
Minimum withdraw: Rp 100.000

Pilih metode:

1️⃣ Transfer Bank
2️⃣ GoPay
3️⃣ OVO
4️⃣ DANA

Ketik angka untuk pilih!

Withdrawal Form:

📝 FORM WITHDRAW

Metode: Transfer Bank

Isi data rekening:

WITHDRAW
Bank: [BCA/Mandiri/BNI/BRI]
No Rekening: [Nomor]
Nama Pemilik: [Nama sesuai rekening]
Nominal: [Min 100k, max saldo]

Contoh:
WITHDRAW
Bank: BCA
No Rekening: 1234567890
Nama Pemilik: Budi Santoso
Nominal: 200000

Withdrawal Confirmed:

✅ WITHDRAW DIPROSES!

ID: #WD-20260217-001

📋 Detail:
━━━━━━━━━━━━━━━━━━━━
Nominal: Rp 200.000
Biaya admin: Rp 0
Diterima: Rp 200.000

Bank: BCA
Rekening: ****7890
Nama: Budi Santoso

⏰ Estimasi: 1x24 jam kerja

Saldo sekarang: Rp 0

Notifikasi akan dikirim
setelah transfer berhasil!

Implementation

javascript

// Generate referral code
function generateReferralCode(customerName) {
    const base = customerName.toUpperCase().replace(/\s+/g, '').slice(0, 4);
    const suffix = Math.random().toString(36).substring(2, 6).toUpperCase();
    return `${base}${suffix}`;
}

// Track referral
async function trackReferralClick(code) {
    await db.referralStats.updateOne(
        { code },
        { $inc: { clicks: 1 } },
        { upsert: true }
    );
}

// Apply referral at checkout
async function applyReferralCode(orderId, code) {
    const referrer = await db.customers.findOne({ referralCode: code });
    
    if (!referrer) {
        return { success: false, error: 'invalid_code' };
    }
    
    // Check if referee already used a code
    const order = await db.orders.findOne({ id: orderId });
    const referee = await db.customers.findOne({ id: order.customerId });
    
    if (referee.usedReferralCode) {
        return { success: false, error: 'already_used_referral' };
    }
    
    // Can't refer yourself
    if (referrer.id === referee.id) {
        return { success: false, error: 'self_referral' };
    }
    
    // Apply discount to referee
    const discount = order.total * 0.15; // 15% off
    
    await db.orders.updateOne(
        { id: orderId },
        {
            $set: {
                referralCode: code,
                referralDiscount: discount
            }
        }
    );
    
    // Create pending reward for referrer
    await db.referralRewards.insert({
        referrerId: referrer.id,
        refereeId: referee.id,
        orderId,
        amount: 50000,
        status: 'pending', // Confirmed after order complete
        createdAt: new Date()
    });
    
    return {
        success: true,
        discount,
        referrerName: referrer.name
    };
}

// Confirm reward after order delivered
async function confirmReferralReward(orderId) {
    const reward = await db.referralRewards.findOne({ orderId, status: 'pending' });
    
    if (reward) {
        // Update reward status
        await db.referralRewards.updateOne(
            { id: reward.id },
            { $set: { status: 'confirmed', confirmedAt: new Date() } }
        );
        
        // Credit to referrer's wallet
        await db.wallets.updateOne(
            { customerId: reward.referrerId },
            { $inc: { balance: reward.amount } },
            { upsert: true }
        );
        
        // Check milestones
        await checkMilestone(reward.referrerId);
        
        // Notify referrer
        const referrer = await db.customers.findOne({ id: reward.referrerId });
        await sendReferralSuccessNotification(referrer.phone, reward);
    }
}

// Milestone bonuses
const milestones = [
    { count: 5, bonus: 100000 },
    { count: 10, bonus: 250000 },
    { count: 25, bonus: 500000 },
    { count: 50, bonus: 1000000 }
];

async function checkMilestone(referrerId) {
    const confirmedCount = await db.referralRewards.count({
        referrerId,
        status: 'confirmed'
    });
    
    const achievedMilestones = await db.milestones.find({
        referrerId,
        type: 'referral'
    });
    
    for (const milestone of milestones) {
        if (confirmedCount >= milestone.count) {
            const alreadyAchieved = achievedMilestones.some(
                m => m.threshold === milestone.count
            );
            
            if (!alreadyAchieved) {
                // Award milestone bonus
                await db.wallets.updateOne(
                    { customerId: referrerId },
                    { $inc: { balance: milestone.bonus } }
                );
                
                await db.milestones.insert({
                    referrerId,
                    type: 'referral',
                    threshold: milestone.count,
                    bonus: milestone.bonus,
                    achievedAt: new Date()
                });
                
                const referrer = await db.customers.findOne({ id: referrerId });
                await sendMilestoneNotification(referrer.phone, milestone);
            }
        }
    }
}

Best Practices

DO ✅

- Two-sided rewards (both benefit)
- Easy to share (templates ready)
- Track everything
- Quick reward payout
- Milestone bonuses
- Leaderboard for gamification

DON'T ❌

- One-sided rewards only
- Complicated sharing
- No tracking/dashboard
- Slow/unclear payouts
- No milestones
- Allow abuse/fraud

FAQ

Berapa reward yang ideal?

5-15% of order value untuk referrer. Sustainable tapi attractive.

Kapan reward diberikan?

Setelah order selesai (delivered). Prevent fraud dan returns.

Bagaimana prevent abuse?

Verify unique users, minimum order, delay reward sampai delivered.


Kesimpulan

Referral = Organic growth!

Paid MarketingReferral
Cost upfrontCost on success
Cold audienceWarm leads
Low trustHigh trust
ExpensiveCost-effective

Setup Referral System →


Artikel Terkait