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.

1

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.

2

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.”

3

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

VisitorsNew visitors

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

ChannelSource / MediumVisitorsConversionsRevenueSpendROAS