Chatbot WA untuk Jasa Pengiriman & Kurir
Setup chatbot WhatsApp untuk bisnis kurir dan pengiriman. Cek ongkir, tracking, request pickup otomatis. Solusi logistics!
Bisnis kurir butuh response cepat!
Customer mau cek ongkir, tracking, dan request pickup kapan saja. Chatbot handle semua otomatis.
Tantangan Bisnis Kurir
🚚 TANTANGAN:
- Ratusan chat cek ongkir per hari
- "Paket saya dimana?" terus-terusan
- Request pickup mendadak
- Konfirmasi alamat bolak-balik
- Peak hour kewalahan
✅ SOLUSI CHATBOT:
- Auto cek ongkir
- Tracking real-time
- Booking pickup otomatis
- Validasi alamat
- Handle volume tinggiTemplate Messages
Greeting:
🚚 [NAMA KURIR] EXPRESS
Hai! Selamat datang di [NAMA] Kurir! 📦
Mau ngapain hari ini?
1️⃣ Cek Ongkir
2️⃣ Request Pickup
3️⃣ Tracking Paket
4️⃣ Daftar Langganan/Akun
5️⃣ Jam Operasional & Area
Ketik angka untuk pilih!
💨 Same day delivery available!Cek Ongkir:
💰 CEK ONGKIR
Untuk cek ongkir, kirim format:
ONGKIR [ASAL] [TUJUAN] [BERAT kg]
Contoh:
ONGKIR Jakarta Bandung 2
Atau ketik alamat lengkap:
"Dari Kemang Jakarta Selatan
ke Dago Bandung, berat 1.5kg"
Kami kalkulasi otomatis! 🧮Hasil Cek Ongkir:
📋 ESTIMASI ONGKIR
📍 Dari: Jakarta Selatan
📍 Ke: Bandung
📦 Berat: 2 kg
Pilihan layanan:
━━━━━━━━━━━━━━━━━━━━━━
🚀 SAME DAY (4-6 jam)
Rp 85.000
Pickup max: 14:00
⚡ EXPRESS (1 hari)
Rp 45.000
Estimasi: Besok 17:00
📦 REGULER (2-3 hari)
Rp 25.000
Estimasi: 19-20 Feb
━━━━━━━━━━━━━━━━━━━━━━
Mau kirim pakai yang mana?
Ketik: KIRIM [LAYANAN]
Contoh: KIRIM SAMEDAYRequest Pickup:
📦 REQUEST PICKUP
Mau dijemput paketnya?
Isi data berikut:
PICKUP
Nama: [Nama Pengirim]
HP: [No HP]
Alamat: [Alamat Lengkap Pickup]
--
Tujuan: [Alamat Lengkap Tujuan]
Nama Penerima: [Nama]
HP Penerima: [No HP]
--
Barang: [Deskripsi]
Berat: [Estimasi kg]
Layanan: [Sameday/Express/Reguler]
Atau ketik FORM untuk isi satu-satu.Pickup Confirmation:
✅ PICKUP TERJADWAL!
Booking ID: #PU-20260217-001
📍 Pickup:
[NAMA PENGIRIM]
[ALAMAT PICKUP]
📱 [NO HP]
📍 Tujuan:
[NAMA PENERIMA]
[ALAMAT TUJUAN]
📱 [NO HP]
📦 Paket: [DESKRIPSI], [BERAT]kg
🚚 Layanan: SAME DAY
💰 Ongkir: Rp 85.000
⏰ Jadwal pickup:
Hari ini, 14:00 - 15:00
Kurir akan menghubungi sebelum tiba.
Siapkan paket ya! 📦
Ketik BATALKAN jika perlu cancel.Tracking:
🔍 TRACKING PAKET
Masukkan nomor resi:
Contoh: TRK20260217001
Atau kirim: TRACK [NO RESI]Tracking Result:
📦 STATUS PAKET
Resi: TRK20260217001
━━━━━━━━━━━━━━━━━━━━━━
📍 Jakarta → Bandung
📦 Paket Dokumen, 0.5kg
🚚 Layanan: Express
STATUS: 🟢 Dalam Pengiriman
📋 HISTORY:
━━━━━━━━━━━━━━━━━━━━━━
17 Feb, 14:30 - Pickup selesai
17 Feb, 15:00 - Di-sortir di hub Jakarta
17 Feb, 18:00 - Berangkat ke Bandung
17 Feb, 20:15 - Tiba di hub Bandung
18 Feb, 08:00 - Dalam pengiriman
━━━━━━━━━━━━━━━━━━━━━━
📍 Posisi kurir: Dago, Bandung
⏰ Estimasi tiba: 10:00 - 12:00
Kurir: Budi (0812-xxx-xxx)Fitur Khusus Jasa Kurir
1. Area Coverage Check:
javascript
const coverageAreas = {
'jakarta': { sameday: true, express: true, regular: true },
'bandung': { sameday: true, express: true, regular: true },
'surabaya': { sameday: false, express: true, regular: true },
'makassar': { sameday: false, express: false, regular: true }
};
function checkCoverage(origin, destination) {
const originArea = getAreaCode(origin);
const destArea = getAreaCode(destination);
const services = [];
if (coverageAreas[originArea]?.sameday &&
coverageAreas[destArea]?.sameday &&
originArea === destArea) {
services.push('sameday');
}
if (coverageAreas[originArea]?.express &&
coverageAreas[destArea]?.express) {
services.push('express');
}
services.push('regular'); // Always available
return services;
}2. Auto-Calculate Pricing:
javascript
const pricing = {
sameday: {
base: 50000,
perKg: 15000,
maxKg: 10
},
express: {
base: 20000,
perKg: 8000,
maxKg: 30
},
regular: {
base: 10000,
perKg: 5000,
maxKg: 50
}
};
function calculatePrice(service, weight, distance) {
const config = pricing[service];
let price = config.base;
// Weight-based
if (weight > 1) {
price += (weight - 1) * config.perKg;
}
// Distance-based adjustment (simplified)
if (distance > 50) {
price *= 1.2;
}
return Math.ceil(price);
}3. Real-Time Tracking Integration:
javascript
async function getTrackingStatus(resi) {
// Integration with tracking system
const tracking = await db.shipments.findOne({ resi });
if (!tracking) {
return { found: false, message: 'Resi tidak ditemukan' };
}
// Get latest status
const latestStatus = tracking.history[tracking.history.length - 1];
// Get courier location if in delivery
let courierLocation = null;
if (latestStatus.status === 'in_delivery') {
courierLocation = await getCourierLocation(tracking.courierId);
}
return {
found: true,
resi: tracking.resi,
status: latestStatus.status,
statusText: getStatusText(latestStatus.status),
history: tracking.history,
courier: courierLocation,
eta: tracking.estimatedDelivery
};
}4. Pickup Slot Management:
javascript
const pickupSlots = {
'sameday': [
{ time: '09:00-10:00', cutoff: '08:30', available: 5 },
{ time: '11:00-12:00', cutoff: '10:30', available: 5 },
{ time: '14:00-15:00', cutoff: '13:30', available: 5 },
],
'express': [
{ time: '09:00-12:00', cutoff: '08:00', available: 10 },
{ time: '14:00-17:00', cutoff: '13:00', available: 10 },
]
};
async function getAvailableSlots(service, area, date) {
const slots = pickupSlots[service];
const bookings = await db.pickups.countBySlot(area, date);
return slots
.filter(slot => {
const cutoffTime = new Date(`${date} ${slot.cutoff}`);
return new Date() < cutoffTime;
})
.map(slot => ({
...slot,
remaining: slot.available - (bookings[slot.time] || 0)
}))
.filter(slot => slot.remaining > 0);
}Notifikasi Otomatis
Status Update ke Customer:
// Pickup dijemput
📦 PAKET DIJEMPUT
Hai! Paket sudah kami jemput.
Resi: TRK20260217001
Kurir: Budi
Tracking: wa.me/628xxx?text=TRACK%20TRK20260217001
---
// Dalam pengiriman
🚚 DALAM PENGIRIMAN
Paket sedang dikirim ke penerima!
Resi: TRK20260217001
Estimasi tiba: 10:00 - 12:00
Kurir akan menghubungi penerima.
---
// Delivered
✅ PAKET TERKIRIM
Paket sudah diterima oleh: Ibu Ana
Waktu: 17 Feb 2026, 11:45
Resi: TRK20260217001
Terima kasih sudah menggunakan [NAMA] Kurir! 🙏Failed Delivery:
⚠️ PENGIRIMAN GAGAL
Paket tidak bisa dikirim:
Resi: TRK20260217001
Alasan: Alamat tidak ditemukan
Mohon konfirmasi alamat yang benar
atau reschedule pengiriman.
Ketik:
- ALAMAT [alamat baru]
- RESCHEDULE [tanggal]
- RETURN (kembalikan ke pengirim)Langganan/Akun Bisnis
👥 DAFTAR AKUN BISNIS
Untuk seller/olshop yang sering kirim,
daftar akun bisnis untuk:
✅ Harga khusus (disc 10-20%)
✅ Pickup gratis unlimited
✅ Invoice bulanan
✅ Dashboard tracking
✅ CS prioritas
Syarat:
- Min 30 paket/bulan
- Data bisnis lengkap
Daftar sekarang:
Ketik DAFTAR BISNISBest Practices
DO ✅
- Response cepat (< 3 detik)
- Update tracking real-time
- Notifikasi proaktif
- Multiple channel (WA, Web, App)
- Clear SLA per layananDON'T ❌
- Tracking tidak update
- Estimasi tidak akurat
- Tidak ada konfirmasi pickup
- Susah hubungi kurir
- Tidak ada fallback contactFAQ
Bisa integrasi dengan sistem existing?
Ya! API-based integration dengan TMS (Transportation Management System) yang sudah ada.
Bagaimana handle volume tinggi?
Chatbot handle 90% pertanyaan rutin (ongkir, tracking). Human untuk complex issues.
Perlu notifikasi otomatis?
Wajib! Customer expect update tanpa harus tanya. Push notification setiap status change.
Kesimpulan
Kurir + Chatbot = Service level up!
| Manual | Dengan Chatbot |
|---|---|
| Cek ongkir manual | Auto calculate |
| Tracking via call | Self-service |
| Booking ribet | One-click pickup |
| Update manual | Auto notification |
Deliver better service with automation!