Van Westendorp: use price perceptions to narrow the test
Use the four Van Westendorp questions, fictional data and an inspectable price grid to understand perception boundaries, crossings and equality plateaus.

Van Westendorp asks four price-perception questions and compares their cumulative curves to identify a plausible price interval. Its intersections describe cheapness and expensiveness, not observed demand or profit. Use the interval to choose commercially feasible prices for a concrete-price study. Preserve the offer, curve convention and exclusion rules, because each changes the interpretation.
Start with one offer and four monetary questions
Imagine you are choosing candidate prices for a four-can sparkling-tea pack sold through grocery retailers. The illustrative ten-record example below shows how perceptions narrow the next price test. State: “Four 250 ml cans of sparkling tea, one-off grocery purchase, total pack price including tax.” Then request a monetary amount for each question:
- At what price would this offer seem so inexpensive that you would doubt its quality?
- At what price would it seem good value for the money?
- At what price would it start feeling expensive, although you might still consider it?
- At what price would it be too expensive for you to consider?
Use consistent currency and unit fields. Allow an irrelevant or insufficiently described offer to remain an explicit state. Displaying the preferred range before the questions can teach the answer you meant to investigate.
The four questions intentionally distinguish a low price that creates quality doubt from good value, and an expensive but still imaginable price from outright rejection. Treating all four as “what would you pay?” erases the distinction the method is designed to explore.
Pilot the meanings before interpreting numbers. Someone who sees any tea price as irrelevant needs an explicit state, rather than a forced threshold. Someone uncertain about quantity needs the same clarification as everyone else. A prompted range or a visibly preferred price can anchor all four answers.
Check the records and declare the valid base
For this dataset, require too_cheap ≤ cheap ≤ expensive ≤ too_expensive. Flag incomplete or contradictory rows for review. State whether you correct a verified data-entry error, retain the response or exclude it; report the effect rather than quietly cleaning away inconvenient answers.
Copy the complete threshold data and reproducible analysis below. Save them in the same folder using the supplied filenames. Running python3 N013-vw-analysis.py beside the CSV prints a price-grid table and the first intersection under the stated convention.
The ordering rule is a design convention for this dataset. It can identify impossible or contradictory entries, but it does not diagnose the reason. Check whether a respondent confused total-pack and per-can prices, reversed two fields, or regarded a very cheap offer as poor quality.
Record how many rows enter each curve. If all four fields are required for a complete-case analysis, show the lost cases and their reasons. If partial curves use different bases, make that visible. Comparing percentages with different coverage can create an apparent crossing that reflects missingness as well as perception.
Do not “repair” a response solely to make the expected order hold. Correct a verified entry error under a consistent rule; otherwise explain retention or exclusion and whether it changes the candidate interval. The reader should be able to reproduce the rule from the saved file.
Reconstruct a curve before naming its crossing
Intersection | Details |
|---|---|
Marginal cheapness | Curves compared: Too cheap and expensive Interpretation: Lower perception boundary |
Marginal expensiveness | Curves compared: Cheap and too expensive Interpretation: Upper perception boundary |
Indifference | Curves compared: Cheap and expensive Interpretation: Balance of bargain and expensive judgments |
Often called “optimal” | Curves compared: Too cheap and too expensive Interpretation: Balance of extreme price objections |
At a whole-dollar price p, the two cheapness curves count thresholds at or above p. The expensive and too-expensive curves count thresholds at or below p. Divide by the ten complete rows. These opposite directions produce the crossings; they are not four independently observed price tests.
Read the four curves on the same price grid
Both tables show shares of the ten complete threshold records, in percent, for the four-can pack. Prices are whole-pack USD amounts. Equality is included; the first whole-dollar equality defines each named crossing.
Pack price, USD | Details |
|---|---|
6 | Too cheap, %: 50 Good value, %: 70 |
7 | Too cheap, %: 40 Good value, %: 60 |
8 | Too cheap, %: 30 Good value, %: 50 |
9 | Too cheap, %: 30 Good value, %: 40 |
10 | Too cheap, %: 20 Good value, %: 40 |
11 | Too cheap, %: 20 Good value, %: 30 |
12 | Too cheap, %: 10 Good value, %: 30 |
13 | Too cheap, %: 10 Good value, %: 20 |
Pack price, USD | Details |
|---|---|
6 | Expensive, %: 30 Too expensive, %: 10 |
7 | Expensive, %: 30 Too expensive, %: 20 |
8 | Expensive, %: 30 Too expensive, %: 30 |
9 | Expensive, %: 40 Too expensive, %: 30 |
10 | Expensive, %: 40 Too expensive, %: 30 |
11 | Expensive, %: 50 Too expensive, %: 30 |
12 | Expensive, %: 60 Too expensive, %: 40 |
13 | Expensive, %: 60 Too expensive, %: 40 |
These are computed grid points, not independently observed price tests. The $8–$11 interval supplies price-perception context.
At $8, three of ten too-cheap thresholds are at or above $8 and three expensive thresholds are at or below it. Their equality gives the lower perception boundary under the first-grid-equality rule. At $11, three good-value thresholds remain at or above $11 and three too-expensive thresholds are at or below it, giving the upper boundary.
Equality belongs to both rules in this exercise. Another implementation may use strict inequalities, another grid or interpolation. It can therefore give a different apparent crossing from the same discrete rows. Compare the definitions before interpreting that as a consumer change.
The calculated interval is $8–$11 for this four-can pack. It is not a finding for the six-pack in our pricing guide. A chart’s physical unit, tax treatment and channel matter as much as its axis labels.
Recognize plateaus and the meaning of “optimal”
Cheap and expensive curves are equal at $9 and $10. Too cheap and too expensive are equal at $8 and $9. The script reports every equality and selects the first whole-dollar point for its named crossing. A label that prints one amount does not erase the second equality.
The commonly named “optimal price point” balances the two extreme price objections. It does not maximize a purchase probability, revenue or contribution. The perception data do not contain those objectives. A mathematically exact intersection can still leave the commercial decision unresolved.
Interpolation between adjacent differences that change sign is a calculation convention. It adds no new respondents and no actual exposure at a decimal price. When several integer points are equal, reporting cents would make the exercise look more precise without supplying more evidence.
Use the curve shape as a diagnostic as well as a range. A low-price quality objection can suggest that presentation or quality cues are unclear. An early expensive perception can prompt investigation of the alternative buyers compare with. Follow those interpretations to the original answers before revising the offer.
What if $8–$11 cannot support the offer?
Start with the feasible price and cost conditions of this particular pack. If every amount in the perception interval is commercially unusable, an average of the boundaries does not solve the problem. The offer may need a different quantity, channel, benefit or cost structure.
Separate “buyers understood the offer and find it expensive” from “buyers imagined less value than the offer supplies.” In the latter case, revise truthful inclusions or explanation and test comprehension. In the former, consider a genuinely different offer or a different reachable audience. Research cannot make a costly pack economical by renaming an intersection.
If viable candidates exist, take them into concrete-price testing. Select amounts the business can implement, define the outcome and preserve the complete offer. The next study asks about response to those displayed amounts; the perception exercise has already supplied the earlier context.
Compare price perceptions within relevant audiences when the launch decision depends on their difference. Use appropriate bases and the same card. A single pooled crossing may conceal one group for whom the occasion is valuable and another for whom the pack is irrelevant. Do not manufacture segment curves from this ten-row file, which supplies no audience records.
Report a candidate interval and a concrete handoff
A finished report should state the offer, question wording, valid base, curve directions, equality convention, all relevant crossings and the action those findings support. For this example, the action is to investigate feasible prices in the $8–$11 neighborhood, preserving the repeated equalities as a reason to avoid overprecision.
The report can also legitimately say “revise the offer before testing a ladder.” That is a completed decision when costs rule out the entire interval. It is more useful than forcing a final price from data about perceptions.
Use Gabor-Granger for a planned repeated-price ladder, or monadic pricing for independent cells, when you need buying responses at feasible displayed amounts. These answer a later question than Van Westendorp’s price perceptions. Use a suitable market pilot for actual buying. If the thresholds are modeled, keep their source and task-relevant validation visible. The calculation does not change the evidence behind the inputs.
Copy the threshold records and analysis
Save the CSV as N013-vw-data.csv and the Python code as N013-vw-analysis.py in the same folder. The script retains the ordering check, inclusive curve directions, whole-dollar grid, all equality points and sign-change interpolation. Its labels summarize perceptions under those conventions.
All ten complete threshold records
response_id,too_cheap,cheap,expensive,too_expensive,evidence_type
D01,1,2,3,5,fictional_teaching_data
D02,2,3,5,7,fictional_teaching_data
D03,3,4,6,8,fictional_teaching_data
D04,4,6,9,12,fictional_teaching_data
D05,5,7,11,14,fictional_teaching_data
D06,6,8,12,16,fictional_teaching_data
D07,7,10,14,18,fictional_teaching_data
D08,9,12,16,20,fictional_teaching_data
D09,11,14,18,23,fictional_teaching_data
D10,13,16,20,26,fictional_teaching_data
Complete four-curve analysis
"""Reproducible fictional VW perception example; not demand/profit estimation."""
import csv
from pathlib import Path
rows=list(csv.DictReader(Path(__file__).with_name('N013-vw-data.csv').open()))
fields=['too_cheap','cheap','expensive','too_expensive']
for r in rows:
v=[float(r[k]) for k in fields]
if sorted(v)!=v: raise ValueError('Threshold order invalid: '+r['response_id'])
n=len(rows)
curves=[]
for price in range(0,31):
c={'price':price}
for key in fields:
if key in fields[:2]: count=sum(float(r[key])>=price for r in rows)
else: count=sum(float(r[key])<=price for r in rows)
c[key]=count/n
curves.append(c)
print('Fictional teaching data. Equality included; whole-dollar grid. No sales forecast.')
print('price,too_cheap,cheap,expensive,too_expensive')
for c in curves: print(','.join(str(c[k]) for k in ['price']+fields))
for label,a,b in [('PMC','too_cheap','expensive'),('PME','cheap','too_expensive'),('IPP','cheap','expensive'),('OPP','too_cheap','too_expensive')]:
equal=[c['price'] for c in curves if abs(c[a]-c[b])<1e-12]
crossings=[]
for left,right in zip(curves,curves[1:]):
dl=left[a]-left[b];dr=right[a]-right[b]
if dl*dr<0: crossings.append(left['price']+(right['price']-left['price'])*dl/(dl-dr))
candidates=sorted(set(equal+crossings))
print(label, 'first grid equality/interpolated crossing:', candidates[0] if candidates else 'none', 'all equality points:',equal,'sign-change crossings:',crossings)
Further reading
- our pricing research guide
- our Gabor-Granger guide
- our monadic price-cells guide
The Conjointly four-question explanation provides method context for the price-perception questions.
Bring the decision, audience and evidence needed to a scoped Sapien study discussion.


