How to Run Discount Experiments Without Training Users to Wait
·Paywalls

Run discount experiments exclusively on new users who have never seen your standard pricing, and maintain a permanent control group that never receives discounts. This approach lets you measure the true incremental value of discounts while preventing existing users from learning to wait for better offers or feeling cheated by variable pricing they discover later.
Never show discounts to users who previously saw full price, and never run time-limited discount tests that rotate all users through different price points. These patterns train users to abandon and return, share price discrepancies with other users, and ultimately erode trust in your pricing. New-user segmentation with sticky assignments prevents these conditioning effects.
The User Conditioning Problem
The biggest risk in discount testing isn't revenue loss during the experiment—it's permanently training your user base to wait for deals. When users encounter a discount after abandoning, see friends getting lower prices, or receive promotional offers after declining full price, they learn that your listed price isn't real. This conditioning spreads through user reviews, social media, and word of mouth, degrading your pricing power long after the experiment ends.
This problem compounds over time as more users experience multiple price points. Someone who sees full price on Monday, abandons, and returns Wednesday to find a discount learns to always wait. They tell friends to wait. Your app's reputation shifts from a product worth its asking price to a product that's always running sales. Once this perception establishes itself, returning to full-price conversions becomes nearly impossible.
New Users Only, Sticky Assignments
The solution is restricting discount experiments to first-time users and assigning each user to a single variant permanently. A new user either sees your standard price or a discounted price on their first encounter, and they see that same price on every subsequent session. They never experience your app offering different prices at different times, which means they can't learn to game your pricing.
This requires tracking which variant each user received and maintaining that assignment across sessions, even if your experiment ends or you shift traffic to a winning variant. Users assigned to the control group during the experiment should continue seeing standard pricing indefinitely. Users who received a discount should continue receiving that same discount structure. This consistency prevents the conditioning effect while still allowing you to measure long-term retention and lifetime value differences between groups.
Measuring True Incrementality with Holdouts
A discount that increases conversions by forty percent might seem successful until you realize thirty percent would have converted at full price anyway. The only conversions that matter are incremental—users who subscribe because of the discount but wouldn't have at full price. Measuring this requires a permanent holdout group that never sees discounts, even after you declare a winner and roll out the discount more broadly.
When you shift new traffic toward a winning discount variant, maintain a small percentage of new users who continue seeing full price. This ongoing control group lets you measure true incrementality over time, accounting for changes in user quality, seasonality, and market conditions. Without this holdout, you're flying blind—you know your discounted conversion rate, but you've lost the ability to measure what percentage of those conversions were truly incremental versus users who would have paid full price.
Avoiding Transparent Pricing Pitfalls
Mobile apps operate in transparent markets where users compare notes, screenshot paywalls, and post pricing in communities. Running simultaneous discount variants means some users will inevitably discover others paid less for the same product. This discovery creates resentment, refund requests, and negative reviews that cost more than any experiment could gain. The damage to trust is permanent.
New-user-only experiments mitigate this risk because users in different variants rarely interact during their first session. By the time they might compare notes in user communities, enough time has passed that price differences feel like separate promotions rather than simultaneous discrimination. However, this only works if assignments are truly sticky—if a user who paid full price later sees a discount offered to them, the betrayal feels immediate and personal.
Implementation and Attribution
Implementing this approach requires infrastructure that assigns variants before the paywall appears, persists those assignments across sessions, and attributes purchases back to the correct variant even when transactions complete through third-party systems. Your variant assignment must happen server-side to prevent users from manipulating their assignment by reinstalling or clearing data.
For apps using RevenueCat or similar purchase platforms, you need to match subscription events back to experiment variants using a consistent user identifier. Spinosis handles this by assigning sticky variants when users first launch your app, then attributing RevenueCat purchases when the App User ID matches the experiment user ID. This ensures accurate measurement of how different discount strategies affect not just initial conversion, but long-term retention, renewal rates, and lifetime value across cohorts that experienced different pricing.
Questions
How long should I run a discount experiment before making a decision?
Run discount experiments until you have statistical significance on your primary metric and at least thirty days of retention data for early cohorts. Initial conversion rates often look different from longer-term value, especially with discounts that attract more price-sensitive users who cancel quickly. Many experiments that appear successful based on conversion rates show neutral or negative results when measured on day-thirty retained revenue. Budget at least six to eight weeks for meaningful results.
What percentage should I keep in the holdout group after rolling out a winning discount?
Maintain five to ten percent of new users in the full-price control group permanently. This percentage is small enough that it doesn't significantly limit revenue if the discount truly drives incremental conversions, but large enough to provide statistically meaningful ongoing measurement. The holdout lets you detect when market conditions change, when the discount's effectiveness degrades, or when you could profitably return to full price for some segments.
Can I test multiple discount levels simultaneously?
Yes, but add variants conservatively and ensure each has sufficient traffic for statistical significance within your desired timeframe. Testing control, ten percent off, twenty-five percent off, and fifty percent off simultaneously might require four times as much time or traffic as a simple control versus single discount test. Start with your most promising discount level against control, then test variations only after establishing whether discounting works at all for your product.
Turn on auto-optimize for one test.
Create a project, install the SDK, connect RevenueCat. Traffic starts shifting on its own.