title: “Referral” description: “Program referral dengan code generation, commission tracking, leaderboard, multi-channel sharing, dan withdrawal system di SNISHOP ERP.”
Referral

Referral.jsx (745 baris) dengan sistem code generation unik, commission tracking otomatis, leaderboard, dan withdrawal system.
Setiap participant mendapat kode referral 8-karakter yang bisa dibagikan melalui WhatsApp, Facebook, Twitter, LinkedIn, atau Email. Setiap referral sukses tercatat dan commission otomatis masuk ke balance.
Arsitektur Komponen
Ringkasan Modul
Modul Referral merupakan salah satu fitur marketing utama dalam SNISHOP ERP yang memungkinkan setiap pengguna menjadi affiliate dan mendapatkan komisi dari setiap referensi berhasil. Sistem ini mencakup:- Code Generation — Pembuatan kode referral unik 8-karakter secara otomatis untuk setiap pengguna
- Commission Tracking — Pencatatan dan kalkulasi komisi secara real-time berdasarkan pembelian referee
- Leaderboard — Peringkat referrer teraktif untuk mendorong kompetisi sehat (gamifikasi)
- Multi-Channel Sharing — Distribusi link referral melalui 5 kanal: WhatsApp, Facebook, Twitter, LinkedIn, dan Email
- Withdrawal System — Pencairan saldo komisi ke rekening bank dengan approval workflow
- Admin Settings — Konfigurasi commission rate per plan langganan
Entity Relationship Diagram
Entity Schema Tables
User (Referral Fields)
Field-field pada entityUser yang berkaitan langsung dengan sistem referral dan komisi.
Referral
Entity yang merekam setiap hubungan referral antara referrer dan referee.ReferralCode
Entity yang menyimpan kode referral unik yang di-generate untuk setiap pengguna.Commission
Entity yang merekam setiap transaksi komisi yang dihasilkan dari referral yang berhasil melakukan pembelian.ReferralSetting
Entity konfigurasi yang menentukan commission rate untuk setiap plan langganan.WithdrawalRequest
Entity yang mengelola permintaan penarikan saldo komisi oleh pengguna.MarketplaceCommissionSettings
Entity konfigurasi global untuk kebijakan komisi marketplace dan penarikan saldo.Enum Reference Tables
Referral Status
Commission Status
Commission Purchase Type
Withdrawal Source
Withdrawal Request Status
ReferralCode Active Status
User Role
Subscription Plan
Subscription Status
State Diagrams
Referral Status Lifecycle
Commission Status Lifecycle
Withdrawal Request Status Lifecycle
ReferralCode Lifecycle
Sequence Diagrams
Flow 1: Membuat dan Membagikan Referral Link
Flow 2: Tracking Konversi Referral (Signup → Purchase)
Flow 3: Payout / Penarikan Komisi
Code Generation Algorithm
Kode referral dihasilkan dari karakter set khusus untuk menghindari kebingungan visual:I (mirip 1), O (mirip 0) — untuk menghindari kesalahan input manual oleh referee.
Implementasi pseudo-code:
Referral Flow Lengkap
Validation Rules
Commission Structure
Sistem komisi menggunakan model tiered rate berdasarkan jenis pembelian dan plan yang dibeli:
Formula komisi:
commission_rate diambil dari ReferralSetting berdasarkan plan_key yang dibeli dan jenis pembelian (first_time atau renewal).
Contoh konfigurasi ReferralSetting:
Stats Dashboard
Dashboard menampilkan metrik-metrik kunci untuk memantau performa referral:Withdrawal System
Ketentuan Penarikan
Proses Penarikan
Leaderboard
Leaderboard di-refresh otomatis setiap 10 detik bersamaan dengan data referral lainnya untuk memastikan peringkat selalu terkini. Algoritma ranking:- Hitung jumlah referral dengan
status = 'purchased'per referrer - Urutkan secara descending (terbanyak ke tersedikit)
- Assign rank berdasarkan posisi
- Tampilkan dengan ikon berbeda untuk top 3
5 Share Channels
Format referral link:
{origin}?ref={code}
Contoh: https://snishop.my.canva.site/?ref=AB3D5F7K
Auto-Refresh
Data referral di-refresh otomatis setiap 10 detik untuk tracking realtime. Ini mencakup:- Daftar referral (history)
- Statistik dashboard (total earnings, balance, rank)
- Leaderboard (peringkat terbaru)
- Commission history (komisi baru yang masuk)
RBAC Permission Table
Referral Module Access
RLS (Row-Level Security) — Commission Entity
Commission entity memiliki RLS rules yang lebih detail:RLS — WithdrawalRequest Entity
ReferralCodeModal (260 baris)
Modal yang muncul saat user signup dengan referral code: Detail validasi di ReferralCodeModal:- Format check — Kode harus 8 karakter uppercase dari character set yang valid
- Active check — Query
ReferralCodeuntuk memastikanis_active = true - Self-referral check — Pastikan
code.user_id !== current_user.id - Double-referral check — Pastikan belum ada
Referraldenganreferee_id = current_user.id - Existence check — Pastikan kode benar-benar ada di database
Integrasi dengan Entity Lain
PricingPlan
Setiap plan dalamPricingPlan dapat memiliki konfigurasi commission rate yang berbeda melalui ReferralSetting. Plan yang tersedia:
Subscription
Ketika referee membeli subscription, sistem akan:- Lookup
Referraluntuk menemukan referrer - Lookup
ReferralSettingberdasarkanplan_keysubscription - Tentukan
purchase_type(first_timeataurenewal) - Hitung
commission_amountberdasarkan rate - Create record
Commissiondengan statusunpaid - Update
Referral.statusmenjadipurchased
ProductOrder
Untuk produk digital,ProductOrder memiliki field product_commission_rate yang menyimpan commission rate saat order dibuat, serta admin_commission_amount untuk komisi admin basic.
Cara Akses
Dari sidebar, klik menu Marketing > Referral. Memerlukan user yang sudah login.Flow Penggunaan
- Buka halaman Referral dari sidebar — lihat kode referral unik kamu di atas halaman
- Bagikan kode referral melalui WhatsApp, Facebook, Twitter, LinkedIn, atau Email — link berformat
{origin}?ref={code} - Orang yang mendaftar menggunakan kode kamu otomatis tercatat sebagai referral dengan status
signed_up - Saat referral melakukan pembelian pertama, status berubah ke
purchaseddan komisi dihitung berdasarkanReferralSetting - Pantau stats dashboard untuk melihat total earnings, successful referrals, dan rank di leaderboard
- Tarik saldo komisi jika sudah mencapai minimum withdrawal yang ditentukan di
MarketplaceCommissionSettings
Tips
- Optimalkan commission rate — Buat rate yang menarik tapi tetap menguntungkan secara bisnis. Commission rate yang terlalu kecil tidak memotivasi referrer untuk aktif berbagi
- Promosikan program referral secara aktif di semua channel — banyak customer tidak tahu program ini ada. Manfaatkan email marketing dan notifikasi in-app
- Manfaatkan leaderboard untuk gamifikasi — ranking mendorong kompetisi sehat antar referrer. Pertimbangkan reward tambahan untuk top referrer bulanan
- Evaluasi program secara berkala — sesuaikan rate jika perlu berdasarkan ROI. Analisis conversion rate dari
signed_upkepurchaseduntuk mengukur efektivitas - Monitor withdrawal requests secara rutin — proses penarikan dengan cepat untuk menjaga kepercayaan peserta program
- Gunakan description field di ReferralCode untuk membuat pesan promosi yang menarik saat membagikan kode
- Pastikan minimum withdrawal masuk akal — terlalu tinggi akan mengecilkan partisipasi, terlalu rendah akan membebani operasional
