Skip to main content

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

Referral

Referral Halaman Referral mengelola program referral untuk mendorong customer mengajak orang lain berbelanja. Dibangun di atas 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 entity User 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 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:
Karakter yang dikecualikan: 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:
Dimana 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:
  1. Hitung jumlah referral dengan status = 'purchased' per referrer
  2. Urutkan secara descending (terbanyak ke tersedikit)
  3. Assign rank berdasarkan posisi
  4. 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:
  1. Format check — Kode harus 8 karakter uppercase dari character set yang valid
  2. Active check — Query ReferralCode untuk memastikan is_active = true
  3. Self-referral check — Pastikan code.user_id !== current_user.id
  4. Double-referral check — Pastikan belum ada Referral dengan referee_id = current_user.id
  5. Existence check — Pastikan kode benar-benar ada di database

Integrasi dengan Entity Lain

PricingPlan

Setiap plan dalam PricingPlan dapat memiliki konfigurasi commission rate yang berbeda melalui ReferralSetting. Plan yang tersedia:

Subscription

Ketika referee membeli subscription, sistem akan:
  1. Lookup Referral untuk menemukan referrer
  2. Lookup ReferralSetting berdasarkan plan_key subscription
  3. Tentukan purchase_type (first_time atau renewal)
  4. Hitung commission_amount berdasarkan rate
  5. Create record Commission dengan status unpaid
  6. Update Referral.status menjadi purchased

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

  1. Buka halaman Referral dari sidebar — lihat kode referral unik kamu di atas halaman
  2. Bagikan kode referral melalui WhatsApp, Facebook, Twitter, LinkedIn, atau Email — link berformat {origin}?ref={code}
  3. Orang yang mendaftar menggunakan kode kamu otomatis tercatat sebagai referral dengan status signed_up
  4. Saat referral melakukan pembelian pertama, status berubah ke purchased dan komisi dihitung berdasarkan ReferralSetting
  5. Pantau stats dashboard untuk melihat total earnings, successful referrals, dan rank di leaderboard
  6. 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_up ke purchased untuk 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

Troubleshooting