Bot Jualan untuk Pre-Order & Made to Order
Cara buat bot jualan WhatsApp untuk pre-order dan made to order. Custom order, deposit, timeline tracking. Panduan lengkap!
Pre-order = Minim resiko, maksimal profit!
Bot untuk pre-order dan made-to-order membantu collect pesanan sebelum produksi, handle customization, dan track progress secara otomatis.
Use Cases
📦 JENIS PRE-ORDER:
PRE-ORDER (PO):
- Produk belum ready
- Buka dalam batch
- Ada timeline jelas
- Example: Fashion, gadget
MADE TO ORDER (MTO):
- Dibuat setelah order
- Customizable
- Timeline per order
- Example: Kue, furniture
CUSTOM ORDER:
- Full customization
- Design dari customer
- Quotation-based
- Example: Merchandise, craftTemplate Messages
PO Announcement:
📢 PRE-ORDER BATCH #5
[PRODUCT NAME]
🔥 PO dibuka TERBATAS!
📋 Detail:
━━━━━━━━━━━━━━━━━━━━
Harga PO: Rp 250.000
(Normal: Rp 300.000)
📅 Timeline:
- PO buka: 17-24 Feb 2026
- Produksi: 25 Feb - 10 Mar
- Kirim: 11-15 Mar 2026
📦 Kuota: 100 pcs
Sisa: 67 pcs
💳 DP: 50% (Rp 125.000)
Pelunasan: Sebelum kirim
━━━━━━━━━━━━━━━━━━━━
Mau ikut PO?
Ketik: PO [VARIAN] [SIZE]
Contoh: PO HITAM LPO Form:
📝 FORM PRE-ORDER
PO Batch #5 - [PRODUCT]
Isi data berikut:
PREORDER
Nama: [Nama Lengkap]
HP: [No WhatsApp]
Alamat: [Alamat Lengkap]
--
Produk: [Nama Produk]
Varian: [Warna/Model]
Size: [S/M/L/XL]
Qty: [Jumlah]
--
Notes: [Request khusus, jika ada]
Setelah submit, kami kirim invoice DP!PO Confirmation:
✅ PRE-ORDER BERHASIL!
PO ID: #PO-20260217-001
Batch: #5
📋 Detail Order:
━━━━━━━━━━━━━━━━━━━━
Produk: [NAMA]
Varian: Hitam
Size: L
Qty: 2 pcs
━━━━━━━━━━━━━━━━━━━━
Harga: Rp 500.000
DP (50%): Rp 250.000
Pelunasan: Rp 250.000
📅 TIMELINE:
- DP deadline: 19 Feb 2026
- Produksi: 25 Feb - 10 Mar
- Pelunasan: 8 Mar 2026
- Pengiriman: 11-15 Mar
💳 BAYAR DP:
BCA 1234567890
a.n. [BRAND]
Nominal: Rp 250.000
Kirim bukti DP ya! 📸Made to Order Flow
MTO Product Info:
🛠️ MADE TO ORDER
[PRODUCT NAME]
Produk ini dibuat khusus setelah order!
📋 OPSI CUSTOMIZATION:
━━━━━━━━━━━━━━━━━━━━
Bahan:
- Kulit asli (+Rp 100k)
- Kulit sintetis (default)
Warna: [15 pilihan]
Ukuran: Custom sesuai request
Tambahan:
- Emboss nama (+Rp 50k)
- Initial (+Rp 30k)
- Logo custom (+Rp 75k)
━━━━━━━━━━━━━━━━━━━━
💰 Harga mulai: Rp 350.000
⏱️ Waktu produksi: 7-10 hari
Mau order? Ketik MTO [PRODUK]!MTO Customization:
🎨 CUSTOMIZATION
Produk: [NAMA]
Step 1/4: Pilih Bahan
━━━━━━━━━━━━━━━━━━━━
1️⃣ Kulit Sintetis (Rp 350.000)
2️⃣ Kulit Asli (+Rp 100k = Rp 450.000)
Ketik angka untuk pilih!🎨 CUSTOMIZATION
Step 2/4: Pilih Warna
━━━━━━━━━━━━━━━━━━━━
1️⃣ Hitam
2️⃣ Coklat
3️⃣ Navy
4️⃣ Maroon
5️⃣ Olive
... [lihat semua: ketik WARNA]
Ketik angka atau nama warna!🎨 CUSTOMIZATION
Step 3/4: Ukuran
━━━━━━━━━━━━━━━━━━━━
Standard sizes:
1️⃣ Small (20x15 cm)
2️⃣ Medium (25x18 cm)
3️⃣ Large (30x22 cm)
4️⃣ Custom size
Ketik angka!
(Jika custom, kirim ukuran P x L)🎨 CUSTOMIZATION
Step 4/4: Personalisasi
━━━━━━━━━━━━━━━━━━━━
Tambahan opsional:
1️⃣ Tanpa personalisasi
2️⃣ Emboss nama (+Rp 50k)
3️⃣ Initial (+Rp 30k)
4️⃣ Logo custom (+Rp 75k)
Ketik angka!
(Jika pilih 2-4, kirim text/gambar)MTO Summary:
📋 RINGKASAN ORDER
Order: #MTO-20260217-001
CUSTOM SPECS:
━━━━━━━━━━━━━━━━━━━━
Produk: Leather Bag
Bahan: Kulit Asli
Warna: Navy
Ukuran: Medium (25x18 cm)
Personalisasi: Emboss "BUDI"
💰 HARGA:
- Base: Rp 350.000
- Kulit asli: +Rp 100.000
- Emboss: +Rp 50.000
━━━━━━━━━━━━━━━━━━━━
TOTAL: Rp 500.000
⏱️ Estimasi selesai: 7-10 hari
Sudah benar semua?
- Ketik OK untuk konfirmasi
- Ketik UBAH untuk editProgress Tracking
Production Update:
🔄 UPDATE PRODUKSI
Order: #MTO-20260217-001
STATUS: Dalam Pengerjaan
Progress:
━━━━━━━━━━━━━━━━━━━━
✅ Order confirmed (17 Feb)
✅ Material ready (18 Feb)
✅ Cutting (19 Feb)
🔄 Stitching (20 Feb) ← NOW
⬜ Finishing
⬜ Quality check
⬜ Ready to ship
━━━━━━━━━━━━━━━━━━━━
⏱️ Estimasi selesai: 24 Feb 2026
[FOTO PROGRESS]
Sabar ya kak, sedang dikerjakan
dengan penuh cinta! 💕Ready Notification:
🎉 PESANAN SIAP!
Order: #MTO-20260217-001
Yeay, pesanan kakak sudah selesai! 🎊
[FOTO PRODUK JADI]
📋 Specs:
- Leather Bag - Navy
- Kulit asli
- Emboss "BUDI"
✅ Quality check: PASSED
💳 PELUNASAN:
Sisa bayar: Rp 250.000
(DP sudah: Rp 250.000)
Setelah lunas, kami kirim hari ini!
Transfer ke:
BCA 1234567890
Kirim bukti ya! 📸Implementation
PO Batch Management:
javascript
const poBatch = {
id: 'BATCH-005',
product: 'Product Name',
variants: ['Hitam', 'Putih', 'Navy'],
sizes: ['S', 'M', 'L', 'XL'],
price: {
po: 250000,
normal: 300000
},
timeline: {
poStart: '2026-02-17',
poEnd: '2026-02-24',
productionStart: '2026-02-25',
productionEnd: '2026-03-10',
shipStart: '2026-03-11',
shipEnd: '2026-03-15'
},
quota: 100,
ordered: 33,
deposit: 0.5 // 50%
};
async function handlePOOrder(phone, variant, size, qty) {
// Check quota
if (poBatch.ordered + qty > poBatch.quota) {
return sendQuotaFullMessage(phone);
}
// Check PO period
const now = new Date();
if (now < new Date(poBatch.timeline.poStart) ||
now > new Date(poBatch.timeline.poEnd)) {
return sendPOClosedMessage(phone);
}
// Create PO order
const order = await db.orders.insert({
type: 'preorder',
batchId: poBatch.id,
customer: phone,
variant,
size,
qty,
price: poBatch.price.po * qty,
deposit: poBatch.price.po * qty * poBatch.deposit,
depositPaid: false,
status: 'pending_deposit',
timeline: poBatch.timeline
});
// Update quota
poBatch.ordered += qty;
return sendPOConfirmation(phone, order);
}MTO Customization:
javascript
const mtoSession = new Map();
async function handleMTOCustomization(phone, step, choice) {
let session = mtoSession.get(phone) || {
step: 1,
specs: {}
};
switch (step) {
case 1: // Material
session.specs.material = getMaterialFromChoice(choice);
session.specs.basePrice = getMaterialPrice(choice);
session.step = 2;
await sendColorOptions(phone);
break;
case 2: // Color
session.specs.color = getColorFromChoice(choice);
session.step = 3;
await sendSizeOptions(phone);
break;
case 3: // Size
session.specs.size = getSizeFromChoice(choice);
session.step = 4;
await sendPersonalizationOptions(phone);
break;
case 4: // Personalization
session.specs.personalization = getPersonalizationFromChoice(choice);
session.specs.totalPrice = calculateTotalPrice(session.specs);
session.step = 'complete';
await sendMTOSummary(phone, session.specs);
break;
}
mtoSession.set(phone, session);
}Progress Update Automation:
javascript
// Update progress dan notify customer
async function updateProductionProgress(orderId, newStage) {
const stages = [
'confirmed',
'material_ready',
'cutting',
'stitching',
'finishing',
'quality_check',
'ready'
];
const order = await db.orders.findOne({ id: orderId });
const stageIndex = stages.indexOf(newStage);
await db.orders.updateOne(
{ id: orderId },
{
$set: { currentStage: newStage },
$push: {
progressHistory: {
stage: newStage,
timestamp: new Date()
}
}
}
);
// Send progress update
await sendProgressUpdate(order.customer, order, stageIndex, stages.length);
// If ready, send completion notification
if (newStage === 'ready') {
await sendReadyNotification(order.customer, order);
}
}Best Practices
DO ✅
- Clear timeline expectations
- Step-by-step customization
- Regular progress updates
- Photo updates
- DP system for commitment
- Transparent pricingDON'T ❌
- Vague delivery dates
- Complicated custom process
- No updates during production
- Hidden customization costs
- Full payment upfront (risky)
- Overpromise timelineFAQ
Berapa DP yang ideal?
30-50% dari total. Cukup untuk commitment, tidak terlalu berat untuk customer.
Update progress berapa sering?
Setiap milestone produksi, minimal 2-3x selama proses.
Bagaimana handle cancel?
DP non-refundable untuk cover material yang sudah dibeli. Jelaskan di awal.
Kesimpulan
Pre-order = Zero inventory risk!
| Regular Stock | Pre-Order/MTO |
|---|---|
| Modal besar | Modal minim |
| Risk unsold | Demand-driven |
| Standard only | Customizable |
| Immediate | Planned |