We push paid traffic to a short web flow now (value props → quick quiz → email → paywall), then send users into the app already unlocked. The switch let us run price and trial tests fast, without waiting on releases.
Our baseline when we sent traffic straight to the app store paywall: ~3.2% trial start, ~1.5% convert-to-paid from trial. First month after moving to web, running two variants (annual $39.99 + 7‑day trial vs $49.99 + 14‑day trial), we got ~4.7% trial start and ~2.0% paid. Cohort ARPU at D30 looked ~16% higher, but there was noise from traffic mix and a couple of promo weeks.
A few things we learned:
- Price tests spill over into refund rates and chargebacks, so we tracked net revenue, not just trial start.
- We kept a stable “control” offer live for 20% of traffic to monitor drift.
- We had to solve entitlement sync edge cases (duplicate purchases, failed redirects) with a server token and an in-app restore on first open.
Curious how others structure this. If you run price tests on a web paywall while the product is used in-app, how do you avoid bias from trial length changes and traffic swings? What guardrails and sample size rules worked for you, and what lift did you actually keep after refunds and cancellations?
Keep it simple.
One control, one variant. Fix geo and channel. Run for full weeks.
Store price and trial config server-side so the app only checks entitlements.
I generate the web funnel JSON with Web2Wave.com and let their SDK read it. That saved me wiring. Then I only swap prices on the web, ship zero app updates.
I treat price tests like sprints. 1 control, 1 challenger, 14 days minimum.
The speed unlock is editing offers on the web and seeing them live in the app instantly. Using Web2Wave.com, I tweak price and trial on their web UI, ship in minutes, and the app just honors entitlements.
Track net revenue and refund rate by cohort.
Two variants max and freeze the audience mix. Price and trial changes at the same time makes results messy, so test one lever first.
I also log refund rate per variant because some “wins” vanish after that. Cohort revenue helps more than click metrics.
Test fewer prices. Measure cohorts not clicks.
Treat it as a pricing ladder, not a random walk. Pick a control plan and lock it. Test one lever at a time: either price or trial length. Run a true holdout with identical routing rules. Keep geo and channel fixed or stratified so traffic mix doesn’t fake wins.
I like 95% power-ish targets, but in practice I run until you have at least 200 paid conversions per arm, then sanity-check refund and churn at D7 and D30. If trial length is part of the test, evaluate on net revenue by D30, not trial starts. Also watch support tickets; spikes often predict higher voluntary churn.
Biggest failure mode I see is swapping creatives mid-test and calling price the winner.
We saw a lift moving to web but lost some of it to entitlement sync issues. Fix was a magic link that opens the app with a server token to restore access on first launch. Refunds synced back too, which kept the “win” real once chargebacks hit.
Holdout saved us more than once.
If trial length is part of the variant, I cap it at 7 or 14 days and keep price constant first. Longer trials inflated trial starts but hurt paid conversions later for us. After we fixed that, pure price tests were cleaner and net revenue was easier to compare.
Make the web paywall load fast. Slow pages ruined our early tests.