Skip to content
Back to Monetization & Revenue

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 price

Common 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.