Chatbot WA Multi Admin: Kolaborasi Tim CS

Setup chatbot WhatsApp dengan multi admin. Bagi chat ke tim, tracking, collision avoidance. Kolaborasi CS yang efisien!

Chatbot WA Multi Admin
Chatbot WA Multi Admin

Bisnis makin besar, CS satu tidak cukup!

Tapi satu nomor WA dipakai rame-rame = kacau! Siapa yang handle apa? Ada yang kedobelan?

Solusinya: Multi-admin dengan sistem yang proper!


Masalah Tanpa Sistem Multi-Admin

😫 Siapa yang harus balas chat ini?
😫 Dua orang balas chat yang sama
😫 Ada chat yang terlewat
😫 Tidak tahu siapa yang sudah handle
😫 Tidak bisa track performa per admin

Fitur Multi-Admin System

1. Chat Assignment

Chat masuk
    ↓
Auto-assign ke admin yang available
    ↓
Admin menerima notifikasi
    ↓
Admin handle sampai selesai

2. Manual Pickup

Chat masuk → Pool/Queue
    ↓
Admin klik "Ambil" untuk claim
    ↓
Chat locked ke admin tersebut

3. Transfer Chat

Admin A: "Chat ini butuh supervisor"
    ↓
Transfer ke Admin B / Supervisor
    ↓
Admin B ambil alih

4. Collision Avoidance

Admin A sedang ketik reply
    ↓
Admin B lihat: "Admin A sedang mengetik..."
    ↓
Tidak ada double reply

Arsitektur Multi-Admin

                    ┌─────────────────┐
                    │   WhatsApp      │
                    │   (1 Nomor)     │
                    └────────┬────────┘
                             │
                    ┌────────▼────────┐
                    │   Bot Server    │
                    │   (Central)     │
                    └────────┬────────┘
                             │
         ┌───────────────────┼───────────────────┐
         │                   │                   │
┌────────▼────────┐ ┌────────▼────────┐ ┌────────▼────────┐
│   Admin Panel   │ │   Admin Panel   │ │   Admin Panel   │
│   (Admin 1)     │ │   (Admin 2)     │ │   (Admin 3)     │
└─────────────────┘ └─────────────────┘ └─────────────────┘

Model Assignment

Model 1: Round Robin

Chat 1 → Admin 1
Chat 2 → Admin 2
Chat 3 → Admin 3
Chat 4 → Admin 1 (ulang)
...

Pros: Distribusi merata
Cons: Tidak lihat workload actual

Model 2: Least Busy

Admin 1: 5 active chats
Admin 2: 3 active chats ← Chat baru ke sini
Admin 3: 4 active chats

Pros: Balance workload
Cons: Butuh tracking real-time

Model 3: Queue/Pool

Semua chat masuk ke pool
Admin claim manual
Yang sudah claim = locked

Pros: Admin ambil sesuai kapasitas
Cons: Butuh kedisiplinan

Model 4: Skill-Based Routing

Chat tentang "komplain" → Tim Komplain
Chat tentang "order" → Tim Sales
Chat tentang "teknis" → Tim Support

Pros: Expertise match
Cons: Setup lebih kompleks

Implementasi Multi-Admin

Database Schema:

javascript

// Chats
{
  chatId: 'customer123',
  assignedTo: 'admin1', // null = unassigned
  status: 'active', // active, resolved, pending
  lastActivity: Date,
  history: [
    { from: 'customer', text: 'Hai', time: Date },
    { from: 'admin1', text: 'Ada yang bisa dibantu?', time: Date }
  ]
}

// Admins
{
  adminId: 'admin1',
  name: 'Budi',
  status: 'online', // online, busy, offline
  activeChats: 5,
  maxChats: 10
}

Assignment Logic:

javascript

async function assignChat(chatId) {
    // Get available admins
    const admins = await db.admins.find({
        status: 'online',
        $expr: { $lt: ['$activeChats', '$maxChats'] }
    }).sort({ activeChats: 1 });
    
    if (admins.length === 0) {
        // No admin available
        await queueChat(chatId);
        return null;
    }
    
    // Assign to least busy
    const selectedAdmin = admins[0];
    
    await db.chats.update(chatId, {
        assignedTo: selectedAdmin.adminId,
        status: 'active'
    });
    
    await db.admins.increment(selectedAdmin.adminId, 'activeChats', 1);
    
    // Notify admin
    await notifyAdmin(selectedAdmin, chatId);
    
    return selectedAdmin;
}

Admin Panel (Web Dashboard):

javascript

// Real-time chat list for admin
io.on('connection', (socket) => {
    const adminId = socket.handshake.query.adminId;
    
    // Join admin room
    socket.join(`admin:${adminId}`);
    
    // Send assigned chats
    const chats = await db.chats.find({ assignedTo: adminId });
    socket.emit('chat_list', chats);
    
    // Handle incoming messages
    socket.on('send_message', async (data) => {
        const { chatId, message } = data;
        
        // Verify ownership
        const chat = await db.chats.findOne({ 
            _id: chatId, 
            assignedTo: adminId 
        });
        
        if (!chat) {
            socket.emit('error', 'Not authorized');
            return;
        }
        
        // Send via WhatsApp
        await sendWhatsAppMessage(chat.phone, message);
        
        // Update history
        await db.chats.push(chatId, 'history', {
            from: adminId,
            text: message,
            time: new Date()
        });
    });
    
    // Transfer chat
    socket.on('transfer_chat', async (data) => {
        const { chatId, toAdminId } = data;
        await transferChat(chatId, adminId, toAdminId);
    });
});

Dashboard Features

Admin View:

┌─────────────────────────────────────────────────────────────┐
│  🟢 Admin: Budi (Online)              Active: 5/10 chats    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  📥 MY CHATS                     📋 QUEUE (3)               │
│  ─────────────                   ──────────                 │
│  🔵 Siti (2m ago)               • Customer A (5m)          │
│  🔵 Ahmad (5m ago)              • Customer B (3m)          │
│  🔵 Dewi (10m ago)              • Customer C (1m)          │
│  ⚪ Rudi (30m ago)                                         │
│  ⚪ Maya (1h ago)                [CLAIM]                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Supervisor View:

┌─────────────────────────────────────────────────────────────┐
│  SUPERVISOR DASHBOARD                    15 Jan 2026 14:30  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  📊 TODAY'S STATS                                           │
│  Total Chats: 150 | Resolved: 120 | Active: 25 | Queue: 5  │
│                                                             │
│  👥 ADMIN STATUS                                            │
│  ──────────────                                             │
│  🟢 Budi    - 5 active  - Avg response: 1.2 min            │
│  🟢 Sari    - 7 active  - Avg response: 2.0 min            │
│  🟡 Andi    - 3 active  - Avg response: 3.5 min ⚠️         │
│  🔴 Dewi    - Offline                                       │
│                                                             │
│  ⚠️ ALERTS                                                  │
│  • 2 chats waiting > 5 min                                 │
│  • Andi response time high                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Metrics per Admin

📊 PERFORMA ADMIN - JANUARI 2026

Admin: Budi

📈 Volume:
- Total chat handled: 450
- Avg per day: 18

⏱️ Response Time:
- First response: 1.2 min
- Resolution time: 8.5 min

⭐ Quality:
- CSAT: 4.5/5
- Escalation rate: 8%

🏆 Ranking: #1 dari 5 admin

Tips Multi-Admin

1. Set Max Chat per Admin

Jangan overload:
Junior: Max 5 concurrent chats
Senior: Max 8 concurrent chats
Supervisor: Max 3 (lebih banyak oversight)

2. Clear Handoff Protocol

Saat transfer/shift change:
1. Summary situasi
2. Apa yang sudah dilakukan
3. Apa yang perlu di-follow up

3. Escalation Path

Level 1: Admin → Handle normal
Level 2: Senior → Komplain, diskon request
Level 3: Supervisor → Refund, masalah serius

4. Regular Sync

Daily: 15 min standup
Weekly: Review metrics & issues
Monthly: Training & improvement

FAQ

Bisa pakai 1 nomor WA untuk banyak admin?

Bisa dengan sistem centralized. Satu nomor connect ke server, admin akses via dashboard. Bukan login WA langsung.

Bagaimana jika admin offline dadakan?

Chat yang assigned akan masuk queue atau auto-reassign ke admin lain yang available.

Platform apa yang support multi-admin?

Balaswa dan beberapa platform lain support multi-admin. Atau bisa build custom dengan arsitektur di atas.


Kesimpulan

Multi-admin = Scale CS tanpa kekacauan!

Single AdminMulti-Admin System
KewalahanWorkload terbagi
Double replyCollision avoided
No trackingPerformance metrics
No escalationClear escalation path

Kolaborasi tim CS yang efisien!

Setup Multi-Admin →


Artikel Terkait