WA Blast untuk Abandoned Cart Recovery
Strategi WA blast untuk recover abandoned cart. Template reminder, timing, incentive. Selamatkan penjualan yang hampir hilang!
70% cart di-abandon. Selamatkan!
Rata-rata 70% shopping cart ditinggalkan sebelum checkout. WA blast bisa recover 10-15% dari cart yang abandoned.
Kenapa Cart Di-Abandon?
📊 ALASAN ABANDON CART:
- 48% - Ongkir terlalu mahal
- 26% - Harus buat akun
- 22% - Checkout terlalu lama
- 18% - Tidak trust website
- 17% - Error/crash
- 16% - Tidak ada payment option
- 15% - Delivery terlalu lama
FIXABLE via WA:
✅ Free ongkir offer
✅ Trust building
✅ Easy checkout via chat
✅ Multiple payment optionsRecovery Sequence
📅 ABANDONED CART SEQUENCE:
HOUR 1: Soft reminder
"Keranjang kakak masih nunggu!"
HOUR 6: Helpful approach
"Ada yang bisa kami bantu?"
HOUR 24: Scarcity/urgency
"Stock terbatas, jangan sampai kehabisan!"
HOUR 48: Incentive
"Diskon 10% khusus untuk checkout!"
DAY 7: Final attempt
"Last chance sebelum cart expired"Template Messages
Hour 1 - Soft Reminder:
🛒 KERANJANG KAKAK MENUNGGU!
Hai Kak [NAMA]!
Sepertinya tadi ada yang ketinggalan...
Keranjang belanja kakak:
━━━━━━━━━━━━━━━━━━━━
- [Produk 1] - Rp [HARGA]
- [Produk 2] - Rp [HARGA]
━━━━━━━━━━━━━━━━━━━━
Total: Rp [TOTAL]
Tinggal checkout lho! 🛍️
Lanjut checkout?
👉 [LINK CART]
Ada kendala? Reply aja, kami bantu! 😊Hour 6 - Helpful:
🤔 ADA YANG BISA DIBANTU?
Hai Kak [NAMA]!
Kami notice kakak belum checkout
[PRODUK] yang tadi.
Mungkin ada pertanyaan?
❓ Bingung pilih ukuran?
❓ Mau tau lebih detail?
❓ Ongkir kemahalan?
❓ Ada kendala pembayaran?
Reply aja, kami dengan senang hati bantu!
Atau langsung checkout:
👉 [LINK CART]Hour 24 - Scarcity:
⚠️ STOCK TERBATAS!
Hai Kak [NAMA]!
Just info, [PRODUK] di keranjang kakak
stocknya tinggal sedikit!
📦 [PRODUK]:
Stock tersisa: [X] pcs
Sayang kalau kehabisan padahal
sudah masuk keranjang!
Checkout sekarang sebelum sold out:
👉 [LINK CART]
━━━━━━━━━━━━━━━━━━━━
Total: Rp [TOTAL]
━━━━━━━━━━━━━━━━━━━━Hour 48 - Incentive:
🎁 SPECIAL UNTUK KAKAK!
Hai Kak [NAMA]!
Kami tau mungkin ada alasan kenapa
belum checkout. So, ini dari kami:
🎉 DISKON 10% untuk keranjang kakak!
Keranjang:
━━━━━━━━━━━━━━━━━━━━
- [Produk 1] - Rp [HARGA]
- [Produk 2] - Rp [HARGA]
━━━━━━━━━━━━━━━━━━━━
Total: ~Rp [TOTAL]~
Setelah diskon: Rp [TOTAL DISKON]
Hemat: Rp [SELISIH]!
🏷️ Kode: COMEBACK10
⏰ Berlaku: 24 jam
Jangan sampai expired ya!
👉 [LINK CART]Day 7 - Final:
👋 LAST CALL!
Hai Kak [NAMA],
Ini reminder terakhir untuk keranjang kakak.
Setelah ini, keranjang akan di-reset
dan diskon tidak berlaku lagi.
Keranjang:
━━━━━━━━━━━━━━━━━━━━
- [Produk 1] - Rp [HARGA]
- [Produk 2] - Rp [HARGA]
━━━━━━━━━━━━━━━━━━━━
🎁 FINAL OFFER:
- Diskon 15%
- FREE ongkir
Kode: LASTCHANCE
Expired: MALAM INI 23:59
Checkout sekarang:
👉 [LINK CART]
Kalau tidak jadi, tidak apa-apa!
Terima kasih sudah mampir 😊Variant Templates
Free Shipping Offer:
🚚 FREE ONGKIR untuk checkout!
Hai Kak [NAMA]!
Ongkir jadi halangan?
Kami kasih FREE ONGKIR untuk kakak! 🎉
Keranjang: [PRODUK]
Total: Rp [TOTAL]
Ongkir: ~Rp [ONGKIR]~ FREE!
Kode: FREEONGKIR
Berlaku: 24 jam
👉 [LINK CART]Social Proof:
🔥 [PRODUK] LAGI LARIS!
Hai Kak [NAMA]!
[PRODUK] di keranjang kakak lagi hot!
📊 Dalam 24 jam terakhir:
- 45 orang juga add to cart
- 23 orang sudah checkout
- Rating: ⭐⭐⭐⭐⭐ (4.9)
Jangan sampai kehabisan ya!
👉 [LINK CART]Payment Assistance:
💳 BUTUH BANTUAN BAYAR?
Hai Kak [NAMA]!
Checkout jadi kendala?
Kami punya banyak opsi pembayaran:
✅ Transfer Bank (BCA, Mandiri, BNI, BRI)
✅ Virtual Account
✅ E-Wallet (OVO, GoPay, Dana, ShopeePay)
✅ Credit Card
✅ Paylater/Cicilan
Atau mau COD? Bisa!
Keranjang: Rp [TOTAL]
Reply aja kalau butuh bantuan
pilih metode pembayaran! 😊
👉 [LINK CART]Implementation
Track Abandoned Carts:
javascript
// Detect abandoned cart (no checkout after 1 hour)
async function detectAbandonedCarts() {
const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
const abandonedCarts = await db.carts.find({
updatedAt: { $lte: oneHourAgo },
status: 'active',
items: { $exists: true, $ne: [] },
checkoutAt: { $exists: false },
recoverySequence: { $exists: false }
});
for (const cart of abandonedCarts) {
await startRecoverySequence(cart);
}
}
async function startRecoverySequence(cart) {
const sequence = [
{ delay: 0, template: 'cart_reminder_1h' },
{ delay: 5 * 60 * 60 * 1000, template: 'cart_helpful_6h' },
{ delay: 23 * 60 * 60 * 1000, template: 'cart_scarcity_24h' },
{ delay: 47 * 60 * 60 * 1000, template: 'cart_incentive_48h' },
{ delay: 6 * 24 * 60 * 60 * 1000, template: 'cart_final_7d' }
];
// Mark cart as in recovery
await db.carts.updateOne(
{ _id: cart._id },
{ $set: { recoverySequence: { started: new Date(), step: 0 } } }
);
// Schedule first message
await scheduleRecoveryMessage(cart, sequence[0]);
}Stop Sequence on Checkout:
javascript
// When customer checks out, stop recovery
async function onCheckout(cartId) {
await db.scheduledMessages.deleteMany({
cartId,
type: 'cart_recovery'
});
await db.carts.updateOne(
{ _id: cartId },
{
$set: {
status: 'converted',
checkoutAt: new Date()
}
}
);
}Track Recovery Performance:
javascript
async function getRecoveryMetrics(period = 30) {
const startDate = daysAgo(period);
const metrics = await db.carts.aggregate([
{ $match: {
'recoverySequence.started': { $gte: startDate }
}},
{ $group: {
_id: '$status',
count: { $sum: 1 },
totalValue: { $sum: '$total' }
}}
]);
return {
abandoned: metrics.find(m => m._id === 'abandoned')?.count || 0,
recovered: metrics.find(m => m._id === 'converted')?.count || 0,
recoveryRate: (recovered / abandoned * 100).toFixed(2) + '%',
recoveredRevenue: metrics.find(m => m._id === 'converted')?.totalValue || 0
};
}Best Practices
DO ✅
- Start quickly (within 1 hour)
- Multiple touchpoints (3-5 messages)
- Escalate incentives gradually
- Personalize with cart items
- Make checkout easy (1-click)
- Offer help, not just push
- Stop sequence after checkoutDON'T ❌
- Wait too long to start
- Single message only
- Big discount immediately (margin!)
- Generic messages
- Complicated checkout process
- Ignore why they abandoned
- Keep sending after purchaseMetrics to Track
📊 ABANDONED CART METRICS:
- Abandonment rate
- Recovery rate per sequence step
- Revenue recovered
- Best performing message
- Optimal timing
- Incentive impact
- Channel effectivenessFAQ
Berapa recovery rate yang realistis?
10-15% adalah target bagus. Top performers bisa 20-25%.
Kapan beri diskon?
Jangan langsung. Reminder dulu (free), baru Hour 48+ beri incentive. Jaga margin!
Berapa banyak message dalam sequence?
3-5 messages optimal. Lebih dari itu jadi spam dan annoying.
Kesimpulan
Don't let carts die!
| No Recovery | With Recovery |
|---|---|
| 70% abandoned | 55-60% abandoned |
| Lost revenue | Recovered sales |
| Missed insights | Learned why |
| No follow-up | Customer care |
Recover that revenue!