Lewati ke isi

Status Pelanggan

Tiap pelanggan punya status yang menentukan apakah mereka bisa connect internet, terima tagihan, atau tampil di laporan. Memahami lifecycle status penting untuk operasional yang clean.

Lifecycle Status

[Trial] → [Active] → [Overdue] → [Isolated] → [Terminated]
              ↑          |
              └──────────┘  (bayar → kembali aktif)

Status Detail

1. 🆕 Trial

Pelanggan baru daftar, biasanya bulan pertama gratis atau diskon.

Karakteristik:

  • Bisa connect internet penuh
  • Tidak generate invoice (atau invoice Rp 0)
  • Auto-transition ke Active setelah trial period habis
  • Atau auto-terminate kalau pelanggan tidak commit subscribe

Use case:

  • Bulan promo "gratis 30 hari"
  • Onboarding piloting sebelum komit

2. ✅ Active

Pelanggan reguler — bayar tepat waktu, internet jalan.

Karakteristik:

  • Connect penuh sesuai paket
  • Invoice generated bulanan
  • Reminder otomatis sebelum jatuh tempo

Transition ke Active:

  • Dari Trial → otomatis setelah pembayaran pertama
  • Dari Overdue/Isolated → setelah bayar tagihan tertunggak
  • Dari Suspended → admin re-aktivasi

3. ⏰ Overdue

Tagihan lewat jatuh tempo, tapi masih dalam grace period (biasanya 1-3 hari).

Karakteristik:

  • Internet masih jalan
  • Reminder WhatsApp/email lebih sering (harian)
  • Status warning di dashboard
  • Auto-transition ke Isolated kalau grace period habis tanpa bayar

Default grace period: 1 hari setelah due date (configurable di Settings → Billing Rules).

4. 🚫 Isolated (Isolir)

Tagihan tidak dibayar setelah grace period. Internet diputus.

Karakteristik:

  • Connect ke WiFi/PPPoE → langsung redirect ke landing page isolir
  • Landing page menampilkan: total tagihan + link bayar
  • Tidak bisa akses internet sampai bayar
  • Sesi aktif diputus paksa via PoD (Disconnect Request)

Penyebab Isolir:

  • Auto: cron isolir-overdue jalan tiap 02:00 WIB — isolir pelanggan dengan invoice overdue > grace
  • Manual: admin klik "Isolir Manual" di pelanggan

Cara recovery:

  • Pelanggan bayar tagihan → status auto-kembali Active dalam 1-5 menit
  • Sesi internet auto-resume

5. ⏸️ Suspended

Pelanggan non-aktif sementara, biasanya request sendiri.

Karakteristik:

  • Internet diputus (sama dengan Isolated)
  • TIDAK generate invoice
  • TIDAK kirim reminder
  • Status manual dari admin (bukan auto)

Use case:

  • Pelanggan request "berhenti sementara" karena pergi keluar kota
  • Pelanggan komplain & request hold sambil masalah resolve
  • Internal hold (mis. teknis investigation)

Cara kembali Active:

  • Admin manual klik "Aktivasi"
  • Generate invoice baru kalau perlu (untuk bulan ini)

6. 🛑 Terminated

Pelanggan berhenti permanen (cancel subscription).

Karakteristik:

  • Internet diputus
  • TIDAK generate invoice
  • TIDAK tampil di dashboard utama (tampil di filter "Terminated only")
  • Data tetap di DB untuk audit
  • Bisa restore (reaktivasi) kalau pelanggan kembali

Use case:

  • Pelanggan pindah rumah (luar coverage)
  • Beralih ke provider lain
  • Tidak bisa bayar long-term

Cara recovery:

  • Edit pelanggan → status Terminated → Active
  • Generate invoice baru
  • Sync ulang ke RADIUS

Matrix Transition

Dari → Ke Active Overdue Isolated Suspended Terminated
Trial ✅ otomatis (setelah bayar pertama) ✅ kalau abandon
Active ✅ otomatis (lewat due) — (lewat grace) ✅ manual ✅ manual
Overdue ✅ kalau bayar ✅ otomatis (grace habis) ✅ manual ✅ manual
Isolated ✅ kalau bayar ✅ manual ✅ manual
Suspended ✅ manual ✅ manual
Terminated ✅ manual (reaktivasi)

Indikator Visual di Dashboard

Dashboard menampilkan badge warna per status:

  • 🟦 Trial (biru) — masa trial
  • 🟢 Active (hijau) — sehat
  • 🟡 Overdue (kuning) — telat bayar, grace period
  • 🔴 Isolated (merah) — internet diputus
  • Suspended (abu-abu) — hold manual
  • Terminated (hitam) — non-aktif permanen

Best Practices

Set grace period yang masuk akal

Grace period terlalu pendek → pelanggan kaget langsung isolir. Terlalu panjang → cashflow Anda terganggu.

Saran:

  • 1 hari = strict (cocok kalau pelanggan disiplin / bisnis B2B)
  • 3 hari = standar (default kebanyakan ISP)
  • 7 hari = lenient (untuk komunitas / area dengan literasi keuangan rendah)

Reminder berlapis

Sebelum isolir, kirim reminder bertingkat:

  • H-3 due: WA reminder pertama (friendly)
  • H-1 due: WA reminder kedua (lebih tegas, sebutkan akan isolir)
  • H+0 due: WA "hari ini jatuh tempo, mohon segera bayar"
  • H+1 (overdue): WA "tagihan overdue, akan isolir besok"
  • H+2 (grace habis): Isolir + WA "akun diisolir, bayar untuk reaktivasi"

Hindari "ghost isolir"

Selalu ada reminder sebelum isolir. Isolir mendadak tanpa pemberitahuan = pelanggan marah, churn risk tinggi, reputasi rusak.

Suspend != Isolate

Manual suspend (admin action) berbeda dengan auto-isolate (sistem action):

  • Suspend → admin pilih (alasan personal pelanggan)
  • Isolate → sistem pilih (akibat menunggak)

Pakai status yang tepat untuk reporting akurat.

Auto-Isolir Configuration

Aktifkan / atur auto-isolir di Settings → Isolir Rules:

Setting Default Deskripsi
Enabled ON Aktifkan auto-isolir
Grace period (hari) 1 Berapa hari setelah due tanpa bayar baru isolir
Isolir time (jam:menit) 02:00 Jam cron isolir jalan (off-peak hours)
Landing page default Custom landing page isolir (dengan branding & link bayar)
Reminder before isolir ON Kirim WA "akan isolir besok"

Detail: Isolir Otomatis

Troubleshooting

Pelanggan bayar tapi status tidak auto-kembali Active

Penyebab umum:

  1. Payment gateway webhook delay — tunggu 5-10 menit
  2. Webhook gagal terima — cek log webhook di dashboard
  3. Invoice belum di-mark paid — manual update di dashboard
  4. Status pelanggan masih "Suspended" bukan "Isolated" — Suspended butuh manual aktivasi (bukan auto)
Auto-isolir tidak jalan

Cek:

  • Cron isolir-overdue aktif (menu Settings → Cron Log)
  • Auto-isolir enabled di Settings
  • Grace period sesuai ekspektasi
  • Pelanggan benar-benar overdue (cek due date invoice)
Status terus berubah-ubah (flapping)

Mungkin webhook payment di-trigger berulang (mis. pelanggan refresh halaman bayar berulang). Cek log webhook untuk duplicate event. TB Radius dedupe by transaction_id, tapi pastikan tidak ada bug.

Reaktivasi pelanggan Terminated
  1. Filter pelanggan "Terminated only"
  2. Klik pelanggan
  3. Edit → ubah status ke Active
  4. Generate invoice baru kalau perlu (sebelumnya akun gratis)

FAQ

Q: Apakah pelanggan Suspended dihitung di laporan revenue? A: Tidak. Suspended TIDAK generate invoice → tidak hitung di MRR (Monthly Recurring Revenue).

Q: Pelanggan Isolated tetap dihitung di total pelanggan aktif? A: Tergantung definisi. Default dashboard hitung Isolated sebagai pelanggan aktif (mereka masih subscribe, hanya temporarily diputus). Bisa diatur di Settings → Report Definitions.

Q: Grace period bisa beda per pelanggan? A: Bisa. Pelanggan korporasi/premium bisa kasih grace lebih panjang via Per-Customer Override di edit pelanggan.

Q: Apakah ada notif ke admin saat pelanggan diisolir? A: Bisa diaktifkan di Settings → Notifikasi Admin. Saran: aktifkan digest harian (summary semua isolir hari itu) — bukan per-isolir notif (spam).