Conversion & Attribution
How we track a student end-to-end
Every conversion is traced from the very first anonymous visit through to the paid subscription — even across devices and weeks apart.
Capture (anonymous)
On every page, captureUTM() saves first-touch & last-touch UTMs + ?ref= to localStorage (90-day TTL). GA4 client_id + Meta _fbp give the device a stable anonymous id.
Stitch (at signup)
On trial/subscription, both UTM sets + referral/affiliate code are saved on the Subscription row. That links the anonymous journey to the real user — now we can say “came from Facebook, converted via win-back.”
Credit & ROAS
Switch first-touch (who discovered them) vs last-touch (who closed). Manual ad spend ÷ attributed revenue = ROAS. Meta CAPI + Google Ads server events recover iOS-14+ users.
Example journey · one student
Look up a real student's journey in Student Profile → Engagement.
11.4%
Visitor → trial
42%
Trial → paid
4.8%
Visitor → paid
6.2 days
Avg time-to-convert
Rs 690
Blended CAC
4.3×
Blended ROAS
Visitors & traffic
— visitors · — sessions · — new in range
Acquisition funnel · in range
Time to convert · trial → paid
⚙️ Platform-driven conversions our own engine, not ads
Upsell Performance ↗Subscriptions our platform generated through upsell rules, broadcasts, on-site popups & referrals (last-touch).
Channel performance & ROAS
grouped by source · spend rolls up from the Ad & Source Tracker
| Channel | Source / Medium | Visitors | Conversions | Revenue | Spend | ROAS |
|---|