Bot Jualan dengan Upsell & Cross-sell
Cara buat bot jualan WhatsApp dengan fitur upsell dan cross-sell. Tingkatkan average order value otomatis!
Sudah dapat customer, jangan sia-siakan!
Upsell dan cross-sell bisa tingkatkan nilai order 20-40% tanpa effort tambahan. Biarkan bot yang handle!
Perbedaan Upsell vs Cross-sell
UPSELL:
Tawarkan versi lebih mahal/premium
"Mau upgrade ke size besar? +Rp 10k aja!"
CROSS-SELL:
Tawarkan produk pelengkap
"Beli sepatu? Tambah kaos kaki?"Kapan Trigger Upsell/Cross-sell?
1. Setelah pilih produk → Suggest upgrade
2. Sebelum checkout → Suggest add-on
3. Saat konfirmasi order → Last chance offer
4. Setelah purchase → Suggest relatedTemplate Upsell
Upgrade Size/Quantity:
💡 MAU LEBIH HEMAT?
Kamu pilih: Paket A (500ml) - Rp 50.000
Upgrade ke Paket B (1 Liter):
💰 Rp 80.000 (hemat Rp 20.000!)
📦 Isi 2x lebih banyak
Mau upgrade?
- YA - Ganti ke Paket B
- TIDAK - Lanjut Paket APremium Version:
✨ UPGRADE KE PREMIUM?
Kamu pilih: Kaos Basic - Rp 75.000
Versi Premium tersedia:
💰 Rp 120.000
✅ Bahan lebih tebal
✅ Jahitan double
✅ Garansi 1 tahun
Selisih cuma Rp 45.000 untuk kualitas lebih!
- UPGRADE - Ganti ke Premium
- LANJUT - Tetap BasicBundle Deal:
🎁 BUNDLE HEMAT!
Kamu pilih: Sepatu A - Rp 300.000
Bundle deal tersedia:
📦 Sepatu A + Kaos kaki (3 pasang)
💰 Rp 340.000 (hemat Rp 35.000!)
Kaos kaki biasa Rp 75.000/3 pasang.
Dengan bundle cuma +Rp 40.000!
- BUNDLE - Ambil paket bundle
- SKIP - Sepatu ajaTemplate Cross-sell
Related Products:
👀 CUSTOMER JUGA BELI:
Kamu order: Celana Jeans
Produk yang sering dibeli bareng:
1. Sabuk kulit - Rp 85.000
2. Kaos polos - Rp 75.000
3. Jaket denim - Rp 250.000
Mau tambah? Ketik angka produk!
Atau SKIP untuk lanjut checkout.Complementary Items:
💡 LENGKAPI OUTFIT KAMU!
Kamu beli: Kemeja Formal
Cocok dipadukan dengan:
🎀 Dasi sutra - Rp 150.000
👔 Manset - Rp 45.000
📦 Paket (Dasi + Manset) - Rp 175.000
Tambah ke keranjang?
- 1 - Dasi
- 2 - Manset
- 3 - Paket (BEST VALUE!)
- SKIP - Lanjut checkoutLast Chance Before Checkout:
🛒 HAMPIR SELESAI!
Keranjang kamu: Rp 285.000
⚡ LAST CHANCE DEALS:
- Tambah Rp 15k → FREE ONGKIR!
- Pouch travel - Rp 35.000 (biasa Rp 50k)
Total jadi Rp 300.000 dapat:
✅ Free ongkir
✅ Bonus pouch
- TAMBAH - Upgrade order
- CHECKOUT - Lanjut bayarImplementasi
Product Relations:
javascript
// Product schema dengan relasi
{
code: 'SP001',
name: 'Sepatu Sneakers',
price: 300000,
// Upsell options
upsells: [
{
type: 'premium',
productCode: 'SP001-PRO',
message: 'Upgrade ke versi Premium dengan sol lebih empuk!',
priceDiff: 50000
}
],
// Cross-sell options
crossSells: [
{ productCode: 'KK001', relation: 'complementary' },
{ productCode: 'TAS001', relation: 'bundle' }
],
// Frequently bought together
frequentlyBoughtWith: ['KK001', 'SPR001']
}Upsell Logic:
javascript
async function checkUpsell(cartItem) {
const product = await db.products.findOne({ code: cartItem.productCode });
if (!product.upsells || product.upsells.length === 0) {
return null;
}
// Get best upsell offer
const upsell = product.upsells[0];
const upsellProduct = await db.products.findOne({ code: upsell.productCode });
return {
currentProduct: product,
upsellProduct: upsellProduct,
message: upsell.message,
priceDiff: upsell.priceDiff,
savings: calculateSavings(product, upsellProduct)
};
}
// After customer selects product
client.on('message', async msg => {
// ... product selection logic ...
const upsellOffer = await checkUpsell(selectedProduct);
if (upsellOffer) {
await msg.reply(formatUpsellMessage(upsellOffer));
// Wait for response
userState.set(msg.from, {
awaitingUpsellResponse: true,
upsellOffer
});
}
});Cross-sell at Checkout:
javascript
async function getCrossSellSuggestions(cart) {
const productCodes = cart.map(item => item.productCode);
const suggestions = [];
for (const code of productCodes) {
const product = await db.products.findOne({ code });
if (product.crossSells) {
for (const cs of product.crossSells) {
// Don't suggest if already in cart
if (!productCodes.includes(cs.productCode)) {
suggestions.push(cs.productCode);
}
}
}
}
// Get unique suggestions
const uniqueSuggestions = [...new Set(suggestions)];
// Fetch product details
return await db.products.find({
code: { $in: uniqueSuggestions.slice(0, 3) }
});
}
// Before checkout
async function preCheckoutOffers(phone, cart) {
const crossSells = await getCrossSellSuggestions(cart);
if (crossSells.length > 0) {
await sendMessage(phone, formatCrossSellMessage(crossSells));
return true; // Waiting for response
}
return false; // Proceed to checkout
}Smart Recommendations:
javascript
// Based on purchase history
async function getPersonalizedRecommendations(customerId, currentCart) {
const purchaseHistory = await db.orders.find({ customerId });
// Find frequently bought together patterns
const boughtProducts = purchaseHistory
.flatMap(order => order.items.map(i => i.productCode));
// Products often bought with current cart items
const currentCodes = currentCart.map(i => i.productCode);
const recommendations = await db.analytics.find({
productA: { $in: currentCodes },
productB: { $nin: currentCodes },
cooccurrence: { $gt: 10 } // Bought together > 10 times
}).sort({ cooccurrence: -1 }).limit(3);
return recommendations;
}Timing & Frequency
RULES:
- Max 1 upsell per product
- Max 2 cross-sell suggestions
- Don't push too hard (offer once, respect "no")
- Time it right (not too early, not too late)
FLOW:
Product selected → Upsell → Accepted/Declined
Before checkout → Cross-sell → Add/Skip
Checkout → Done (no more offers)Best Practices
1. Relevant Offers
❌ Beli sepatu, suggest makanan
✅ Beli sepatu, suggest kaos kaki2. Clear Value Proposition
❌ "Mau upgrade?"
✅ "Upgrade +Rp 50k dapat garansi 2 tahun!"3. Easy to Decline
Selalu ada opsi SKIP/TIDAK.
Jangan maksa!4. Track Performance
A/B test different offers.
Track: Acceptance rate, AOV increaseMetrics
📊 UPSELL/CROSS-SELL REPORT
Upsell:
- Offered: 500
- Accepted: 125 (25%)
- Revenue uplift: Rp 6.250.000
Cross-sell:
- Offered: 450
- Accepted: 90 (20%)
- Revenue uplift: Rp 4.500.000
AOV Before: Rp 250.000
AOV After: Rp 320.000 (+28%)FAQ
Berapa uplift yang realistis?
15-30% AOV increase dengan upsell/cross-sell yang relevan. Tergantung produk & audience.
Kapan tidak boleh upsell?
Saat customer komplain, urgent order, atau sudah decline sekali. Read the room!
Perlu AI untuk recommendations?
Untuk mulai, rule-based cukup (manually set related products). AI untuk scale besar dengan banyak data.
Kesimpulan
Upsell + Cross-sell = Free revenue!
| Tanpa | Dengan Upsell/Cross-sell |
|---|---|
| AOV Rp 250k | AOV Rp 320k |
| Missed opportunity | Maximize every customer |
Don't leave money on the table!