Bot Jualan dengan Referral System
Cara buat bot jualan WhatsApp dengan referral system. Kode referral, tracking, rewards otomatis. Grow via word of mouth!
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 attributionTemplate 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: 200000Withdrawal 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 gamificationDON'T ❌
- One-sided rewards only
- Complicated sharing
- No tracking/dashboard
- Slow/unclear payouts
- No milestones
- Allow abuse/fraudFAQ
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 Marketing | Referral |
|---|---|
| Cost upfront | Cost on success |
| Cold audience | Warm leads |
| Low trust | High trust |
| Expensive | Cost-effective |