Vensia
← All articlesJournal8 min read

Van Westendorp: use price perceptions to narrow the test

Van Westendorp’s four questions narrow a plausible price range. A worked four-can tea example shows why a crossing starts a price test rather than establishing a revenue or profit optimum.

Solid and outlined people considering two ivory multipacks with tea-leaf and sun reliefs on connected sculptural terrain.

Van Westendorp uses four price-perception questions to find the prices buyers regard as plausible for a defined offer. For an illustrative four-can pack of sparkling tea, the result below narrows the next price test to $8–$11. Those boundaries describe cheapness and expensiveness; the business still has to check costs and buying at feasible prices.

Start with one offer and four monetary questions

Use one complete offer for the four questions. Here, the card reads: “Four 250 ml cans of sparkling tea, one-off grocery purchase, total pack price including tax.” Request a monetary amount for each question:

  1. At what price would this offer seem so inexpensive that you would doubt its quality?
  2. At what price would it seem good value for the money?
  3. At what price would it start feeling expensive, although you might still consider it?
  4. 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 vw-analysis.py beside the CSV prints a price-grid table and the first intersection under the stated convention.

The ordering rule is a convention for this dataset, not a diagnosis. An out-of-order row might reflect confused pack and can prices, reversed fields or an ambiguous question. Investigate the original answer before correcting or excluding it.

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.

The curve convention determines the 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.

Four curves on a shared 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.

Here, both curve directions include responses whose threshold equals the grid price. Another implementation may use strict inequalities, a different 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. The six-pack in our pricing guide needs its own price evidence. A table’s pack size, tax treatment and channel matter as much as its column labels.

Several grid prices can share a crossing

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.

When the difference between two curves changes sign between whole-dollar points, interpolation estimates a crossing between them. It adds no respondents or observed responses at that calculated 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.

The useful output is a candidate interval and next test

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.

Complete threshold records and analysis

Save the CSV as vw-data.csv and the Python code as 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('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

The Conjointly four-question explanation provides method context for the price-perception questions.

For the four-can pack, the next study should compare feasible prices or a revised offer when $8–$11 doesn’t cover costs. In a Vensia study discussion, agree which buyer reaction would change that choice and what the modeled evidence can support.

← Back to all articles