Skip to content

Growth funnel is blind to unlock_click; dead-event check misreports it as dead #32

Description

@lauurnce

Filed from the first real weekly growth report (VANTAGE, 2026-08-25 — evidence in gitignored docs/reports/growth/2026-08-25.md, figures deliberately not reproduced here).

What
FUNNEL_STEPS in lib/reports/funnel.ts:25-33 goes paywall_teaser_click → subscribe_click with nothing between. The file header (lib/reports/funnel.ts:4-7) justifies the omission by claiming unlock_click is "emitted by no code since the subscription pivot". That assertion is false.

Evidence (code)

  • components/SectionRenderer.tsx:66 and components/LockedReviewer.tsx:24 both call logEvent("unlock_click")
  • lib/adminFunnel.ts:31-40 already removed it from DEAD_EVENT_TYPES and charts it as "Reached Unlock" between exactly the two steps this collector joins
  • The un-windowed dead-events CTE (20260808000001_growth_funnel_agg.sql:76-86) shows a live last-seen timestamp for unlock_click today, with 43 rows

Impact
/unlock is where the price is first quoted and changed twice inside the reporting window (309110a, af6af9d). Whether teaser-tappers who never checked out stopped before or after seeing the price is unanswerable — opposite problems, opposite fixes. dead_last_seen also reads as reassurance while being wrong.

Fix shape (from report)

  • B (minimal): add { key: "unlock_click", label: "Reached Unlock", source: "events" } to FUNNEL_STEPS between paywall_teaser_click and subscribe_click, correct the header, add matching windowed count to growth_funnel_agg steps CTE — carries one new migration (note: the original growth migrations are now applied to production as of 2026-08-25, so this is a normal follow-up migration)
  • C: B plus narrow the dead CTE to unlock_submitted only so dead_last_seen means what it claims, plus guard test

Estimate B: half a day.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds-triageMaintainer needs to evaluate the issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions