NBA LEAGUE PASS · STANDARD TIER RETENTION

USER
JOURNEY MAPS

Five user journeys. Three home-screen states (J1–J3) — including the new-user onboarding-to-paywall arc — and two cross-surface flows (J4–J5). Mapping the current League Pass experience against the proposed Video-First + Connected Devices product — the primary recommendation from our prioritization matrix.

GROUP 03
ANISHA · CHRIS · MARY · NDEYE
SPRING 2026
NBA CONTACT · CHELSEA LANDON
Current state
Video-First (proposed)
😊 Delighted   😐 Neutral   😣 Frustrated   😡 Defects
PERSONA 01
HH

HARDCORE HOOPS HARRY

36 · HOUSTON, TX · STANDARD TIER · 4-YEAR SUB

"The app sits unused 80% of the time. League Pass doesn't give me scores, news, or community."

Lifelong Heat fan who moved to Houston for work. Multi-tab social viewer — game on screen, r/NBA, X, family group chat all running. Wants live streaming + integrated social + reasons to open the app between games.

JOURNEY 01 · SUBSCRIBER + LIVE GAME

OPENS APP · TEAM IS PLAYING

It's Wednesday at 8:05 PM. The Heat tip off vs. the Bulls in 25 minutes. Harry sits down on the couch, family group chat already pinging about Tyler Herro's pre-game warmup. He pulls out his phone to open League Pass.

CURRENT EXPERIENCE
STAGE 01
PRE-LAUNCH
Pulls out phone, taps League Pass icon. Splash screen appears.
😊
STAGE 02
LANDS ON HOME
Article-heavy home: power rankings carousel, editorial features. Game schedule buried below the fold.
😐
STAGE 03
RE-AUTH PROMPT
Login screen appears even though he's an active subscriber. Has to re-enter credentials.
😣
STAGE 04
FINDS GAME
Taps "Games" → scrolls schedule → finds Heat → taps in. Broadcast finally loads. Game is already in 1Q.
😣
STAGE 05
WATCHES + JUGGLES
Stats are 2-3 taps deep. Stream lags 30-60s behind Twitter, so spoilers ruin big moments. Switches between LP, Reddit, X, group chat.
😐
STAGE 06
EXITS
Final whistle. Dropped back to article carousel. No reason to linger. Closes app.
😐
VIDEO-FIRST EXPERIENCE
STAGE 01
PRE-LAUNCH
Pulls out phone, taps League Pass icon. Same splash, faster handoff.
😊
STAGE 02
GAME IS PLAYING
App opens directly into the Heat broadcast, audio muted, "tap to unmute" affordance. Herro stat line as overlay.
😊
STAGE 03
PERSISTENT SESSION
No re-auth. Subscriber state recognized instantly.
😊
STAGE 04
UNMUTES
Single tap to unmute. Goes fullscreen with one swipe. No game-finding ritual — the game found him.
😊
STAGE 05
ENGAGES IN-APP
Live stat overlay shows Herro line + win prob. Social pulse widget shows trending reactions. Group-chat share button surfaces a clip natively.
😊
STAGE 06
STAYS
Auto-suggests post-game recap, condensed game, OR another live game still in progress. Session extends 2-3 min beyond game end.
😊
EMOTIONAL ARC

PAIN POINTS EXPOSED

  • Login friction on existing subscribers (per initial product audit)
  • Article-first home wastes the highest-intent moment of the day
  • Stats and social context fragmented across 3+ apps
  • Stream lag breaks the live experience for engaged fans

VIDEO-FIRST WINS

  • Eliminates 3-5 clicks between app open and broadcast
  • Captures multi-screen behavior in-app instead of exporting to Reddit/X
  • Creates a second engagement opportunity at game-end
  • Surfaces stats/social as overlays, not separate destinations

METRICS TO WATCH

  • Time-to-broadcast (target: <3s on game nights)
  • Stat overlay engagement rate
  • Post-game session extension (sec)
  • Side-app switching reduction
PERSONA 01 · OFF-NIGHT
HH

HARDCORE HOOPS HARRY

SAME PERSONA · DIFFERENT MOMENT

"League Pass sits unused 80% of the time, weakening my connection to the product and making renewal feel less essential each year."

Tuesday at 7:45 AM. No Heat game tonight — they're on an off day. Harry is drinking coffee and scrolling his phone for an NBA fix. Currently he reflexively opens ESPN, Google, or r/NBA — never League Pass.

JOURNEY 02 · SUBSCRIBER + NO LIVE GAME

OPENS APP · NO GAME ON

This is the journey that earns the entire video-first redesign its retention claim. The MRD says 96% of subscribers only use League Pass for live games. The slides say going from 1-2 to 3-4 weekly opens makes a subscriber 3x more likely to re-subscribe. This is where those weekly opens have to come from.

CURRENT EXPERIENCE
STAGE 01
MORNING TRIGGER
Wants his morning NBA fix. Reflexively opens ESPN — League Pass isn't even in the consideration set.
😐
STAGE 02
(IF HE OPENS LP)
Static article home: "5 takeaways from last night," power rankings, news carousel. Nothing tied to him or the Heat.
😣
STAGE 03
SCANS
Skim, skim, skim. No live game = no anchor. Doesn't know what features exist beyond streaming.
😣
STAGE 04
DEFECTS
~10 seconds in, closes the app. Defaults back to ESPN/Reddit for the rest of his morning.
😡
STAGE 05
CHURN SIGNAL
Each defection erodes the case for renewing. By March, the subscription feels like a "seasonal luxury" worth cutting.
😡
VIDEO-FIRST EXPERIENCE
STAGE 01
MORNING TRIGGER
Push notification: "Heat won 112-104. Herro had 28. Tap for the 60-second briefing." League Pass enters the morning routine.
😊
STAGE 02
DAILY BRIEFING
Heat-personalized briefing: last night's score → top 3 plays autoplay → next game countdown → Herro player news → playoff seed impact.
😊
STAGE 03
MICRO-ENGAGE
Highlights swipe (TikTok-style). NBA ID streak nudge: "Day 4 — open tomorrow to keep your streak."
😊
STAGE 04
DISCOVERS
Surfaces a Replay or Stats feature he didn't know existed: "Watch the condensed Heat game in 8 minutes."
😊
STAGE 05
RETURNS TOMORROW
Closes app after ~90 seconds with a reason to come back: streak active, countdown ticking. Weekly opens climb from 1-2 to 3-4.
😊

PAIN POINTS EXPOSED

  • LP has zero answer for ~80% of the week with no relevant game
  • ESPN/Google own the morning sports routine entirely
  • 60%+ of subscribers don't use Replays or Stats — features stay invisible
  • "Sits unused 80% of the time" is a literal cancellation precursor

VIDEO-FIRST WINS

  • Steals the morning briefing from ESPN by being equally useful + Heat-personalized
  • Creates a daily touchpoint independent of the game schedule
  • NBA ID streak gives a non-content reason to come back
  • Surfaces hidden features in context, not via tutorial

METRICS TO WATCH

  • Non-game-day daily active users
  • Briefing completion rate (% who watch ≥60s)
  • % subs with weekly opens 3+ ← the 3x re-sub stat
  • Replays/Stats first-time use rate
  • NBA ID streak retention curve
PERSONA 04 · NEW
SN

SKEPTICAL NON-SUB

MICHAEL EVANS · SF · NEVER SUBSCRIBED

"It doesn't seem worth it to me. I think I know what League Pass gets you, I just don't need every game. If it was cheaper I might."

Lakers fan, lives in SF. Watches via parents' YouTube TV + Reddit + Instagram. Real interview signal from your research. Defects to illegal streams when his team isn't on national TV. Represents the non-subscriber archetype that Journey 03's onboarding flow is built to convert.

JOURNEY 03 · NEW USER ONBOARDING

FIRST VISIT · GUIDED ONBOARDING

Friday 10:15 PM. Lakers vs. Nuggets is tipping off, Michael's group chat is hyped, his parents' YouTube TV doesn't carry it. Michael's already signed in to nba.com browsing the Lakers page when the LP entry surfaces. Instead of a cold paywall, he confirms 5 quick setup steps (his profile pre-filled from NBA ID), opts to skip subscription, and gets a 5-minute free preview of the live game. The paywall lands at peak engagement — mid-Q3 — with the personalization he just built reflected back to him.

CURRENT EXPERIENCE
STAGE 01
URGENT SEARCH
Googles "lakers game stream free." Furtive energy — looking for any way in.
😣
STAGE 02
PAYWALL LANDING
Lands on NBA.com / LP signup. Static marketing page: "Subscribe for $109.99/season." No game footage. No preview.
😣
STAGE 03
EVALUATES
Reads features list: 4K, no ads, all out-of-market games. Abstract. Doesn't understand what Standard vs Premium actually delivers.
😐
STAGE 04
PRICE FRICTION
"$109 for the rest of the season vs. free." The product is described, not demonstrated. Decision fatigue sets in.
😣
STAGE 05
DEFECTS
Bounces to an illegal stream or jumps into the r/NBA game thread. Watches the game for free with worse quality.
😡
STAGE 06
CONFIRMED BIAS
Conclusion reinforced: "League Pass isn't worth it. The free options are good enough." Returns to YouTube TV + Reddit habit.
😡
VIDEO-FIRST EXPERIENCE
STAGE 01
WELCOME · NBA.COM ENTRY
Already signed in to nba.com. LP entry surfaces with his name pre-populated: "Welcome, Michael — set up in 60 seconds." No fresh signup, no cold paywall. 5 quick steps · no payment yet.
😣
STAGE 02
CONFIRM NAME + EMAIL · STEP 1/5
Two pre-filled fields from his NBA ID: name and email, edit icons next to each. Two taps to confirm — removes the form-fill friction that kills cold-signup funnels at the very first screen.
😊
STAGE 03
CONFIRM TEAM + PLAYER · STEP 2/5
Lakers and LeBron pre-checked from his nba.com browsing history. Two taps to confirm, optional "add another." Personalization is ~80% built before he sees the home screen.
😊
STAGE 04
NOTIFICATIONS + CALENDAR · STEP 3/5
Three independent toggles (game-start, close-game, morning briefing) plus a conditional calendar push for next Lakers game (Sun 7 PM, 15-min reminder). The 48-hour return hook lives here, not as a separate screen.
😊
STAGE 05
CONTENT TYPES · STEP 4/5
Tag chips: Live games · Highlights · Condensed games (selected) · Stats · Behind-the-scenes · Press · Fantasy. Drives what surfaces in the personalized home and morning briefing.
😊
STAGE 06
SUBSCRIBE? · SKIP FOR NOW · STEP 5/5
Two CTAs: "Subscribe · $9.99/mo with Face ID" or "Skip for now · try 5 minutes free." The skip path is the conversion experiment — the product sells itself with the personalized home + live preview.
😊
STAGE 07
PERSONALIZED HOME + 5-MIN PREVIEW
Lands on the LP home rebuilt around his picks — Lakers game hero, LeBron queued, condensed waiting. Persistent "FREE PREVIEW · 5:00" timer. Tap-to-watch enters the live broadcast with the timer ticking.
😊
STAGE 08
PREVIEW ENDED · PAYWALL
Timer hits 0:00 mid-Q3. Bottom sheet rises while the Lakers game freezes in the upper half. Headline: "Keep your season." Below: ★ Lakers feed · ★ LeBron alerts · ★ Morning briefing scheduled — the personalization he already built reflected back.
😊
STAGE 09
APPLE PAY · ONE TAP
"Subscribe with Face ID · $9.99/mo." Native Apple Pay sheet, double-click to confirm. Sheet dismisses, broadcast resumes full-screen. "You're in, Michael." Q3 still playing — he didn't miss a possession.
😊
EMOTIONAL ARC

PAIN POINTS EXPOSED

  • Cold paywall-first landing converts at the lowest point of intent
  • Zero personalization on first visit — product feels generic
  • Illegal streams beat the paid product on speed-to-content
  • No profile captured, so even if he converts, Day-2 feels empty

GUIDED ONBOARDING WINS

  • NBA ID pre-fill turns 5 setup steps into ~30 seconds of confirmation, not data entry
  • Personalization is inferred from prior nba.com activity — ~80% built before he sees the home
  • "Skip for now" + 5-min preview lets the product sell itself instead of selling with copy
  • Conditional calendar push folded into notifications — same 48-hour return hook, no extra screen
  • Paywall fires at peak engagement (mid-Q3) reflecting the personalization Michael just built

METRICS TO WATCH

  • 5-step onboarding completion rate (% who finish all 5 confirmations within 24 hours)
  • Skip-for-now rate vs. immediate-subscribe rate at Step 5
  • 5-min preview → paywall conversion rate
  • Calendar-toggle acceptance rate inside Step 3 (notifications)
  • Day-2 return rate from morning briefing + calendar reminder
  • Time-to-paywall vs. time-to-subscribe (the skip path's conversion lift)
PERSONA 01 · CONNECTED DEVICES
HH

HARDCORE HOOPS HARRY

36 · HOUSTON, TX · STANDARD TIER · 4-YEAR SUB

"I get an alert when something's happening, but by the time I find the game on my TV, the moment's already over."

Same Harry, new context. He's at home but not watching. A close-game alert pushes him toward the TV — but the friction between "I want to watch" and "I'm watching" is what kills the moment. Standard subscription rule: one device at a time.

JOURNEY 04 · NOTIFICATION → APPLE TV HANDOFF

FROM ALERT TO LIVING-ROOM BROADCAST IN UNDER A MINUTE

It's 9:42 PM. Heat are down 3 to the Bulls with 2:11 left. Harry's phone buzzes with a close-game alert. He walks to the living room with the TV remote in his pocket and a phone in his hand. Today this takes 5 minutes and he misses the moment. The proposed flow takes under a minute and lands him in the broadcast with full personalization.

CURRENT EXPERIENCE
STAGE 01
VAGUE ALERT
Generic push: "Don't miss the action!" No score, no time left, no team context. Easy to dismiss.
😐
STAGE 02
WALKS TO TV
Turns on Apple TV, opens League Pass. Cold launch — logged out.
😣
STAGE 03
RE-AUTH ON REMOTE
6-character device code, types into nba.com/activate on his phone, hits enter, waits for the TV to catch up.
😣
STAGE 04
HUNTS THE GAME
Generic carousel home. Scrolls Watch → Featured → Live. Finds Heat-Bulls. Three more clicks.
😐
STAGE 05
JOINS LATE
Broadcast loads. Score has changed. He missed the close-game moment the alert was about. The reason he came running is gone.
😡
STAGE 06
RESENTS THE ALERT
Decides next time he'll just check Twitter. The notification feels like a bait without the payoff.
😡
CONNECTED DEVICES EXPERIENCE
STAGE 01
EARNED ALERT
"🔥 Close game · Heat down 3 · 2:11 left." Specific, contextual, fired only when his fav team or fav player is in a high-leverage moment.
😊
STAGE 02
QR PAIRING
Walks to TV, opens LP. Big QR code on screen: "Scan with the NBA app to sign in." No remote-typing.
😊
STAGE 03
ONE-TAP CONFIRM
Phone scans QR. Pre-checked toggle: "☑ Resume Heat vs Bulls (Q4 · 2:11)." One red CTA — done.
😊
STAGE 04
3-SEC HANDOFF
Phone: "Sending to Apple TV…" TV: "Welcome back, Harry · Loading Heat vs Bulls." Same greeting beat as phone and desktop.
😊
STAGE 05
LIVE WITH CONTEXT
Broadcast plays on TV with Reaction Pulse, Win Probability, score pill — sized for 10-foot viewing. He didn't miss the moment.
😊
STAGE 06
PHONE = COMPANION
Phone becomes a now-playing strip: ★ Bam stat line · mute · "Take it back to phone." Phone is metadata only — Standard one-device rule preserved.
😊

PAIN POINTS EXPOSED

  • TV remote-typing is the most-cited friction in connected-TV streaming
  • Generic alerts train users to ignore them
  • Cold-launch + re-auth + hunt = 5 min to broadcast — the moment is already gone
  • No personalization carry-over from phone, even though the user is the same

CONNECTED-DEVICE WINS

  • QR-pair removes the most expensive friction point on TV
  • Pre-checked Resume toggle compresses 3 decisions into 1 tap
  • Personalization (favorite teams, favorite player) carries automatically across devices
  • Single-device rule becomes a feature: "your stream follows you"
  • Companion strip surfaces personalized stats more often without breaking the broadcast

METRICS TO WATCH

  • Notification-to-broadcast time (target: under 60s, vs. ~5 min today)
  • Close-game alert tap-through rate
  • QR-pair completion rate (vs. legacy device-code activation)
  • Cross-device session continuity (% of streams that use handoff in a session)
  • "Take back to phone" usage rate as a measure of companion-strip stickiness
PERSONA 01 · CONNECTED DEVICES
HH

HARDCORE HOOPS HARRY

36 · HOUSTON, TX · STANDARD TIER · 4-YEAR SUB

"I keep the game open in a tab while I work. By the time I notice something happened, Twitter's already spoiled it."

Same Harry, daytime context. Working from home, game playing in a desktop tab while he answers emails. The PRD calls this the "ambient stream" pattern — high-frequency opens, low-attention. The challenge: how do we make the game pull Harry back at exactly the right moments without spamming him.

JOURNEY 05 · TAB-BLUR ATTENTION RECOVERY

WORKING IN ONE TAB · GAME LIVE IN ANOTHER

It's Wednesday at 1:30 PM. Heat-Bulls is on early. Harry has the LP tab open on his second monitor with sound on, but he's deep in Gmail. He never wants to not have the game on — but he can't watch every second. Today he misses the big plays and finds out from Twitter. The proposed flow earns its way back to his attention without spamming him.

CURRENT EXPERIENCE
STAGE 01
TAB OPEN, AUDIO ON
Game playing in LP tab. Harry keeps glancing over while answering emails.
😐
STAGE 02
FULL-FOCUS WORK
Pulled into Slack standup. LP tab buried behind 8 other windows. Stream still playing, audio low.
😐
STAGE 03
BAM DUNKS
Reaction pulse spikes, score swings, but Harry's eyes are on Slack. He hears the crowd noise but can't tell if it's a foul, a make, or a timeout.
😣
STAGE 04
SPOILER VIA X
Group chat lights up: "BAM! 🔥". Twitter ahead of his stream by 30 seconds. He learns about the play before he sees it.
😡
STAGE 05
RETURNS TOO LATE
Switches to LP tab. The play is gone. Game is mid-different-action. No replay surfaced; he'd have to leave the live to find it.
😡
STAGE 06
GIVES UP ON AMBIENT
Closes the LP tab. Decides next time he'll just check the score on Twitter — defeats the whole subscription.
😡
CONNECTED DEVICES EXPERIENCE
STAGE 01
TAB OPEN, AUDIO ON
Game playing in LP tab. Same as today, with one quiet difference: the Page-Visibility API is reporting tab-state to the server.
😊
STAGE 02
TAB GOES BACKGROUND
Harry switches to Gmail. Server flips Harry's session into "ambient mode" — broadcast events now pass through the trigger-rule filter.
😊
STAGE 03
BAM DUNKS · RULE FIRES
Bam (favorite player) scores. Rule matches: fav player + score. Server publishes a single push to Harry's phone. Reaction pulse spike alone wouldn't have fired it — the bar is high.
😊
STAGE 04
EARNED PUSH
Phone: "🔥 Bam dunk · Heat 22-19 · You're missing it." Specific, contextual, time-stamped. Tap to come back to the game.
😊
STAGE 05
RETURNS · "YOU MISSED"
Tab refocuses. Banner overlays the live broadcast: "★ Bam dunk · Q4 1:54 · Replay 10 sec." Live keeps playing underneath.
😊
STAGE 06
PIP REPLAY · NO SKIP
Replay clip plays in a corner picture-in-picture; live broadcast continues full-frame. When clip ends, banner dismisses. Caught up, nothing skipped, no spoiler tax.
😊

PAIN POINTS EXPOSED

  • Twitter and Reddit beat the paid product on speed-to-moment by 30+ seconds
  • Ambient streaming has no signaling layer — the user has to be vigilant or miss everything
  • No replay surfaced inline — switching away from live to find the moment costs the live session
  • Generic notifications create alert fatigue, train users to mute LP entirely

TAB-BLUR RECOVERY WINS

  • Page-Visibility detection turns "tab in background" into a useful product signal
  • Trigger rules (fav player score, ≥6-pt swing in 3 min, peak Reaction Pulse) make every push feel earned
  • Inline 10-sec replay served from edge buffer — no leaving the live broadcast
  • Standard one-device rule preserved — phone push is metadata, not a stream
  • Reinforces "no feature should require seeking" PRD principle

METRICS TO WATCH

  • Background-tab session length (proxy for ambient watching)
  • Earned-push tap-through rate (target: high, vs. low for generic notifications)
  • Replay-banner engagement rate (% who tap "Replay 10 sec")
  • Notification opt-out rate (must stay flat or decline; spam test)
  • Daily-active opens uplift in the Standard tier (the headline retention metric)