Skip to content

Refer & Earn

RoutePurpose
/refer-and-earnReferral dashboard with stats, codes, and activity

  • Based on user’s displayName or email
  • Format: REF + random 6 characters
  • Can regenerate for different options
ConstraintRule
Length3-20 characters
CharactersUppercase letters and numbers only
UniquenessChecked against Firestore with 500ms debounce

Path: referralCodes/{code}

{
code, userId, isActive: true,
usageCount: 0, maxUsage: null,
createdAt, updatedAt
}

Users can create multiple codes for different campaigns.


Native Share, Email (mailto), WhatsApp, X/Twitter, LinkedIn, Facebook, Copy Link

https://mindhyv.com/?referralCode={code}
🚀 Join me on MindHyv!
The ultimate platform for creative freelancers.
Start your freelance journey: {referralUrl}
#freelance #creatives #mindhyv
Data PointDescription
Share typeCOPY_LINK, NATIVE_SHARE, EMAIL, WHATSAPP, TWITTER, LINKEDIN, FACEBOOK
TimestampsfirstSharedAt, lastSharedAt
Count per methodIncremented per share
totalSharesAggregate

Stored in user document under referralShareStats.


CookieContentExpirationOptions
referralCodeCode string90 daysPath /, SameSite Lax
referralDataJSON: {code, timestamp, source, utmParams}90 daysPath /, SameSite Lax

utm_source, utm_medium, utm_campaign, utm_term, utm_content

cookieManager.initializeReferralTracking() runs on every page load:

  1. Extracts referralCode from URL
  2. Extracts UTM params
  3. Saves to cookies
  4. Cleans tracking params from browser URL

$35 (per completed referral)

  • Creates Express account via /api/stripe/create-connect-account
  • Account states: No Account, Pending (1-2 business days), Verified, Restricted
canPayout = earnings >= 35 && hasConnectAccount

MetricCalculation
Total Referred UsersAll referrals count
Total Paying ReferralsStatus === COMPLETED count
Total EarningsCompleted referrals x $35
Active LinksActive referral codes count

Invoice ID, Referral Link, RateStamp (Elite/Pro/Standard/Free), Source, Conversion Event, Conversion Value, Signup Date

Features: Sorting (all columns), filtering (by code, RateStamp, source), column visibility toggle, pagination (10 rows).


  1. Referee visits referral URL
  2. Cookie saved (90 days)
  3. Referee signs up
  4. trackReferralSignupCallable Cloud Function called with:
    • referralCode, userAgent, ipAddress, UTM params, userData
  5. Referral document created
  6. Code usageCount incremented
  7. Referrer earns reward when referee converts

DataPurposeStored Where
Referral codeTrack attributionCookie (90 days) + Firestore
UTM parametersCampaign trackingCookie (90 days) + referral doc
User agentFraud detectionReferral document
IP addressFraud detectionReferral document
Share activityAnalyticsUser document
Conversion eventsReward calculationReferral document