Bot Jualan untuk Subscription Box
Cara buat bot jualan WhatsApp untuk subscription box. Recurring orders, manage subscription, auto-billing. Panduan lengkap!
Subscription = Recurring revenue!
Bot untuk subscription box menghandle recurring orders otomatis - customer subscribe sekali, dapat kiriman rutin setiap bulan.
Model Subscription
π¦ JENIS SUBSCRIPTION:
CURATED BOX:
- Produk berbeda setiap bulan
- Surprise element
- Beauty box, snack box
REPLENISHMENT:
- Produk sama setiap bulan
- Konsumables
- Kopi, skincare, pet food
MEMBERSHIP ACCESS:
- Akses exclusive products
- Member-only pricing
- VIP club
HYBRID:
- Core items + rotating items
- Mix replenishment + curationTemplate Messages
Subscription Info:
π¦ SUBSCRIPTION BOX [BRAND]
Dapat kiriman rutin setiap bulan!
PILIHAN PAKET:
ββββββββββββββββββββ
1οΈβ£ MONTHLY BOX
Rp 299.000/bulan
β’ 5-7 produk full size
β’ Surprise items setiap bulan
β’ Free shipping
2οΈβ£ QUARTERLY BOX
Rp 799.000/3 bulan
(Hemat Rp 98k!)
β’ Semua benefit Monthly
β’ Bonus exclusive item
3οΈβ£ YEARLY BOX
Rp 2.999.000/tahun
(Hemat Rp 589k!)
β’ Semua benefit Quarterly
β’ Anniversary gift
β’ Priority shipping
ββββββββββββββββββββ
Ketik angka untuk subscribe!Subscribe Flow:
π FORM SUBSCRIPTION
Paket: Monthly Box (Rp 299k/bulan)
Isi data berikut:
SUBSCRIBE
Nama: [Nama Lengkap]
HP: [No WhatsApp]
Email: [Email]
--
Alamat Kirim: [Alamat Lengkap]
Kota: [Kota]
Kode Pos: [Kode Pos]
--
Preferensi: [Jika ada pilihan]
Setelah submit, kami kirim
link pembayaran pertama!Subscription Confirmed:
β
SUBSCRIPTION AKTIF!
Subscription ID: #SUB-20260217-001
π¦ PAKET: Monthly Box
π° Harga: Rp 299.000/bulan
π
JADWAL:
- Box pertama: 25 Feb 2026
- Billing berikutnya: 17 Mar 2026
- Kirim setiap tanggal 25
π ALAMAT:
[NAMA]
[ALAMAT LENGKAP]
π Auto-renewal: ON
(Bisa cancel kapan saja)
Manage subscription:
Ketik SUBSCRIPTION untuk opsi
Welcome to the club! πMonthly Box Preview:
π¦ SNEAK PEEK: Box Maret 2026
Hai Subscriber!
Box bulan ini SPESIAL! π
π PREVIEW:
ββββββββββββββββββββ
β
[Product 1] - Full size
β
[Product 2] - Full size
β
[Product 3] - Travel size
β
[Product 4] - Full size
π SURPRISE item!
ββββββββββββββββββββ
Total value: Rp 650.000+
Kamu bayar: Rp 299.000
π
Dikirim: 25 Mar 2026
Excited? π€©Billing Reminder:
π³ REMINDER BILLING
Hai Kak [NAMA]!
Subscription kamu akan di-charge
dalam 3 hari:
π¦ Paket: Monthly Box
π° Amount: Rp 299.000
π
Charge date: 17 Mar 2026
π³ Payment: Auto (Card ****1234)
Pastikan saldo mencukupi ya!
Mau ubah?
- PAUSE - jeda subscription
- SKIP - skip bulan ini
- CANCEL - berhenti subscribe
- PAYMENT - ubah metode bayar
Ketik opsi di atas!Shipment Notification:
π BOX BULAN INI DIKIRIM!
Subscription: #SUB-20260217-001
π¦ March 2026 Box sudah OTW!
π Kurir: JNE YES
π Resi: 1234567890
π
Estimasi: 2-3 hari
π Dikirim ke:
[NAMA]
[ALAMAT]
Track: jne.co.id/track/1234567890
What's inside? Surprise! π
Share unboxing kamu ya! #[BRAND]BoxManage Subscription
Subscription Status:
π SUBSCRIPTION STATUS
ID: #SUB-20260217-001
π¦ PAKET: Monthly Box
π° Harga: Rp 299.000/bulan
π
Member sejak: 17 Feb 2026
π Status: AKTIF
BILLING INFO:
- Next billing: 17 Mar 2026
- Payment: Card ****1234
HISTORY:
- Box #1 (Feb): β
Delivered
- Box #2 (Mar): π In transit
OPSI:
1οΈβ£ Skip Bulan Depan
2οΈβ£ Pause Subscription
3οΈβ£ Upgrade Paket
4οΈβ£ Ubah Alamat
5οΈβ£ Ubah Payment
6οΈβ£ Cancel
Ketik angka untuk pilih!Skip Month:
βοΈ SKIP BULAN
Mau skip box bulan depan?
π¦ Yang akan di-skip:
April 2026 Box
π° Kamu TIDAK akan di-charge
untuk bulan April.
π
Subscription lanjut otomatis
di bulan Mei.
Konfirmasi skip?
- Ketik YA untuk skip
- Ketik TIDAK untuk batal
π‘ Bisa skip max 2x berturut-turutPause Subscription:
βΈοΈ PAUSE SUBSCRIPTION
Mau pause berapa lama?
1οΈβ£ 1 bulan
2οΈβ£ 2 bulan
3οΈβ£ 3 bulan
Selama pause:
- Tidak ada billing
- Tidak ada shipment
- Membership tetap aktif
- Resume kapan saja
Ketik angka untuk pilih durasi!
π‘ Bisa resume lebih awal
dengan ketik RESUMECancel Flow:
π’ CANCEL SUBSCRIPTION?
Sebelum cancel, boleh tau alasannya?
1οΈβ£ Terlalu mahal
2οΈβ£ Produk tidak sesuai
3οΈβ£ Terlalu banyak stok
4οΈβ£ Pindah ke kompetitor
5οΈβ£ Alasan lain
Ketik angka!
π‘ Mungkin ada solusi:
β’ Pause sementara?
β’ Downgrade paket?
β’ Skip beberapa bulan?Retention Offer:
π SPECIAL OFFER!
Sebelum cancel, ini untuk kamu:
π° DISKON 30% untuk 3 bulan!
Normal: Rp 299.000/bulan
Promo: Rp 209.000/bulan
Hemat: Rp 270.000 total!
Mau ambil offer ini?
1οΈβ£ YA, lanjut dengan diskon!
2οΈβ£ TIDAK, tetap cancel
Offer ini hanya sekali! πImplementation
javascript
const subscriptionPlans = {
monthly: {
name: 'Monthly Box',
price: 299000,
interval: 'month',
intervalCount: 1
},
quarterly: {
name: 'Quarterly Box',
price: 799000,
interval: 'month',
intervalCount: 3
},
yearly: {
name: 'Yearly Box',
price: 2999000,
interval: 'year',
intervalCount: 1
}
};
async function createSubscription(customerId, planId, paymentMethod) {
const plan = subscriptionPlans[planId];
const subscription = await db.subscriptions.insert({
customerId,
planId,
status: 'active',
currentPeriodStart: new Date(),
currentPeriodEnd: calculatePeriodEnd(plan),
nextBillingDate: calculateNextBilling(plan),
paymentMethod,
createdAt: new Date()
});
// Charge first payment
await processPayment(subscription, plan.price);
// Schedule first box
await scheduleBox(subscription);
return subscription;
}
// Process recurring billing
cron.schedule('0 9 * * *', async () => {
const today = new Date().toISOString().split('T')[0];
const dueSubs = await db.subscriptions.find({
status: 'active',
nextBillingDate: today
});
for (const sub of dueSubs) {
try {
await processRecurringPayment(sub);
await updateBillingDate(sub);
await scheduleBox(sub);
await sendPaymentSuccessNotification(sub);
} catch (error) {
await handlePaymentFailure(sub, error);
}
}
});
// Handle skip/pause
async function skipMonth(subscriptionId) {
const sub = await db.subscriptions.findOne({ id: subscriptionId });
// Check skip limit
if (sub.consecutiveSkips >= 2) {
return { success: false, error: 'max_skips_reached' };
}
// Skip next billing
await db.subscriptions.updateOne(
{ id: subscriptionId },
{
$set: {
nextBillingDate: addMonths(sub.nextBillingDate, 1)
},
$inc: { consecutiveSkips: 1 }
}
);
return { success: true };
}Best Practices
DO β
- Easy subscribe/unsubscribe
- Preview box contents
- Flexible skip/pause
- Billing reminders
- Shipment tracking
- Retention offersDON'T β
- Hard to cancel
- No flexibility
- Surprise charges
- No tracking
- Ignore churn signals
- Same box every monthFAQ
Billing kapan yang ideal?
Beberapa hari sebelum ship. Beri waktu proses + customer prepare.
Perlu opsi skip?
Wajib! Flexibility reduces cancellation. Max 2-3 consecutive skips.
Bagaimana reduce churn?
Preview exciting content, retention offers, pause option sebelum cancel.
Kesimpulan
Subscription = Predictable revenue!
| One-time Sales | Subscription |
|---|---|
| Unpredictable | Recurring |
| Re-acquire | Retained |
| Transactional | Relationship |
| Volatile | Stable |