Your Best Buyers Are Already Logged In: A Heuristic Checklist for the In-App Change Plan Screen
Your Best Buyers Are Already Logged In: A Heuristic Checklist for the In-App Change Plan Screen
You spent three weeks on the marketing pricing page. The person who actually pays you never looks at it again.
Expansion revenue happens in-app, at the worst possible moment: a user hits a seat limit, a usage cap, or a feature gate at 4pm on a Tuesday and clicks "Change plan" with a mild amount of resentment. That screen is a conversion surface. Most teams treat it as a settings page.
Here's a heuristic checklist built for that one screen. Not for pricing pages, not for signup — for the moment an existing user decides whether to give you more money.
Why the change plan screen beats your pricing page
Different intent, different rules.
- On the pricing page, you're persuading. The user doesn't know you yet. Value props, social proof, comparison tables.
- On the change plan screen, you're confirming. The user already uses the product daily. They've hit a wall. They aren't asking "is this worth it" — they're asking "how much, right now, and what breaks."
That flips your design priorities. On the pricing page, hierarchy goes to plan names. On the change plan screen, hierarchy goes to the number they'll be charged today.
The most common failure is treating it as a smaller copy of the pricing page: three cards, feature checkmarks, "Upgrade" button. That's a persuasion layout dropped onto a confirmation task. It creates friction where there should be none.
The 14-point heuristic checklist for the change plan screen
Grouped by heuristic. Score each one pass/fail on your own screen — no partial credit.
Clarity
- The screen names the limit they hit. "You've used 5 of 5 seats" beats "Upgrade to unlock more." The user shouldn't have to remember why they clicked.
- Current and new plan sit side by side, same row order, same units. If the pricing page lists seats first and this screen lists storage first, the user re-reads everything from scratch.
- Feature differences are stated as deltas, not absolutes. "Adds SSO and audit logs" — not two full feature columns the user has to diff mentally.
- The button names the outcome, not the action. "Move 6 seats to Team — $49/seat" beats "Upgrade Now." Vague buttons send people to the back button.
Trust
- Proration is visible before the button, with today's actual number. Not "prorated automatically." A dollar figure.
- The next invoice date and amount sit on the same screen as the button. Not behind a "billing details" link.
- Cancellation and downgrade terms get one plain line near the button. If "can I undo this" requires a help-center search, you've taxed the decision.
Friction
- No card re-entry when a card is on file. Show
Visa •••• 4242and a "change card" link. A card form here reads as a second paywall. - Seat count defaults to current usage plus one. Not the plan minimum, not a round number. Defaulting to 5 when they use 12 forces arithmetic mid-decision.
- The monthly/annual toggle updates totals in place and keeps the seat count. Re-rendering the page and resetting selections is the classic silent killer.
Hierarchy
- One plan is visually dominant, with a reason attached. "Most teams your size pick Team" does more work than three equally weighted cards.
- The total is the largest number on the screen. Bigger than the plan name, bigger than the per-seat price.
Guidance
- One line explains what happens to their data and usage at the moment of change. What carries over, what resets, what's billed next cycle.
Feedback
- The confirmation state restates what changed, what's charged today, what's charged next, and links to the invoice. A toast that says "Success!" is not a confirmation.
If you'd rather have this scored against a real screen than your memory of it, run a free audit on your upgrade flow — FlowAudit returns a prioritized fix list instead of a pass/fail table you argue with yourself about.
P0/P1/P2: fix these first
Not everything above deserves a sprint. Order matters more than coverage.
P0 — ship this week
- Proration and today's charge, visible above the button
- Seat stepper defaulted to current usage + 1
- Card on file shown as last4, no re-entry form
- Button labeled with the outcome and the price
- The limit callout at the top of the screen ("5 of 5 seats in use")
P1 — next sprint
- Delta framing for feature differences
- Next invoice line (date + amount) near the button
- A single recommended plan with a stated reason
- Annual toggle that preserves state and updates totals in place
P2 — batch and polish
- Post-change confirmation screen with an invoice link
- One-line cancellation/downgrade note
- Data and usage carry-over line
The P0 list is five items and roughly a day of work. If you ship nothing else from this post, ship those.
Before/after: the seat stepper and the button
Most change plan screens fail at exactly two elements. Here's the rewrite.
Before
Your plan: Starter Unlock more seats and advanced features. [ Upgrade Now ]
What's wrong: no limit named, no price, no delta, no proration, no next invoice, and a button that promises nothing specific.
After
You've hit your seat limit. 5 of 5 seats are in use.
Starter → Team Seats: 5 now → 6 [−] [+]
Charged today: $0.00 (prorated — 11 days left in your cycle) Next invoice: Mar 14, $294.00 (6 seats × $49)
[ Move 6 seats to Team — $294/mo ] Visa •••• 4242 · change card · cancel anytime
Same product, same price, same plan. The difference is that the user can now answer "how much, when, and what if I hate it" without leaving the screen. That's the whole job.
Note what didn't change: no discount, no trial extension, no chat widget. Clarity on a confirmation screen is usually worth more than any incentive you'd bolt on top of it.
The 30-minute audit playbook
Do this on your own product, not a competitor's. Open the app in a fresh session with a test account that's near its limit.
- 0–5 min: Screenshot the change plan screen at 100% zoom on desktop. Then do it at 375px wide. Most teams have never seen the mobile version.
- 5–15 min: Walk the 14 checks above and write pass/fail next to each. Don't fix anything yet — fixing mid-audit makes you defend your own work instead of reading it.
- 15–20 min: Time the full change, from clicking "Change plan" to a confirmed new plan. If it takes over 60 seconds, find out where the time goes.
- 20–30 min: Convert your fails into P0/P1/P2 using the split above, and put the P0s on this week's board.
Then re-run it in a month. Change plan screens rot quietly — someone adds a required field, someone moves the proration note into a tooltip, and nobody notices until expansion revenue flattens.
If you want a second opinion on where your screen is leaking — or you'd rather not hand-score 14 heuristics from memory — start a free FlowAudit and you'll get a prioritized P0/P1/P2 list for your own flow in minutes. It's the same split used above, applied to your actual screen, and it's free to run. See pricing if you want the full multi-flow report, or browse more teardowns on the blog.