Skip to main content

Overview

The JOIP Referral Program rewards you for bringing new users to the platform. When someone signs up using your referral link:
  • You receive: 10 credits
  • They receive: 25 bonus credits
  • No limits: Refer as many friends as you want (subject to rate limiting)

How It Works

1. Get Your Referral Code

Every user automatically gets a unique 8-character referral code:
Characteristics:
  • 8 uppercase alphanumeric characters
  • Globally unique across all users
  • Generated on first account access
  • Never changes once created
Your referral link includes your encoded code:
The r parameter is your referral code encoded in base64url format.

3. New User Signs Up

When someone visits your referral link:
  1. Cookie is Set
    • System stores referral code in pending_referral cookie
    • Also stores referral_source (direct or session_share)
    • And referral_source_id if from shared session
  2. User Creates Account
    • Goes through normal signup/login flow
    • System detects pending referral cookie
  3. Referral Processed
    • Validates referral code
    • Checks for fraud (self-referral, duplicates)
    • Awards credits atomically in database transaction
    • Clears referral cookies

4. Credits Awarded

Both accounts receive credits instantly:
Transactions are logged in both users’ credit histories.

Referral Code Format

Code Structure

Raw Code:
  • Length: Exactly 8 characters
  • Characters: A-Z and 0-9 (uppercase only)
  • Validation regex: /^[A-Z0-9]{8}$/
Encoded Code (for URLs):
  • Format: Base64URL encoding
  • Safe for URL parameters
  • Decoded server-side for validation

Code Generation

Codes are generated using cryptographically random selection:
Collision Handling:
  • Database unique constraint on users.referralCode
  • Automatic retry with new code on collision
  • Maximum 10 attempts before error
  • Collision probability: ~1 in 2.8 trillion

API Endpoints

Get Your Referral Stats

Get your referral statistics and earnings.Response:
Fields:
  • referralCode - Your unique code
  • totalReferrals - Number of successful referrals
  • creditsEarned - Total credits earned from referrals
  • referrerCredits - Credits per referral (configurable)
  • referredCredits - Credits new users receive (configurable)
  • isProgramActive - Whether program is currently active

Get Referral History

View your referral history with pagination.Query Parameters:
  • page - Page number (default: 1)
  • limit - Items per page (default: 10)
Response:
Privacy Note: For privacy reasons, referred user details (email, name) are not included in the response.

Validate Referral Code

Check if a referral code is valid (public endpoint).Request Body:
Response:
Note: Does not reveal the referrer’s identity for privacy.

Referral Sources

Referrals can come from two sources:

Direct Referrals

Source Type: direct When someone uses your referral link directly:
Cookie Set:

Session Share Referrals

Source Type: session_share When someone discovers JOIP through a shared session:
Cookies Set:
Benefit:
  • Tracks which shared session brought in the user
  • Helps measure content virality
  • Same credit rewards as direct referrals

Fraud Prevention

Self-Referral Prevention

You cannot refer yourself:

Duplicate Prevention

Each user can only be referred once:
  • Database unique constraint on userReferrals.referredUserId
  • Check performed in transaction with row locking
  • users.referredBy field tracks referrer
Duplicate Detection:

Rate Limiting

To prevent abuse, referrals are rate-limited: Default Limits:
  • Maximum 10 successful referrals per hour per referrer
  • Configurable via admin settings
Implementation:

Code Validation

Strict validation prevents malformed codes:

Database Schema

Users Table

Referral-related fields:

User Referrals Table

Tracks all successful referrals:

Referral Settings Table

Admin-configurable settings:

Referral Processing Flow

Step-by-Step Process

Transaction Atomicity

The entire referral process happens in a single database transaction:
Benefits:
  • Either everything succeeds or nothing happens
  • No partial referrals
  • No lost credits
  • No race conditions

Admin Features

View Referral Statistics

Get system-wide referral statistics (admin only).Response:

Update Referral Settings

Update referral program configuration (admin only).Request Body:
Response: Returns updated settings object.Note: Changes affect future referrals only. Existing referrals are not retroactively adjusted.

View Recent Referrals

Get recent referrals with user details (admin only).Query Parameters:
  • limit - Number of results (default: 50)
Response:

Best Practices

For Users

  1. Share Responsibly
    • Only share with genuinely interested people
    • Don’t spam or use deceptive tactics
    • Explain what JOIP is before sharing link
  2. Track Your Success
    • Check /api/referrals/stats regularly
    • Monitor which sharing methods work best
    • Use session shares to showcase content
  3. Maximize Referrals
    • Share your best sessions publicly
    • Include referral link in social media bios
    • Engage with community to build trust

For Developers

  1. Always Validate Codes
  2. Set Secure Cookies
  3. Clear Cookies After Processing
  4. Log Referral Events

Troubleshooting

Possible Causes:
  • User already had an account
  • Self-referral attempt
  • Invalid referral code
  • Rate limit exceeded
  • Referral program disabled
Debug Steps:
  1. Check server logs for referral processing errors
  2. Verify referral code exists: SELECT * FROM users WHERE referral_code = 'CODE'
  3. Check if user already referred: SELECT referred_by FROM users WHERE id = 'USER_ID'
  4. Verify program is active: SELECT is_active FROM referral_settings
Possible Causes:
  • Credits initialization failed
  • Transaction rollback due to error
  • Database connection issue
Debug Steps:
  1. Check if referral record exists: SELECT * FROM user_referrals WHERE referred_user_id = 'USER_ID'
  2. Check credit transactions: SELECT * FROM credit_transactions WHERE user_id IN ('REFERRER_ID', 'REFERRED_ID')
  3. Review server logs for transaction errors
Possible Causes:
  • Code format incorrect (must be 8 chars, A-Z0-9)
  • Code doesn’t exist in database
  • Encoding/decoding error
Solution:
Cause: Referrer has made 10+ successful referrals in the past hourSolution:
  • Wait for rate limit window to pass (1 hour)
  • Admin can adjust limit: UPDATE referral_settings SET max_referrals_per_hour = 20
Check current rate:

Analytics & Tracking

Referral Metrics

Track these metrics to measure program success:
  1. Conversion Rate
  2. Credits Per User
  3. Source Distribution
  4. Top Referrers

Activity Logging

Referral events are logged in the activity system:

Future Enhancements

Planned improvements to the referral system:
  1. Tiered Rewards
    • More credits for milestone referrals (10, 25, 50, 100)
    • Bonus rewards for high-quality referrals (active users)
  2. Referral Contests
    • Monthly leaderboards
    • Prizes for top referrers
  3. Custom Referral Codes
    • Allow users to set vanity codes
    • Validation for uniqueness and appropriateness
  4. Referral Dashboard
    • Visual analytics
    • Referral timeline
    • Conversion funnel
  5. Social Sharing Integration
    • One-click sharing to Twitter, Discord, Reddit
    • Pre-written share messages
    • Referral link shortening