Push Notification¶
Push Notification adalah cara kirim pesan real-time ke pelanggan tanpa lewat WhatsApp/SMS — langsung muncul di HP/desktop mereka via browser atau app TBR Client. Gratis (pakai Google FCM), lebih cepat dari email, lebih reliable dari WhatsApp.
Use Case¶
- 💳 Konfirmasi pembayaran — pelanggan dapat notif "Pembayaran berhasil"
- ⏰ Reminder tagihan — H-3, H-1, hari due
- 🚨 Alert isolir — saat akun diisolir / aktif kembali
- 📢 Pengumuman — maintenance, info promo, update layanan
- 🆘 Alert teknis — modem offline, koneksi terputus
Kenapa Pakai Push?¶
| Channel | Open Rate | Delivery Speed | Cost | Reliability |
|---|---|---|---|---|
| Push Notification | 50-70% | < 1 detik | Gratis | Tinggi |
| 90%+ | 1-5 detik | Rp 100-300/pesan | Sedang (gateway risk) | |
| 20% | 10-60 detik | Gratis (limit) | Tinggi | |
| SMS | 60-80% | 5-30 detik | Rp 200-500/SMS | Tinggi |
Push notification = balanced choice untuk transactional message. Combine dengan WhatsApp untuk reach maksimal.
Persyaratan¶
- ✅ Pelanggan subscribe push notification dari portal client (one-time opt-in)
- ✅ Browser modern (Chrome, Firefox, Safari, Edge) atau install PWA / app Android TBR Client
- ✅ HTTPS (PWA tidak bisa subscribe di HTTP)
Arsitektur¶
[TB Radius event terjadi (pembayaran sukses, isolir, dll)]
↓
[Push controller dispatch ke FCM]
↓
[Google FCM (Firebase Cloud Messaging)]
↓
[Browser/device pelanggan (via service worker)]
↓
[Notifikasi muncul di HP/desktop pelanggan]
↓
[Pelanggan klik → deep link ke detail di portal]
Cara Pelanggan Subscribe¶
Pelanggan harus opt-in dulu sebelum bisa terima push notification:
- Pelanggan login ke client.tbradius.com
- Portal show banner: "Aktifkan notifikasi untuk dapat info tagihan & layanan"
- Klik Aktifkan
- Browser prompt: "Allow notifications from this site?"
- Klik Allow
- Subscription token disimpan di TB Radius (per device)
Setelah subscribe:
- Token persistent (selama browser/app tidak hapus data)
- Bisa multi-device (HP, laptop, tablet sekaligus)
- Pelanggan bisa unsubscribe kapan saja (di settings browser)
Event yang Auto-Trigger Push¶
TB Radius default trigger push untuk event berikut:
| Event | Trigger | Pesan |
|---|---|---|
| Reminder tagihan H-3 | Cron harian | "Tagihan Rp X jatuh tempo 3 hari lagi" |
| Reminder H-1 | Cron harian | "Tagihan jatuh tempo besok" |
| Hari due | Cron harian | "Tagihan jatuh tempo HARI INI" |
| Overdue (1 hari setelah due) | Cron harian | "Tagihan overdue, segera bayar" |
| Pembayaran berhasil | Webhook PG / manual mark paid | "Pembayaran Rp X berhasil. Terima kasih!" |
| Isolir | Cron isolir-overdue | "Akun diisolir. Bayar untuk aktif kembali" |
| Reaktivasi setelah bayar | After payment | "Internet sudah aktif kembali" |
| Modem offline > 30 menit | Monitoring | "Modem Anda offline. Cek koneksi" |
| Maintenance notice | Broadcast manual | "Pemeliharaan jaringan tanggal X" |
Enable/disable per event di Settings → Push Notification → Events.
Broadcast Manual (Pengumuman)¶
Untuk kirim push ke semua pelanggan atau subset:
- Menu Notifikasi → Broadcast
- Pilih target:
- Semua pelanggan aktif
- Per paket (mis. hanya pelanggan paket 20 Mbps)
- Per area (mis. hanya area Makassar Utara)
- Pelanggan menunggak (mis. campaign "diskon 10% buat yang lunasin")
- Tulis pesan:
- Title (mis. "Maintenance Jaringan")
- Body (mis. "Tanggal 31 Mei pukul 02:00-04:00. Mohon maaf atas ketidaknyamanan.")
- Action URL (opsional, link ke halaman detail)
- Preview broadcast
- Kirim (sekali kirim, tidak bisa di-recall)
Komponen Push Notification¶
| Komponen | Penjelasan |
|---|---|
| Title | Judul notifikasi (max ~30 char ideal) |
| Body | Isi pesan (max ~100 char ideal) |
| Icon | Logo brand (auto pakai logo tenant) |
| Badge | Icon kecil di status bar HP |
| Image | Optional, banner image (untuk promo) |
| Action buttons | Optional, tombol "Bayar Sekarang", "Detail", dll |
| Deep link | URL target saat notif diklik |
| TTL | Time-to-live (kalau pelanggan offline, push expire setelah X jam) |
Best Practices¶
Jangan spam pelanggan
Push notification mudah di-disable kalau spam. Limit:
- Max 1-2 broadcast manual per minggu
- Transactional push (auto-trigger) OK karena relevant
- Hindari push promotional yang tidak relevan
Tingkat opt-out tinggi = pelanggan disable, Anda kehilangan channel.
Personalisasi pesan
Pesan generic "Tagihan Anda jatuh tempo" kalah efektif daripada:
"Hai Budi, tagihan paket 20 Mbps Rp 350.000 jatuh tempo 3 hari lagi. Bayar sekarang →"
Pakai variabel {nama}, {paket}, {tagihan}, {jatuh_tempo} di template.
Action button untuk CTA
Push dengan action button punya conversion lebih tinggi:
- "Bayar Sekarang" → langsung ke halaman bayar (skip portal login)
- "Lihat Detail" → ke halaman invoice
- "Hubungi Support" → buka WhatsApp
Action button = 1-click conversion.
Test broadcast di subset kecil dulu
Sebelum broadcast ke semua pelanggan:
- Kirim ke 10 pelanggan test (mis. staff Anda)
- Cek hasil:
- Apakah pesan render dengan benar?
- Click rate?
- Ada complain?
- Kalau OK, baru broadcast massal
Push notification tidak guarantee delivery
Push bisa miss kalau:
- Browser/app pelanggan offline > TTL (default 24 jam)
- Pelanggan disable notifikasi
- Service worker error
- Network issue antara FCM → device
Selalu combine dengan channel lain untuk message critical (mis. push + WA).
Privacy: konten notifikasi visible di lock screen
Pesan push tampil di lock screen HP pelanggan tanpa unlock. Hindari informasi sensitif:
- ❌ "Password reset code: 123456"
- ❌ "Saldo Anda: Rp 5.000.000"
- ✅ "Pembayaran berhasil. Tap untuk detail"
Sensitif info → simpan di portal, push hanya teaser.
Troubleshooting¶
Pelanggan claim "Tidak terima push notification"
Cek satu per satu:
- Pelanggan subscribed? Lihat di dashboard → tab "Push Subscriptions". Kalau kosong, mereka belum opt-in
- Notification permission Allowed di browser/HP? Mereka bisa cek di Settings → Notifications
- HP idle / battery saver? Beberapa OS delay push saat battery saver aktif
- Test push manual ke pelanggan tersebut → kalau masuk, issue di event trigger
Test push masuk, tapi event auto-trigger tidak
- Cron jalan? Cek Settings → Cron Log
- Event enabled di Settings?
- Template render error? Cek log
- Pelanggan target sesuai filter event? (mis. reminder H-3 hanya pelanggan dengan invoice 3 hari lagi due)
Push notif muncul tapi click tidak buka halaman
Action URL salah / 404. Cek template di Settings → Notification Templates.
Banyak pelanggan dapat push 2x
Duplicate dispatch — bug atau race condition. Cek log push, lihat ada call duplicate.
Pelanggan unsubscribe — bisa re-enable?
Kalau pelanggan browser-level unsubscribe (Settings browser → Block), TB Radius tidak bisa force re-subscribe. Pelanggan harus manual:
- Buka portal client.tbradius.com
- Settings → Notification → Subscribe ulang
- Allow di browser prompt
FAQ¶
Q: Berapa biaya push notification? A: Gratis. TB Radius pakai Google FCM (Firebase Cloud Messaging) yang free untuk volume normal (jutaan push/bulan free tier).
Q: Push notification masuk ke pelanggan iPhone? A: Iya — Safari iOS 16.4+ support web push. Pelanggan harus install PWA dulu (Add to Home Screen) baru bisa subscribe. Atau pakai app native (TBR Client di App Store kalau Anda publish).
Q: Bisa schedule push untuk dikirim nanti? A: Bisa. Settings → Broadcast → Schedule. Set tanggal/jam, push akan dikirim otomatis di waktu itu.
Q: Bisa A/B test template? A: Belum native. Workaround: kirim variant A ke 50% pelanggan, variant B ke 50%, bandingkan click rate.
Q: Statistik push? A: Dashboard punya:
- Delivery rate (% berhasil sampai)
- Open rate (% pelanggan klik notif)
- Best timing analysis — jam dengan response terbaik
- Per-event breakdown — performance per jenis notif