# NORTH STAR METRICS:
- PRs Merged (Ultimate north star)
- PRs Created
- Retention
- DAU/WAU/MAU
- Happy users (active post activation)
- Churn
# Mode AAARRR Data Points Map
This is the canonical Mode AAARRR analytics data-point map for minimum launch analytics. It defines the base metrics, data points, v0/MVP inclusion, and safe primary cuts across Awareness, Acquisition, Activation, Retention, Referral, and Revenue.
This does not approve PostHog setup, app/website instrumentation, tracking calls, dashboards, session replay, surveys, feature flags, CRM automation, product-code changes, analytics-property implementation, or production analytics changes.
## Rules
- β
= include in v0/MVP launch analytics planning.
- π₯ = for product/eng implementation
- Blank v0/MVP cell = not required for the v0/MVP launch contract.
- `N/A` in the Data point column means the metric is derived later from base data points.
- `completed_onboarding` means completion of the guided demo project. There is not a separate onboarding-questions completion step.
- Do not send raw code, repo contents, private product UI text, secrets, customer data, sensitive prompts, sensitive workspace content, full URLs with query strings, screenshots, diffs, file paths, repo names, branch names, arbitrary free text, sales notes, or private company/workspace names into analytics properties.
## Core attribution fields
| Field / metric | Data point | v0/MVP | Use | Notes |
| ------------------------ | ----------------------------- | -----: | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Source | `source` | β
| Where the user came from | Controlled category: direct, founder_social, product_hunt, community, partner, organic, paid, referral, unknown |
| UTM source | `utm_source` | π₯β
| Campaign source | Captured at signup/landing where available |
| UTM medium | `utm_medium` | π₯β
| Campaign medium | Captured at signup/landing where available |
| UTM campaign | `utm_campaign` | π₯β
| Campaign/campaign group | Key field for campaign-to-retention analysis |
| UTM content | `utm_content` | | Creative/CTA/content variant | Optional if already captured |
| Referrer category | `referrer_category` | β
| Referred website/source category | Prefer category over raw full URL |
| Raw referrer URL | `referrer` | π₯β
| Referrer url capture | Full root referrer URLs without query strings |
| User identity join | `user_id` | β
| Connects signup to product behavior | Approved internal/hashed ID only; no raw email in analytics views |
| Workspace/account rollup | `account_id` / `workspace_id` | π₯β
| Workspace/company-level rollup | Internal non-descriptive ID only |
| Activation status | `activation_status` | β
| Where the user reached in the product journey | none, signed_up, onboarding_started, completed_onboarding, project_imported, active_user |
## Awareness
| Metric | Data point | v0/MVP | Type | Why it matters | Primary cuts |
|---|---|---:|---|---|---|
| Reach | `reach_count` | β
| count | How many people Mode is getting in front of | source, campaign, channel |
| Impressions | `impression_count` | β
| count | Top-of-funnel exposure by asset/channel | source, campaign, channel |
| Brand/direct traffic | `traffic_source_category` | | count/category | Simple signal of brand demand | direct, organic, branded/search if available |
## Acquisition
| Metric | Data point | v0/MVP | Type | Why it matters | Primary cuts |
|---|---|---:|---|---|---|
| Landing page viewed | `landing_page_viewed` | β
| yes/no or count | First owned touch before signup | source, UTM, referrer, landing page type |
| CTA viewed | `cta_viewed` | | yes/no or count | Shows which acquisition CTA was presented before click/signup | source, UTM, CTA location/type |
| CTA clicked | `cta_clicked` | β
| yes/no | Shows acquisition intent before signup | source, UTM, CTA location/type |
| Signed up | `signed_up` | β
| yes/no | Core acquisition point | source, UTM, referrer, landing page type |
| Signup attribution captured | `signup_attribution_captured` | β
| yes/no | Confirms source/UTM/referrer survived into the known user record | source, UTM, referrer |
| Persona/category captured | `persona_category` | | controlled category | Helps understand whether campaigns bring the right users | persona_category, company_domain_type |
| CTA click-through rate | N/A | | derived calculation | Derived later from CTA/landing views and `cta_clicked` | source, campaign, CTA type |
| Signup conversion rate | N/A | | derived calculation | Derived later from acquisition touchpoints and `signed_up` | source, UTM, referrer |
## Activation
| Metric | Data point | v0/MVP | Type | Why it matters | Primary cuts |
| ---------------------------------- | -------------------------------------- | -----: | ------------------- | --------------------------------------------------------------------------------------------- | ------------------------------- |
| Product access reached | `product_access_reached` | π₯β
| yes/no | Separates signed up from actually entered product | source, UTM, access path |
| Onboarding started | `onboarding_started` | | yes/no | User enters Modeβs guided demo project / onboarding flow | source, UTM |
| Completed onboarding | `completed_onboarding` | π₯β
| yes/no | User completed the guided demo project, which is onboarding completion | source, UTM |
| Dashboard reached | `dashboard_reached` | | yes/no | User arrived at the main product hub | source, UTM |
| Import prompt viewed | `import_prompt_viewed` | | yes/no | User saw the path to bring in their own codebase | source, UTM |
| Project import started | `project_import_started` | π₯β
| yes/no | User attempted real setup | source, UTM, import path |
| Import path | `import_path` | ???? | category | Distinguishes upload vs GitHub | upload, GitHub |
| Project imported / setup succeeded | `project_imported` / `setup_succeeded` | π₯β
| yes/no | User has a usable own-project context | source, UTM, import path |
| Own project canvas opened | `own_project_canvas_opened` | π₯β
| yes/no | User reached the real working surface | source, UTM |
| Portal used on own project | `portal_used_on_own_project` | π₯β
| yes/no | User interacted with the live app/codebase context | source, UTM |
| Component used | `component_used` | | yes/no | User used component workflow | source, UTM |
| AI action used safely | `ai_action_category` | | category | User used AI without tracking prompt text | source, UTM, AI action category |
| Edit/build attempted | `edit_build_attempted` | | yes/no | User tried to make a real change | source, UTM |
| Build succeeded | `build_succeeded` | | yes/no | Product successfully produced output | source, UTM |
| Activated user | `activated` | β
| yes/no | User completed the meaningful product threshold | source, UTM, import path |
| Signup-to-onboarding rate | N/A | | derived calculation | Derived later from `signed_up` and `completed_onboarding` | source, UTM, referrer |
| Activation rate | N/A | | derived calculation | Derived later from `signed_up`, `completed_onboarding`, `project_imported`, and `active_user` | source, UTM, import path |
| Setup success rate | N/A | | derived calculation | Derived later from `project_import_started` and `setup_succeeded` | source, UTM, import path |
## Activated user definition
A user is activated when they have:
1. signed up,
2. completed onboarding by finishing the guided demo project,
3. imported or connected their own project,
4. opened their own project canvas,
5. used the portal/canvas workflow on their own project,
6. and completed a useful own-project edit/build or output action.
Share link creation and GitHub PR/export remain separate Referral/Revenue-adjacent signals unless Alex later approves a stricter active-user threshold.
## Retention
| Metric | Data point | v0/MVP | Type | Why it matters | Primary cuts |
| ------------------------- | --------------------------- | -----: | ------------------- | ------------------------------------------------- | --------------------------------------- |
| Returned after signup | `returned_after_signup` | β
| yes/no | Basic early retention | source, UTM |
| Returned after activation | `returned_after_activation` | β
| yes/no | More meaningful than generic login | source, UTM, activation_status |
| Daily active user | `daily_active_user` | β
| yes/no by day | Basic usage reporting | source, UTM, activation_status |
| Weekly active user | `weekly_active_user` | β
| yes/no by week | Core launch retention view | source, UTM, activation_status |
| Monthly active user | `monthly_active_user` | β
| yes/no by month | Longer-term cohort quality | source, UTM, activation_status |
| Repeated meaningful edit | `repeated_meaningful_edit` | β
| yes/no | Shows repeat product value | source, UTM |
| Returned week-on-week | `returned_week_on_week` | β
| yes/no | Lets Mode find retained campaign cohorts | source, UTM_campaign |
| Returned month-on-month | `returned_month_on_month` | β
| yes/no | Later-stage retention quality | source, UTM_campaign |
| Retention rate | N/A | | derived calculation | Derived later from return/active-user base points | source, UTM_campaign, activation_status |
## Referral
| Metric | Data point | v0/MVP | Type | Why it matters | Primary cuts |
| -------------------------- | ---------------------------- | -----: | ------------------- | ---------------------------------------------------- | ------------------------------ |
| Share link created | `share_link_created` | π₯β
| yes/no | User created something worth sharing | source, UTM, activation_status |
| Share link opened | `share_link_opened` | | yes/no/count | Shared work reached another person | source/referrer category |
| Signup from share/referral | `signup_from_share_referral` | | yes/no | Referral loop produced a new signup | referral source, campaign |
| GitHub PR/export created | `github_pr_export_created` | π₯β
| yes/no | User moved work toward shipping/review | source, UTM |
| Referral conversion rate | N/A | | derived calculation | Derived later from share/referral signup base points | referral source, campaign |
## Revenue
| Metric | Data point | v0/MVP | Type | Why it matters | Primary cuts |
|---|---|---:|---|---|---|
| PQL candidate | `pql_candidate` | β
| yes/no | User/account has enough activation + fit to review | source, UTM, persona/category, activation_status |
| High-fit user blocked | `high_fit_user_blocked` | β
| yes/no | Good user hit setup/build friction and may need help | source, UTM, failure category |
| Founder/sales conversation started | `founder_sales_conversation_started` | | yes/no | Connects product behavior to GTM follow-up | source, UTM, PQL status |
| Paying/converting account | `paying_converting_account` | | yes/no/later | Later revenue connection back to campaigns | original source, UTM_campaign |
| Campaign revenue conversion rate | N/A | | derived calculation | Derived later once revenue system exists | original source, UTM_campaign |