Choice-based
Van Westendorp Price Sensitivity
Builds cumulative curves from four price questions put to respondents and reads an acceptable price range off the points where those curves cross.
Method summary
The price sensitivity meter replaces a single what-would-you-pay question with four thresholds. Respondents are asked which price would be so low that they would doubt the quality, which price strikes them as a bargain, which price feels expensive yet still worth considering, and beyond which price they would rule the product out altogether. Cumulative proportions are derived from those four answers: the cheapness curves fall as price rises while the expensiveness curves climb. Where the curves meet, the crossings carry names that can be interpreted. The price at which the share rejecting the product for being too cheap equals the share rejecting it for being too expensive is the optimal price point, and the price at which the share calling it cheap equals the share calling it expensive is the indifference price. The method never hands over one correct price; it hands over a defensible band. YouReply Analyze computes the four crossings and the acceptable range between the outer two. Since no price is actually tested and only declared thresholds are read, what comes back maps perception rather than purchase behaviour.
Which research questions does it answer?
- What monthly price band would the market consider reasonable for a new subscription service?
- How close does our current price sit to the level at which people start doubting the quality?
- Where does the upper bound of price perception move when a product is relaunched with new positioning?
- How far apart are the declared acceptable ranges for the same product in two different markets?
When should you use it?
- When a starting price band is needed for a product or service that is not yet on sale.
- Early in a pricing programme, to narrow down the number of price points worth testing.
- When respondents know the category well enough to hold a price in mind.
- In categories where price signals quality and something too cheap actually repels buyers.
- When the aim is to bound the search space before a more detailed pricing study.
Required variable types
- Four continuous columns: the prices declared as too cheap, cheap, expensive and too expensive.
- All four must use the same currency and the same unit; mixing a monthly with an annual figure makes the curves meaningless.
- One row per respondent, with all four columns filled in, since incomplete rows drop out of the analysis.
- No grouping column is used; to see segments separately you have to filter the data and rerun the analysis.
- Zero and negative values cannot be read as prices and should be declared as missing values on the Variable tab.
Key assumptions
- Correct order and wording of the questions
- The four questions have to follow the canonical order and each has to ask about one threshold only. If the too-cheap question does not evoke doubt about quality, or the too-expensive question does not mean ruling the product out, the names attached to the crossings describe something else.
- Answers ordered within the row
- One person's four prices should rise from too cheap through to too expensive. Rows out of order signal that the question was misread, and they flatten the curves and shift the crossings.
- Enough complete responses
- Cumulative curves need enough people who answered all four questions before they are smooth enough to cross cleanly. With few answers the curves stay stepped and a crossing can hang on a single respondent.
- Familiarity with the category
- A respondent who does not know the product or the category reports a guess rather than a price perception. Because the method reads declared thresholds at face value, those guesses enter the curves as well.
- Declared prices are not purchase behaviour
- The four questions ask which price is acceptable, not what would be bought. A declared acceptance band does not convert into a purchase rate.
How YouReply checks these assumptions
- Correct order and wording of the questions: Question wording is invisible to the panel. You map each column to a threshold in the parameter form, and a mapping mistake passes without comment.
- Answers ordered within the row: Within-row consistency is not checked and inconsistent rows are not removed. Scanning for them on the Data tab, or flagging them with a derived column, is up to you.
- Enough complete responses: The run requires at least ten responses with all four columns filled and stops with an error below that. Ten is a technical floor rather than a sample size that would support a pricing decision.
- Familiarity with the category: Familiarity is not measured. Adding a familiarity question, filtering on it and rerunning the analysis on the filtered data is the researcher's job.
- Declared prices are not purchase behaviour: Purchase-intent questions are not implemented here, so no demand or revenue estimate is produced and no step turns the band into a volume forecast.
How the analysis is run
- 1Drop the file holding the four price questions onto the panel; drag-and-drop upload works for CSV and XLSX alike.
- 2On the Data tab confirm the price columns were read as numbers, since cells carrying a currency symbol or a thousands separator arrive as text and never enter the analysis.
- 3On the Variable tab mark all four columns as scale measurements and declare missing-value codes for invalid answers.
- 4On the same tab build a derived column if you want to inspect within-row ordering, because the panel does not run that check by itself.
- 5On the Analysis tab choose Van Westendorp price sensitivity from the choice-based group; the data requirements box states the four-continuous-column condition.
- 6In the parameter form map each column to its threshold carefully; a wrong mapping raises no error and merely mislabels the points.
- 7Run the analysis. The curve table, the four price points and the acceptable range arrive as collapsible sections.
- 8Export the result to Excel and read the library call and version off the computation credits card; the history tab keeps your earlier runs.
Statistics and tables produced
- Cumulative curve table
- The proportions taken by the cheap, too cheap, expensive and too expensive curves across the price grid, as a table. It is thinned to roughly every fourth grid point to keep the payload small.
- Optimal price point
- The price at which the share ruling the product out for being too cheap equals the share ruling it out for being too expensive, read as the point of least total rejection.
- Indifference price point
- The price at which the share calling the product cheap equals the share calling it expensive. For established brands it often lands near the prevailing market price and serves as a sanity check.
- Points of marginal cheapness and marginal expensiveness
- The lower and upper bounds: the first is where doubt about quality becomes pronounced, the second where the price starts being refused.
- Acceptable price range
- The span between the points of marginal cheapness and marginal expensiveness, offered as the band within which the pricing conversation should be held.
- Crossings that were not found
- A crossing that does not genuinely occur in the data is returned empty rather than guessed. An empty point is not a software fault but a statement that the curves did not meet over that price range.
Effect size and confidence intervals
- Price points
- The four crossings are the main quantities this method yields and they are read in currency. They are not estimated from a model: the place where cumulative proportions become equal is located by linear interpolation over a two hundred point grid. The values therefore depend on the resolution of that grid and on how the answers are spread, and they are not parameter estimates.
- Width of the acceptable range
- The distance between the lower and upper bound shows how far respondents agree about price. A narrow band means expectations cluster; a wide one points to segments pulling apart. This is a description arrived at by counting, and no significance measure is produced for the width.
- Steepness of the curves
- How fast a proportion changes with price in the curve table is sensitivity itself. A steep expensiveness curve says a small increase puts many people off. That reading is done by eye from the table, and no separate elasticity coefficient is computed.
None of the four price points comes with a confidence interval, and the acceptable range is not one either: the word range notwithstanding, it is simply the distance between two crossings. No significance test is run, so the result cannot say whether a difference between two studies or two segments exceeds sampling variability. If the stability of the points concerns you, the practical route is to split the sample in half, run the analysis twice and see how far the points move.
Example research question and example result
The numbers below are a representative example, not data from a real study or a real user.
- Research question
- In an illustrative digital subscription study, which monthly price band is considered acceptable for a new online archive service?
- Variables
- Too cheap: the monthly price low enough to raise doubts about quality · Cheap: the monthly price that counts as a bargain · Expensive: the monthly price that feels high but remains worth considering · Too expensive: the monthly price at which the service is ruled out
- Example result
- Curves were built from 284 respondents who answered all four questions. Marginal cheapness fell at 74 lira and marginal expensiveness at 183 lira, giving an acceptable range of 74 to 183 lira. The optimal price point came out at 119 lira and the indifference price at 136 lira. The expensiveness curve covers 41 per cent of respondents at 150 lira and 62 per cent at 180 lira.
- Interpretation
- The band is wide: 109 lira between the bounds says respondents disagree markedly about what this service is worth. The optimal point sitting below the indifference price means least rejection occurs slightly under the average sense of what counts as expensive, which is an ordinary ordering for a service nobody knows yet. The expensiveness curve climbing 21 points between 150 and 180 lira shows sensitivity rising there as the upper bound approaches. None of this sets a price: 119 lira is not a recommendation but the point at which declared perceptions minimise rejection, and it says nothing about how many people would subscribe. The figures are illustrative.
Real output on a sample dataset
The results below were produced by the analysis engine from this data file. Changing the variable changes the research question as well; every run was computed in advance, so the page sends no request to the engine.
General customer survey (synthetic)
A wide survey of three hundred respondents: two and three category grouping variables, continuous measures, a five point ordinal scale, a binary purchase outcome, a four category brand choice, three repeated measurements, paired binary questions, three raters, four price questions and deliberately empty cells.
- Rows
- 300
- Columns
- respondent_id, gender, education, region, age, income, satisfaction, service_score, price_score, quality_score, loyalty, nps_score, purchased, brand_choice, satisfaction_level, pre_score, post_score, measure_1, measure_2, measure_3, use_before, use_after, use_followup, rater_1, rater_2, rater_3, price_too_cheap, price_cheap, price_expensive, price_too_expensive, feedback_score, followup_rating
The data is synthetic: it comes from a fixed random seed, not from a real study. The values below were produced by the analysis engine from this file, so uploading the same file to the panel gives the same results.
Research question: According to the four price questions, where is the acceptable price range and the optimal price point?
- Too cheap price column
- price_too_cheap
- Cheap price column
- price_cheap
- Expensive price column
- price_expensive
- Too expensive price column
- price_too_expensive
- Valid observations
- 300
- Optimal price point (OPP)
- 101.59
- Indifference price point (IPP)
- 107.40
- Point of marginal cheapness (PMC)
- 90.88
- Point of marginal expensiveness (PME)
- 120.46
- Lowest stated price
- 21
- Highest stated price
- 224
Cumulative price curves
| Row | too_cheap | cheap | expensive | too_expensive |
|---|---|---|---|---|
| 21.0 | 0.997 | 1 | 0 | 0 |
| 25.08 | 0.997 | 1 | 0 | 0 |
| 29.16 | 0.993 | 1 | 0 | 0 |
| 33.24 | 0.990 | 1 | 0 | 0 |
| 37.32 | 0.980 | 1 | 0 | 0 |
| 41.4 | 0.963 | 0.997 | 0 | 0 |
| 45.48 | 0.923 | 0.997 | 0 | 0 |
| 49.56 | 0.887 | 0.997 | 0 | 0 |
| 53.64 | 0.840 | 0.993 | 0 | 0 |
| 57.72 | 0.777 | 0.987 | 0 | 0 |
| 61.8 | 0.670 | 0.963 | 0 | 0 |
| 65.88 | 0.553 | 0.933 | 0.003 | 0 |
| 69.96 | 0.437 | 0.907 | 0.003 | 0 |
| 74.05 | 0.327 | 0.863 | 0.003 | 0 |
| 78.13 | 0.227 | 0.790 | 0.003 | 0 |
| 82.21 | 0.147 | 0.683 | 0.013 | 0 |
| 86.29 | 0.063 | 0.587 | 0.020 | 0 |
| 90.37 | 0.030 | 0.487 | 0.027 | 0 |
| 94.45 | 0.020 | 0.400 | 0.043 | 0 |
| 98.53 | 0.003 | 0.280 | 0.050 | 0 |
| 102.61 | 0.003 | 0.203 | 0.070 | 0.007 |
| 106.69 | 0.003 | 0.137 | 0.113 | 0.013 |
| 110.77 | 0 | 0.087 | 0.170 | 0.013 |
| 114.85 | 0 | 0.050 | 0.207 | 0.017 |
| 118.93 | 0 | 0.033 | 0.293 | 0.020 |
| 123.01 | 0 | 0.007 | 0.377 | 0.033 |
| 127.09 | 0 | 0.003 | 0.467 | 0.053 |
| 131.17 | 0 | 0 | 0.563 | 0.057 |
| 135.25 | 0 | 0 | 0.647 | 0.077 |
| 139.33 | 0 | 0 | 0.727 | 0.103 |
| 143.41 | 0 | 0 | 0.790 | 0.133 |
| 147.49 | 0 | 0 | 0.843 | 0.157 |
| 151.57 | 0 | 0 | 0.890 | 0.203 |
| 155.65 | 0 | 0 | 0.913 | 0.237 |
| 159.73 | 0 | 0 | 0.947 | 0.297 |
| 163.81 | 0 | 0 | 0.970 | 0.397 |
| 167.89 | 0 | 0 | 0.990 | 0.450 |
| 171.97 | 0 | 0 | 0.997 | 0.523 |
| 176.06 | 0 | 0 | 0.997 | 0.600 |
| 180.14 | 0 | 0 | 0.997 | 0.670 |
| 184.22 | 0 | 0 | 0.997 | 0.743 |
| 188.3 | 0 | 0 | 0.997 | 0.797 |
| 192.38 | 0 | 0 | 0.997 | 0.857 |
| 196.46 | 0 | 0 | 1 | 0.883 |
| 200.54 | 0 | 0 | 1 | 0.907 |
| 204.62 | 0 | 0 | 1 | 0.933 |
| 208.7 | 0 | 0 | 1 | 0.957 |
| 212.78 | 0 | 0 | 1 | 0.973 |
| 216.86 | 0 | 0 | 1 | 0.990 |
| 220.94 | 0 | 0 | 1 | 0.993 |
Computation credits: scipy 1.18.0 · statsmodels 0.14.6 · scikit-learn 1.9.0 · numpy 2.5.1 · pandas 3.0.5 · semopy 2.3.11 · 89fc29a · Data seed: 20260914
How to report the result
The price sensitivity meter placed the acceptable monthly range between 74 and 183 lira, with an optimal price point of 119 lira and an indifference price of 136 lira (N = 284).
An example sentence close to APA style; the numbers are representative.
When you should not use it
- The four questions capture price perception only; no estimate of how many people would buy is produced and no demand curve is fitted.
- The Newton Miller Smith extension, which relies on purchase-intent questions, is not implemented, so no revenue or revenue-maximising point is calculated.
- Competitor prices, channel differences and discounting play no part, so the band reflects the product considered on its own.
- Because within-row ordering is not checked, respondents who misread the questions stay in the curves and move the crossings silently.
- With no interval and no significance test for any point, price differences between segments cannot be compared statistically.
- When a crossing does not occur the point comes back empty, and no approximate value can be substituted; what is called for is looking at why the curves failed to meet.
What to use when the assumptions are not met
- Conjoint AnalysisWhy: When price has to be judged alongside other product features, treating it as part of a trade-off rather than on its own.
- Descriptive StatisticsWhy: When the distribution, mean and percentiles of the four price answers matter more, describing the answers without computing crossings.
- Frequency DistributionWhy: When prices were collected in predefined bands, reporting how often each band was chosen as a count.
- Proportion TestWhy: When the share calling a particular price expensive has to be tested against a benchmark value.
Frequently asked questions
- One of the crossings came back empty. Is that a bug?
- No. An empty point means the two curves involved never met within the range of prices the answers cover. The usual cause is answers clustered into a narrow band, so the curves run in the same direction without ever meeting. The engine will not invent a nearby value in that situation, because the number printed would stand for a point with no counterpart in the data. What to do is open the curve table, look at how the proportions progress with price, and if necessary widen the price wording and collect again.
- Can I take the optimal price point as my selling price?
- The name of that point can mislead. What it marks is the price at which the combined share ruling the product out as too cheap or too expensive is smallest, which is not the price that brings in the most revenue or the most profit. Volume, cost and competitor prices never enter the calculation. In practice the point is used to centre the prices worth testing, and a final price decision has to weigh it against cost structure and positioning.
- Why are the prices in the curve table spaced out?
- The computation runs over a two hundred point price grid, but the table returned to you is thinned to roughly every fourth point so that the result stays a reasonable size. The distinction that matters: the crossings are located by linear interpolation over the full grid, not over the thinned table. A reported price point may therefore not appear as a row in the table, which reflects the thinning rather than any inconsistency.
- How many respondents do I need?
- The technical floor is ten people who answered all four questions, and the analysis refuses to run below it. That number is only the minimum needed to build the curves, not a recommended sample size. With ten responses a single person's answers can move a crossing noticeably. For a pricing decision you want a sample that represents the audience and still leaves enough answers in each segment once it is split; you can probe the stability of the points by halving the sample and repeating the analysis.
References
- Van Westendorp, P. (1976). NSS Price Sensitivity Meter (PSM): A New Approach to Study Consumer Perception of Prices
- Monroe, K. B., & Della Bitta, A. J. (1978). Pricing Research in Marketing: The State of the Art
- Malhotra, N. K. (2019). Marketing Research: An Applied Orientation
- numpy.interp documentation
Try it with your own data
The free plan includes 50 analysis runs a month and needs no card.