CAEX Early Access - Onboarding Flow

Product Specification & Technical Requirements
OKX Vietnam Growth Team | Author: Nguyen Lam, Growth Lead | June 2026
PRODUCT SPEC DRAFT v2.0

01. Executive Summary & Strategic Context

5-10K
Total Whitelist Users
2-3K
OKX Allocation
#1
First Domestic Exchange
100%
OKX Benefit Priority

The Opportunity

CAEX will be the very first domestic crypto exchange to launch in Vietnam. This creates massive awareness and FOMO across the entire VN crypto community. Every trader will want to be in the first wave. OKX has been allocated 2,000-3,000 of the 5,000-10,000 early access whitelist slots.

Goal
Use CAEX whitelist scarcity to acquire high-value traders onto OKX
Mechanism
"Want CAEX? Come through OKX first." Users must be qualified OKX users to receive whitelist
Outcome
Every whitelisted user = verified, KYC'd, trading-active OKX user
Side-effect as Bonus
Strengthen the OKX x CAEX collaboration for future cross-platform promotions

Eligibility Criteria

Simple validation to keep the application funnel frictionless while ensuring only eligible users receive codes:

CriteriaRequirementWhy
REQUIRED OKX AccountActive OKX accountBase requirement - must be OKX user
BONUS Trading Volume$1,000+ trading volumePriority tier for power traders
BONUS Referral AdditionalReferred 1+ qualified friendViral loop amplifier

02. Option Analysis - 4 Onboarding Flows

OKX Owned User Action CAEX Owned System / Auto Decision Point
Option 1 - Recommended Code Before Sign-up 8.5 / 10
Phase 1 - OKX Application
1
OKX Landing Page
User submits application: OKX UID, phone (+84), name, nationality
Has OKX Account?
YES - continue
NO - sign up OKX first
2
OKX Validates Account
Auto-check: valid UID + Vietnamese nationality
Phase 2 - Code Distribution
3
Generate Whitelist Code
CAEX-XXXX-XXXX-XXXX bound to phone hash
4
Deliver Code via Email
Sent to OKX-registered email address
Phase 3 - CAEX Onboarding
5
Download CAEX App
App Store or Google Play
6
Sign Up CAEX + KYC
Must use same phone number as OKX
7
Enter Whitelist Code
Dedicated code input screen in CAEX onboarding
8
CAEX Validates Code
Calls OKX API: code + phone match + not expired
Code Valid + Phone Match?
YES
NO - error + retry
Access Granted + Tier Badge
Founding Member or Early Adopter
Option 2 - Simplest Phone Whitelist Before Sign-up 7.5 / 10
Phase 1 - OKX Application (10 days before launch)
1
OKX Landing Page
User submits: OKX UID, phone (+84), name, nationality
Has OKX Account?
YES - continue
NO - sign up OKX first
2
OKX Validates Account
Auto-check: valid UID + Vietnamese nationality
Phase 2 - Phone Sharing to CAEX
3
OKX Shares Phone Numbers
Batch send validated phone numbers to CAEX
4
CAEX Adds to Whitelist
Pre-loads phone numbers into whitelist DB
Phase 3 - CAEX Onboarding
5
Download CAEX App
App Store or Google Play
6
Sign Up CAEX + KYC
Must use same phone number as OKX
7
CAEX Checks Whitelist
Phone matches OKX-shared list?
Phone in Whitelist?
YES - unlock
NO - access denied
Access Granted + Tier Badge
No code needed. Seamless phone match.
Option 3 - Alternative Whitelist After Sign-up 6.0 / 10
Phase 1 - CAEX Sign-up First
1
Download CAEX App
App Store or Google Play
2
Sign Up CAEX Account
Phone + password + email
3
CAEX KYC Verification
Full identity check
4
Account LOCKED
"Get whitelist from OKX to unlock trading"
User stuck - completed KYC but can't trade
HIGH frustration + drop-off risk
Phase 2 - OKX Application
5
OKX Landing Page
User submits: OKX UID + CAEX UID
Has OKX Account?
YES - continue
NO - sign up OKX first
6
OKX Validates Account
Auto-check: valid UID + Vietnamese
Phase 3 - Unlock
7
OKX Notifies CAEX
API call: "whitelist this CAEX UID"
8
CAEX Unlocks Account
Status: locked -> active
Access Granted
Good tracking but 2 waiting periods.
Expect 30-40% higher drop-off vs Option 1.
Option 4 - Not Recommended Google Play Store Early Access 4.5 / 10
Phase 1 - OKX Application
1
OKX Landing Page
User submits application: OKX UID, phone, name, nationality
Has OKX Account?
YES - continue
NO - sign up OKX first
2
OKX Validates Account
Auto-check: valid UID + Vietnamese nationality
Phase 2 - Phone Sharing
3
OKX Shares Phone Numbers
Batch send qualified phones to CAEX team
PRIVACY RISK - sharing PII between companies
4
CAEX Adds to Google Play
Closed Testing track
Google Play uses EMAIL, not phone!
Requires email collection or custom workaround
Phase 3 - User Download
User on Android?
YES - Play Store
NO - iOS BLOCKED
~40% VN users excluded
5
Download from Play Store
Early Access version
6
Sign Up CAEX + KYC
Standard registration
Access Granted (Android Only)
No iOS path. Poor attribution. Privacy risk.

Comparison Matrix

Criteria Option 1: Code Before Sign-up Option 2: Phone Whitelist Option 3: Whitelist After Option 4: Google Play
Score8.57.56.04.5
Technical FeasibilityHIGH
Standard code system
HIGH
Simple phone list + whitelist check
HIGH
UID mapping is standard
LOW
Play Store uses email, not phone
UX QualityHIGH
Clear linear flow, user knows status
HIGHEST
No code step - auto whitelist on signup
LOW
2 waiting periods, 2 separate apps
MEDIUM
Familiar store flow but Android only
OKX Data CaptureHIGH
Full data before CAEX sees anything
HIGH
Full data on OKX landing page
HIGH
Dual UID = permanent mapping
HIGH
Same landing page
Code Leakage RiskMEDIUM
Codes shareable; mitigate w/ phone bind
NONE
No codes exist to leak
NONE
UID-based, no codes
NONE
No codes involved
Privacy RiskLOW
Only codes shared, not PII
MEDIUM
Phone numbers shared - PDPA consent needed
MEDIUM
UID sharing needs data agreement
HIGH
PII shared between companies
iOS SupportYES
Platform-agnostic code
YES
Phone-based, any platform
YES
Platform-agnostic
NO
Excludes ~40% VN users on iOS
Drop-off RiskLOW
Instant validation, minimal steps
LOWEST
Whitelist is invisible to user
VERY HIGH
2 dead-end waits, 30-40% higher drop
MEDIUM
App store friction
Conversion TrackingEXCELLENT
Code issued - redeemed = clean funnel
MEDIUM
No redemption event; relies on webhook
GOOD
UID mapping tracks everything
POOR
App store attribution unreliable
Dev Effort~3-4 weeks~2-3 weeks~3-4 weeks~4-5 weeks

Key Trade-off: Option 1 vs Option 2

Option 1 wins on tracking (clean code-issued-to-redeemed funnel) and privacy (only codes shared, not PII).
Option 2 wins on UX (seamless - no code entry step) and speed (faster to build). Requires PDPA-compliant consent for phone sharing.

Recommendation: Option 1 or Option 2

  • Option 1 (Code Before Sign-up): Best conversion tracking (code issued - redeemed = clean funnel). Lower privacy risk (only codes shared, not PII). More complex to build (~3-4 weeks).
  • Option 2 (Phone Whitelist): Best UX (no code step - user just signs up and gets access). Fastest to build (~2-3 weeks). But requires phone number sharing with CAEX (PDPA consent needed) and weaker conversion tracking.
  • Enhancement for both: Add tiered access (Founding Member for first 500, Early Adopter for next 1,500+)
  • Option 4 is a dead end: Google Play doesn't support phone-based whitelisting, excludes iOS (~40% VN market)
  • Option 3 is plan B: Use if CAEX insists on UID-based verification, but expect 30-40% higher drop-off

Critical Issue with Option 4 - Google Play Store Early Access

Google Play's testing tracks (Internal / Closed / Open) use Google Account (email) for access control - not phone numbers. There is no native mechanism to whitelist by phone number. You'd need to either: (a) collect Google emails instead (adds friction), (b) build a custom in-app whitelist check (defeats the point of using Google Play's feature), or (c) use Open Testing with an in-app gate. All of these add complexity while excluding iOS. Not recommended.

03. Recommended Flow - Product Workflow

Modified Option 1 with phone-binding and tiered access.

Phase 1: Awareness
Discover & Apply
OKX USER
User finds CAEX Early Access via OKX app banner, social, KOL, or email. Lands on OKX landing page. Submits: UID, name, phone.
Phase 2: Validate
Check & Assign Tier
OKX SYSTEM
Real-time validation: valid UID + Vietnamese. Assign tier: first 500 = Founding Member, rest = Early Adopter. Bonus points for volume > $1K.
Phase 3: Distribute
Generate & Send Code
OKX
Generate CAEX-XXXX-XXXX-XXXX bound to phone hash. Email to user with instructions, tier badge, and CAEX download links. Expires 7 days.
Phase 4: Onboard CAEX
Sign Up + Enter Code
USER CAEX
Download CAEX app. Sign up with SAME phone as OKX. Complete KYC. Enter whitelist code. CAEX calls OKX API to validate code + phone match. Access granted.
Phase 5: Referral Additional
Growth Loop
OKX
After code received, user can share referral link. Both referrer and referee get tier priority. Uses existing OKX referral infra.
No decision made yet on referral mechanics

04. UX Reference & User Journey

Landing Page Demo

Interactive Landing Page Prototype

A full interactive landing page demo has been created separately. It demonstrates the complete user-facing experience including hero section, how-it-works flow, benefits, timeline, and application form.

Reference: CAEX-Early-Access-Landing-Page.html

Hero: "Be The First Mover" 3 Fields: UID, Name, Phone Spots Counter 4-Step How It Works

User Journey Map

Discover
See promotion
Social / App / KOL
LOW RISK
Apply
Submit form
Landing page
MED RISK
Validate
Auto check
Instant result
LOW RISK
Receive
Get code
Email delivery
LOW RISK
Onboard
CAEX KYC + Code
CAEX app
MED RISK
Activate
First trade
CAEX platform
LOW RISK
50K visitors10K apply3K validated2K codes1.8K redeemed1.5K active

05. Technical Requirements

OKX Builds (We Own This)
Landing Page
Mobile-first responsive page with form (UID, name, phone), spots counter, UTM tracking. Hosted at okx.com/caex-early-access.
P0
Application Service
Receives submissions, validates inputs, rate limits (3/phone/day). Stores in DB with status tracking.
P0
Account Validator
Real-time check: valid OKX UID + Vietnamese nationality. Pass/fail instant response.
P0
Code Generation Service
Generate CAEX-XXXX-XXXX-XXXX codes. Bind to phone hash. 7-day expiry. Status: generated/delivered/redeemed/expired.
P0
Code Validation API
Exposed to CAEX. Validates: code + phone match + not expired. Returns tier + OKX UID. API key auth + rate limiting.
P0
Email Service
Code delivery email + 24h expiry reminder. Template with copy button, instructions, CAEX download links.
P0
OKX App Banner
Promo banner on OKX home screen linking to landing page.
P0
Tiering Logic
Assign Founding Member (first 500) vs Early Adopter. Bonus points for volume > $1K.
P1
Analytics & Tracking
UTM params, attribution, funnel dashboards, source tracking.
P0
CAEX Builds (Needs Alignment)
Whitelist Code Input UI
Screen in onboarding flow: enter OKX whitelist code after KYC. "Don't have a code? Get one from OKX" link.
P0
Code Validation Client
Calls OKX API with code + phone. Handles: valid (unlock), invalid (error + retry), expired (redirect to OKX).
P0
User Status Management
States: registered - kyc_pending - kyc_complete - whitelist_pending - active. Only "active" gets full access.
P0
OKX UID Storage
Store OKX UID from code validation response. Creates permanent CAEX-OKX user mapping.
P0
Redemption Webhook
POST to OKX when code redeemed: caex_uid, code, timestamp. Enables OKX full-funnel tracking.
P0
Tier Badge Display
Show "Founding Member" or "Early Adopter" badge on user profile from OKX API response.
P1
Non-Whitelisted User Flow
Users without code see browse-only mode + CTA to OKX landing page. Cannot trade.
P1

Action Required from CAEX

OKX needs CAEX tech team to align on: API spec (code format, endpoints), code input UI placement, webhook payload, and integration testing timeline. Recommend a joint spec alignment session before development begins.

Database Schema (OKX Side)

-- Application submissions caex_whitelist_applications ( id, okx_uid, full_name, phone_hash, nationality, status [pending|validated|code_issued|redeemed|expired|rejected], tier [founding_member|early_adopter], referrer_uid, utm_source, utm_medium, utm_campaign, created_at, validated_at, code_issued_at ) -- Whitelist codes caex_whitelist_codes ( code, phone_hash, okx_uid, tier, status [active|redeemed|expired|revoked], expires_at, redeemed_at, caex_uid, created_at )

06. API Integration Spec (OKX <-> CAEX)

6.1 Code Validation API (OKX provides, CAEX calls)

POST /api/v1/caex-whitelist/validate // Request (CAEX -> OKX) { "code": "CAEX-7K2M-9PX4-BN6R", "phone_hash": "sha256(+84912345678)", // hashed for privacy "caex_uid": "CAEX_USER_12345", "timestamp": "2026-06-20T10:30:00Z" } // Response - Success (OKX -> CAEX) { "status": "valid", "tier": "founding_member", "tier_number": 247, "okx_uid": "OKX_USER_67890", "message": "Code validated successfully" } // Response - Failure { "status": "invalid", "error_code": "PHONE_MISMATCH | CODE_EXPIRED | CODE_USED | CODE_NOT_FOUND", "message": "Phone number does not match code binding" } // Authentication: API Key in header Headers: { "X-API-Key": "caex_partner_key_xxxxx" }

6.2 Redemption Webhook (CAEX provides, OKX receives)

POST /api/v1/caex-webhook/code-redeemed // Webhook payload (CAEX -> OKX) { "event": "code_redeemed", "code": "CAEX-7K2M-9PX4-BN6R", "caex_uid": "CAEX_USER_12345", "okx_uid": "OKX_USER_67890", "timestamp": "2026-06-20T10:35:00Z" } // OKX responds { "status": "acknowledged" }

6.3 Batch Code Provisioning (OKX internal, optional)

// If CAEX provides whitelist codes to OKX (instead of OKX generating) POST /api/v1/caex-whitelist/import-codes { "codes": ["CAEX-XXXX-...", "CAEX-YYYY-...", ...], "batch_id": "batch_001", "expires_at": "2026-07-01T00:00:00Z" }

6.4 Security Requirements

RequirementImplementation
AuthenticationAPI Key + HMAC signature on all requests. Keys rotated every 90 days.
TransportTLS 1.3 only. Certificate pinning recommended.
Rate LimitingCode validation: 100 req/min per API key. Webhook: 50 req/min.
Data PrivacyPhone numbers transmitted as SHA-256 hashes only. OKX UID shared only after successful validation.
IdempotencyCode validation is idempotent - same code+phone returns same result without double-redeeming.
IP WhitelistCAEX API calls only accepted from whitelisted IP ranges.

07. Tracking & Analytics Framework

Full Funnel Metrics

Funnel Stage Metric Data Source Target
AWARENESS Landing page unique visitors Google Analytics / OKX analytics 50,000+
INTEREST Form submissions (applications) Application Service DB 10,000+
NEW OKX SIGNUP New OKX accounts created from CAEX funnel OKX signup with CAEX UTM 3,000+
VALIDATED Users who pass UID + nationality check Account Validator 2,500-3,500
CODE ISSUED Whitelist codes generated & delivered Code Generation Service 2,000-3,000
CODE REDEEMED Codes successfully used on CAEX CAEX webhook -> OKX 1,800+ (90% target)
CAEX ACTIVE First trade on CAEX CAEX reporting (if shared) 1,500+

08. Communication Touchpoints

Every message the user receives throughout the funnel.

Timing Channel Message Owner
Pre-launch Social / App Awareness campaign: "CAEX Early Access coming soon. OKX members get priority." OKX
T+0 Landing Page Form submission confirmation: "Application received. Validating..." OKX
T+0 Landing Page Validation result: success ("Check your email!") or failure (error + retry) OKX
T+0 Email Code delivery: whitelist code, instructions, CAEX download links, tier badge, expiry date OKX
T+2 days Email Nudge: "You haven't used your code yet. Don't miss your spot - X days remaining." OKX
T+5 days Email + Push Urgency: "Your CAEX Early Access code expires in 48 hours. Use it now." OKX
T+7 days Email Expiry notice: "Your code has expired. Contact support if you need a new one." OKX
On redeem CAEX App Welcome: "Welcome to CAEX Early Access! You're Founding Member #247." CAEX
On redeem Email OKX confirmation: "Your CAEX access is live! Start trading on Vietnam's first exchange." OKX

Gap Identified: Post-submit Dead Zone

Between form submission and code delivery, user has no status-check mechanism. If validation is not instant, consider adding a "Check my application status" page or email with estimated timeline.