Bot Jualan dengan Analytics & Reporting

Cara buat bot jualan WhatsApp dengan analytics dan reporting. Sales dashboard, insights, data-driven decisions. Panduan lengkap!

Bot Jualan dengan Analytics & Reporting
Bot Jualan dengan Analytics & Reporting

Data = Keputusan yang lebih baik!

Bot jualan yang dilengkapi analytics membantu kamu track performance, identify trends, dan optimize strategi penjualan.


Metrics yang Perlu Ditrack

📊 KEY METRICS:

SALES METRICS:
- Total revenue
- Number of orders
- Average order value (AOV)
- Conversion rate
- Sales by product/category

CUSTOMER METRICS:
- New vs returning
- Customer lifetime value (CLV)
- Repeat purchase rate
- Churn rate

OPERATIONAL METRICS:
- Response time
- Resolution rate
- Cart abandonment
- Popular products
- Peak hours

Daily Report Template

📊 LAPORAN HARIAN

Tanggal: 17 Februari 2026

💰 PENJUALAN:
━━━━━━━━━━━━━━━━━━━━
Total Revenue: Rp 15.750.000
Orders: 45 pesanan
AOV: Rp 350.000

vs Kemarin:
Revenue: ↑ +12%
Orders: ↑ +8%
AOV: ↑ +4%

📦 TOP PRODUCTS:
1. Produk A - 18 pcs (Rp 5.4jt)
2. Produk B - 12 pcs (Rp 4.2jt)
3. Produk C - 8 pcs (Rp 3.2jt)

👥 CUSTOMERS:
New: 28 (62%)
Returning: 17 (38%)

⏰ PEAK HOURS:
19:00-21:00 (35% orders)

📱 CHAT STATS:
Total chats: 156
Converted: 45 (29%)
Abandoned: 23 (15%)
FAQ only: 88 (56%)

Weekly Report:

📊 LAPORAN MINGGUAN

Periode: 11-17 Feb 2026

💰 RINGKASAN PENJUALAN:
━━━━━━━━━━━━━━━━━━━━
Total Revenue: Rp 89.500.000
Total Orders: 287
Average Daily: Rp 12.8jt
AOV: Rp 312.000

📈 TREND HARIAN:
Sen: Rp 10.2jt ████████░░
Sel: Rp 11.5jt █████████░
Rab: Rp 12.3jt ██████████
Kam: Rp 11.8jt █████████░
Jum: Rp 14.2jt ███████████
Sab: Rp 17.3jt █████████████
Min: Rp 12.2jt ██████████

🏆 BEST DAY: Sabtu (Rp 17.3jt)

📦 TOP 5 PRODUCTS:
1. Produk A - 85 pcs (Rp 25.5jt)
2. Produk B - 62 pcs (Rp 21.7jt)
3. Produk C - 48 pcs (Rp 19.2jt)
4. Produk D - 35 pcs (Rp 10.5jt)
5. Produk E - 28 pcs (Rp 8.4jt)

📉 SLOW MOVERS:
- Produk X - 2 pcs
- Produk Y - 3 pcs

👥 CUSTOMER INSIGHTS:
New Customers: 180 (63%)
Returning: 107 (37%)
Repeat Rate: 37%

💳 PAYMENT METHODS:
Transfer: 45%
E-Wallet: 35%
COD: 20%

🚚 SHIPPING:
JNE: 52%
J&T: 31%
SiCepat: 17%

Monthly Report:

📊 LAPORAN BULANAN

Periode: Januari 2026

💰 HIGHLIGHTS:
━━━━━━━━━━━━━━━━━━━━
Revenue: Rp 385.000.000
Orders: 1,234
AOV: Rp 312.000
Growth: +18% vs Dec

🎯 TARGET vs ACTUAL:
Target: Rp 350.000.000
Actual: Rp 385.000.000
Achievement: 110% ✅

📊 WEEKLY BREAKDOWN:
Week 1: Rp 82jt
Week 2: Rp 95jt (promo)
Week 3: Rp 98jt
Week 4: Rp 110jt (payday)

📦 CATEGORY PERFORMANCE:
Category A: 42% (Rp 162jt)
Category B: 35% (Rp 135jt)
Category C: 23% (Rp 88jt)

👥 CUSTOMER ANALYSIS:
Total Customers: 856
New: 612 (71%)
Returning: 244 (29%)
CLV Average: Rp 1.2jt

🔄 REPEAT PURCHASE:
1x buyer: 612
2x buyer: 156
3x+ buyer: 88

📱 CONVERSION FUNNEL:
Chat initiated: 4,521
Product viewed: 3,215 (71%)
Add to cart: 1,856 (41%)
Checkout: 1,456 (32%)
Paid: 1,234 (27%)

❌ ABANDONED CARTS: 222
   Recovery rate: 45 (20%)

Real-time Dashboard

📊 LIVE DASHBOARD

🕐 Last updated: 14:35 WIB

TODAY SO FAR:
━━━━━━━━━━━━━━━━━━━━
Revenue: Rp 8.250.000
Orders: 24
AOV: Rp 343.750

Target hari ini: Rp 15.000.000
Progress: ████████░░░░░░░ 55%

🔴 LIVE ACTIVITY:
- 14:33 - Order #456 confirmed
- 14:31 - New chat from +62812xxx
- 14:28 - Payment received #455
- 14:25 - Cart abandoned +62813xxx

📦 LOW STOCK ALERT:
- Produk A: 5 pcs left!
- Produk B: 8 pcs left!

⏰ CURRENT HOUR:
14:00-15:00: 3 orders (Rp 1.2jt)
vs same hour yesterday: +2 orders

👥 ACTIVE CHATS: 12
   Waiting response: 3

Implementation

Data Collection:

javascript

// Track every event
async function trackEvent(eventType, data) {
    await db.analytics.insert({
        type: eventType,
        data,
        timestamp: new Date(),
        date: new Date().toISOString().split('T')[0]
    });
}

// Events to track
const events = {
    CHAT_STARTED: 'chat_started',
    PRODUCT_VIEWED: 'product_viewed',
    ADD_TO_CART: 'add_to_cart',
    CHECKOUT_STARTED: 'checkout_started',
    ORDER_PLACED: 'order_placed',
    PAYMENT_RECEIVED: 'payment_received',
    CART_ABANDONED: 'cart_abandoned'
};

// Usage
await trackEvent(events.ORDER_PLACED, {
    orderId: order.id,
    customerId: customer.id,
    products: order.items,
    total: order.total,
    isNewCustomer: customer.orderCount === 1
});

Generate Reports:

javascript

async function generateDailyReport(date) {
    const startOfDay = new Date(date);
    startOfDay.setHours(0, 0, 0, 0);
    
    const endOfDay = new Date(date);
    endOfDay.setHours(23, 59, 59, 999);
    
    const orders = await db.orders.find({
        createdAt: { $gte: startOfDay, $lte: endOfDay },
        status: { $in: ['paid', 'completed'] }
    });
    
    const revenue = orders.reduce((sum, o) => sum + o.total, 0);
    const aov = orders.length > 0 ? revenue / orders.length : 0;
    
    // Product breakdown
    const productSales = {};
    for (const order of orders) {
        for (const item of order.items) {
            if (!productSales[item.productId]) {
                productSales[item.productId] = { qty: 0, revenue: 0 };
            }
            productSales[item.productId].qty += item.quantity;
            productSales[item.productId].revenue += item.price * item.quantity;
        }
    }
    
    // New vs returning
    const customerIds = [...new Set(orders.map(o => o.customerId))];
    const newCustomers = await db.customers.count({
        _id: { $in: customerIds },
        firstOrderDate: { $gte: startOfDay }
    });
    
    // Compare with yesterday
    const yesterday = new Date(date);
    yesterday.setDate(yesterday.getDate() - 1);
    const yesterdayReport = await getReportData(yesterday);
    
    return {
        date,
        revenue,
        orders: orders.length,
        aov,
        topProducts: Object.entries(productSales)
            .sort((a, b) => b[1].revenue - a[1].revenue)
            .slice(0, 5),
        customers: {
            total: customerIds.length,
            new: newCustomers,
            returning: customerIds.length - newCustomers
        },
        comparison: {
            revenue: ((revenue - yesterdayReport.revenue) / yesterdayReport.revenue * 100).toFixed(1),
            orders: ((orders.length - yesterdayReport.orders) / yesterdayReport.orders * 100).toFixed(1)
        }
    };
}

Auto-Send Reports:

javascript

// Daily report at 23:00
cron.schedule('0 23 * * *', async () => {
    const report = await generateDailyReport(new Date());
    const message = formatDailyReport(report);
    
    // Send to owner
    await sendMessage(OWNER_PHONE, message);
});

// Weekly report every Monday 09:00
cron.schedule('0 9 * * 1', async () => {
    const report = await generateWeeklyReport();
    const message = formatWeeklyReport(report);
    
    await sendMessage(OWNER_PHONE, message);
});

// Monthly report on 1st of month
cron.schedule('0 9 1 * *', async () => {
    const lastMonth = new Date();
    lastMonth.setMonth(lastMonth.getMonth() - 1);
    
    const report = await generateMonthlyReport(lastMonth);
    const message = formatMonthlyReport(report);
    
    await sendMessage(OWNER_PHONE, message);
});

Actionable Insights

Smart Alerts:

⚠️ INSIGHTS & ALERTS

🔴 URGENT:
- Produk A hampir habis (5 pcs)
- Cart abandonment naik 25% hari ini
- Response time > 5 menit (3 chats)

🟡 ATTENTION:
- Produk X tidak ada order 7 hari
- AOV turun 10% vs minggu lalu
- New customer rate turun 5%

🟢 POSITIVE:
- Revenue +18% vs kemarin
- Repeat purchase rate naik 3%
- Best selling: Produk B (+45%)

💡 RECOMMENDATIONS:
- Restock Produk A segera
- Follow up 5 abandoned carts
- Promo untuk Produk X

Best Practices

DO ✅

- Track consistently
- Daily review minimum
- Act on insights
- Compare periods
- Set targets
- Share with team

DON'T ❌

- Track without acting
- Ignore negative trends
- Vanity metrics only
- No historical comparison
- Overwhelm with data
- Manual tracking

FAQ

Metrics mana yang paling penting?

Revenue, conversion rate, dan repeat purchase rate. Ini langsung impact business.

Berapa sering lihat report?

Daily untuk monitoring, weekly untuk strategy. Monthly untuk big picture.

Perlu tools analytics terpisah?

Start dengan built-in, scale ke dedicated tools (Metabase, etc) seiring growth.


Kesimpulan

Data-driven = Smarter decisions!

No AnalyticsWith Analytics
GuessingData-driven
ReactiveProactive
Blind spotsFull visibility
Slow adaptQuick pivot

Setup Analytics Dashboard →


Artikel Terkait