
Results
At ElevenLabs, the moment someone runs out of credits is the highest-intent moment in the product. In 2026 I redesigned what happens there for paying creators, free users, and developers.
+63% plan upgrades
Paying users who hit their credit limit now see a plan upgrade instead of a credit top-up; manual top-ups fell 33%
About $2.05M in net lifetime value per year, after subtracting the $900K in pay-as-you-go revenue the upgrade suppresses
Shipped to every paying user on Text to Speech, Sound Effects, and Voice Isolator
+17% subscriptions and +39% web LTV per user
The redesigned, product-specific “free limit reached” modal won its test in October
Three more triggers in the same family (free approaching, paid approaching, paid limit) are testing now
+9% subscriptions and +8% LTV for developers
The third version of the ElevenAPI upgrade modal kept pay-as-you-go reachable, with auto top-up on by default
It fixed what v1 and v2 broke: both lifted subscriptions but lost the developers who had set up auto top-up
+26–28% subscriptions from one default
Defaulting the offer modals to the $1 Starter plan moved the subscription rate from 5.45% to 6.99%, about 1,500 extra payers a day
A deliberate trade: cash per user fell 19–22%, accepted to grow the paid base during the Eleven v4 launch
The Problem
ElevenLabs sells credits. When people ran out, the product asked them to buy more of the same thing.
The wall sold the wrong thing
Paying users at their credit limit were offered a top-up at their current tier, not the next plan
Earlier auto top-up nudges looked like a $1.57M a year win, then shrank to $341K on a two-week rerun and were reverted
A generic plan grid asked people to compare four tiers at the exact moment they just wanted to keep working
Developers had no clear path to a plan
After pay-as-you-go launched, the API subscription page put top-ups and plans side by side with no guidance
A related test showed that where developers land shapes how they pay: sending them to the playground lifted runs 184% but cut subscriptions 19%

The Idea
Treat the limit as a product moment, not a billing error. Sell the next tier, show what it unlocks for the job the person is doing, and protect the people who already pay their own way.
Upgrade, don’t refill
Offer the plan that removes the limit instead of more credits at the same tier
Judge it on net lifetime value, so the pay-as-you-go revenue it suppresses counts against it
Make it about the workflow
Product-specific modals: what Creator unlocks for voice cloning is different from what it unlocks for video
One family of four triggers: free approaching, free limit, paid approaching, and paid limit
Keep the self-serve path open for developers
Combine Add Credits and Upgrade in one modal, with auto top-up on by default

The Action
Test the structure first
Partnered with Growth Engineering on an upgrade-versus-top-up test for paying users out of credits, July 31 to August 15
The result was decisive (100% chance to win) and shipped to all paying users
Then redesign the modal family
Designed four product-specific upsell modals with the Growth Product team, each showing what the next tier unlocks for that product
Tested them trigger by trigger in PostHog; “free limit reached” won first

Iterate on the developer modal
v1 and v2 pushed plans and raised subscriptions, but lost pay-as-you-go developers with auto top-up configured
v3 combined Add Credits and Auto Top Up with the toggle on by default: +9% subscriptions and +8% LTV
Follow-ons running now: an upsell after a blocked API request, a low-balance sidebar card, and a Creator-first offer after API key creation

Use defaults deliberately
During the $1 Starter launch, defaulted the offer modals to Starter instead of Creator; Starter subscriptions rose 63% and Creator fell 55%
Added in-app and marketing-site $1 banners alongside, and logged the default plan offered so later tests read cleanly
What I Brought
Design
Designed the upsell modal family, every version of the API upgrade modal, the low-balance card, and the $1 Starter banners
Wrote product-specific content for each modal so the offer matched the workflow
Strategy
Framed the credit limit as the highest-intent moment in the product
Pushed for decisions on net lifetime value and reruns rather than first reads
Collaboration
Worked with Growth Engineering, Growth Product, and Growth Data across a dozen PostHog experiments
Reflection
Sell the next step, not more of the same. A paying user at a credit wall already believes in the product; the design’s job is to show what the next tier lets them do.
Rerun before you celebrate. The auto top-up result shrank by 80% on a rerun, and holdout testing became our default.
Defaults move behavior more than copy. One default changed the tier mix by about 60 points in each direction, so every volume play now ships with a renewal plan.
More screens

Upsell modal in context, inside the app

Offer modal defaulting to Creator, before the Starter-default test

In-app $1 Starter promo banner

Low-balance sidebar card for developers


