Price Testing
How to safely test higher prices without losing customers or creating a PR incident.
Why
Price is the highest-leverage revenue variable: a 10% price increase that does not hurt conversion is pure profit, and most SaaS underprice by 30-50% because they set the price once at launch and never test. The fear that prevents testing is 'what if I lose customers' — but a well-designed price test is low-risk because it tests only new visitors (existing customers keep their price) and it tests a small increase (10-20%, not 2x). The methodology matters: you cannot A/B test price on the same segment (that is the PR-disaster dynamic pricing), but you can test a new price on all new visitors for 2 weeks and compare conversion to the historical baseline. The key metric is revenue per visitor, not conversion rate — a 20% price increase that drops conversion 10% still increases revenue 8%. The most common finding is that SaaS can raise prices 20-30% with zero conversion impact, because the original price was set by guessing, not by testing.
When
When you have 3+ months of stable conversion data as a baseline. Test one tier at a time, one price change at a time, never during a product launch or marketing push.
How
1. Establish a 4-week baseline: record conversion rate and revenue per visitor for the current price — you need this to compare against 2. Pick one tier to test (start with the middle tier, it has the most volume) and a new price 20% higher (e.g., $29 → $35) 3. Grandfather all existing customers at their current price via a Stripe coupon — they must not see the price increase 4. Change the price for new visitors only: update the Price object in Stripe and the pricing page, and run the test for 2-4 weeks 5. Measure revenue per visitor (not conversion rate): if the new price gives higher revenue/visitor with conversion not down more than 10%, keep it 6. If conversion drops > 15% or revenue/visitor drops, revert to the old price immediately — the market is telling you the price is too high 7. Do not announce the price test — 'we are testing higher prices' is not a message you want on Twitter. Just change the price quietly for new signups 8. After the test, if you keep the new price, email existing customers in 6 months: 'we have not raised your price in 2 years; your grandfathered rate is locked in' — this turns the increase into a loyalty benefit 9. Test one variable at a time: do not change the price and the tier limits and the trial length simultaneously — you will not know which change caused the result
Example
# Price test setup (Stripe)
# 1. Grandfather existing customers
const coupon = await stripe.coupons.create({
percent_off: 17, // keeps them at $29 if new price is $35
duration: "forever",
name: "Grandfathered — original price",
});
await stripe.subscriptions.update(subId, { coupon: coupon.id });
# 2. Create new price for new signups
const newPrice = await stripe.prices.create({
product: productId, unit_amount: 3500, currency: "usd",
recurring: { interval: "month" },
});
# 3. Measure: revenue per visitor
const baseline = { visitors: 4000, conversions: 120, revenue: 3480 }; // $29
const test = { visitors: 4100, conversions: 105, revenue: 3675 }; // $35
const baselineRpv = 3480 / 4000; // $0.87
const testRpv = 3675 / 4100; // $0.90 (+3.4%)
// Conversion dropped 12.5% but revenue/visitor rose 3.4% → keep the new priceCommon Problems
- ⚠Testing price by A/B-splitting current visitors — showing $29 to half and $35 to half is dynamic pricing that creates a PR incident when users compare notes. Test new price on all new visitors vs historical baseline.
- ⚠Looking at conversion rate instead of revenue per visitor — a 20% price increase that drops conversion 10% is a win (revenue +8%), but it looks like a loss if you only track conversion.
- ⚠Changing price during a marketing push — a Product Hunt launch drives unusual traffic that is not comparable to your baseline, so any price test during it is meaningless. Test during calm periods.
Best Practices
- ✓Always grandfather existing customers at their current price — raising prices on current customers is the fastest way to generate churn and chargebacks. New price for new signups only.
- ✓Measure revenue per visitor, not conversion rate — the goal is more revenue, not more customers, and a higher price with lower conversion can still win on revenue.
- ✓Test a 20% increase first — most SaaS find they can raise 20-30% with zero conversion impact, because the original price was a guess. Small 5% tests are not worth the run time.