sapien
← All articlesJournal9 min read

Gabor-Granger Pricing: Method and Worked Example

Learn how Gabor-Granger uses a price ladder. Follow answer paths, check missing information and compare revenue and contribution before a market pilot.

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

Gabor-Granger pricing research asks whether people would buy the same offer at specific prices, using a planned price ladder. It helps compare stated buying responses across feasible amounts. This guide shows how routing affects the answers and why the price with the highest revenue index may not lead on contribution.

Gabor-Granger and Van Westendorp answer different questions

Choose Gabor-Granger when feasible prices are known and the next question is how stated buying response changes across them. Choose Van Westendorp when you first need buyers’ perceptions of a plausible price range. Its cheapness and expensiveness questions do not answer the same question as purchase at each displayed amount.

Example: testing a grocery six-pack price ladder

This hypothetical example follows Harbor, a sparkling-tea brand. Its card offers six 250 ml cans as a one-time grocery purchase, with tax included in the total pack price. It is a different offer from Lumen’s independent price groups in our pricing research guide. Ask:

At a price of $[displayed amount] for this six-pack, would you choose to buy it on your next relevant shopping occasion?

Offer yes, no and insufficient information. An adaptive design can move toward higher prices after a yes and lower prices after a no. Define in advance the tested amounts, how starting prices are assigned, stopping rule and how you record the last accepted price. Asking every price in ascending order is a different way of showing prices and can introduce its own anchoring.

Choose the routing before collecting answers. This example is one implementation, not a universal rule. The ladder is $8, $10, $12, $15, $18, $20 and $25. Start at $15: after yes, try $18 then $20; after no, try $12 then $10. Continue until adjacent amounts have a yes and a no, or reach a ladder endpoint. Stop on insufficient information and record it separately. Save the bracket, not an exact threshold at an unshown price.

Path, starting at $15

Details

R1

Shown amounts and answers: $15 yes → $18 yes → $20 no

Stop and recorded result: $18 accepted / $20 rejected; last accepted $18

R2

Shown amounts and answers: $15 no → $12 no → $10 yes

Stop and recorded result: $10 accepted / $12 rejected; last accepted $10

R3

Shown amounts and answers: $15 insufficient information

Stop and recorded result: Stop; no threshold assigned

R4, quality check

Shown amounts and answers: $15 no → $12 yes; recheck $15 yes, then $12 no

Stop and recorded result: Inconsistent recheck; flag for review rather than force a threshold

R4 adds a recheck to demonstrate a quality flag; the ordinary route records the bracket reached.

A ladder is a set of offers the business can supply, not just a list of numbers. Keep the tea quantity, buying occasion, channel and price unit fixed. If a different amount changes delivery or pack size, record that as an offer change.

The route determines which information is observed. R1 reaches an accepted $18 and rejected $20; R2 reaches an accepted $10 and rejected $12. Starting elsewhere could expose a different history. Plan the start treatment and task order before collection, and keep them in the data instead of storing only a final number.

Unshown prices stay unknown

Endpoint state

Details

Accepted then rejected at an adjacent step

What can be recorded: Accepted/rejected bracket

What remains unknown: Response to unshown intermediate amounts

Yes at the highest ladder amount

What can be recorded: Acceptance at that endpoint

What remains unknown: Whether higher prices would also be accepted

No at the lowest amount

What can be recorded: Rejection at that endpoint

What remains unknown: Whether a lower amount would change the answer

Insufficient information

What can be recorded: No threshold assigned

What remains unknown: Response after the offer is clarified

R1 does not reveal whether $19 would be accepted. R2 does not reveal whether $11 would be accepted. “Last accepted price” is a useful summary of shown prices, with a limitation: the underlying threshold may lie between the bracket endpoints.

A yes at $25 is an endpoint observation. It cannot tell you how much higher the person might accept. A no at $8 likewise cannot establish whether every lower amount fails. Keep endpoint states in the report, especially when many answers fall there; the proposed ladder may be too narrow for the question.

Insufficient information stops the route too. The price response stays unknown until the offer is understood. Treating that answer as a rejection would confuse a need for explanation with price sensitivity.

Choose a summary rule that fits the design and keep the brackets. Label a conservative last-accepted summary clearly. Do not turn it into an exact willingness-to-pay estimate for a price nobody saw.

A separate worksheet summarizes thresholds

The separate worksheet uses ten example maximum accepted prices: 8, 10, 10, 12, 12, 15, 15, 18, 20 and 25. It demonstrates a threshold summary after a hypothetical study; it is not a record of an actual adaptive survey.

The analysis script below computes the share of thresholds at or above each tested price and the index price × share. Copy it with the complete CSV to reproduce the calculation.

Tested price

Details

$10

Values at or above price: 9 of 10: 90%

Revenue index: $9.00

$12

Values at or above price: 7 of 10: 70%

Revenue index: $8.40

$15

Values at or above price: 5 of 10: 50%

Revenue index: $7.50

$18

Values at or above price: 3 of 10: 30%

Revenue index: $5.40

$20

Values at or above price: 2 of 10: 20%

Revenue index: $4.00

$10 has the highest index among these tested prices. The index follows from the supplied thresholds; it does not measure money received.

These ten thresholds don’t reconstruct R1–R4 or any participant’s adaptive route. They are a separate calculation example: seven values are at least $12 and five are at least $15.

This threshold rule assumes that accepting a higher amount implies accepting lower amounts. It makes the calculation traceable, but an actual questionnaire should keep any contradictions that challenge it. A smooth summary should not make those records disappear.

The summarized relationship is conditional on the tested offer and this rule. It omits substitution, shopping friction, awareness and availability. Labeling the output an index keeps the calculation separate from a forecast of dollars actually received.

Starting price and comprehension can change the summary

Store the complete path: starting price, each display, answer, reason and stop. In a real study, compare patterns under planned start/order treatments while keeping answers from the same person linked. If starting-price differences would change the recommendation, report them beside the aggregate curve.

Check the export before choosing collection software. Qualtrics’ guided-solution documentation describes last-agreed and bucketed prices, but says the exact sequence of shown prices is unavailable. If your analysis needs start-price or route checks, confirm that the proposed setup will keep them; a final price field cannot supply that history.

Probe what “would buy” means in the purchase situation. A respondent may mean “would consider,” may assume a promotion, or may evaluate one can instead of a pack. Fix a verified stimulus or unit problem consistently, then reassess whether the relevant price question was actually answered.

Review individual records where the summary changes. If people accept high prices but later reject lower ones, investigate why and apply the rule agreed in advance. A tidier chart is not a reason to remove contradictions.

Contradictory routes need investigation

R4 is a planned quality-check example: $15 no, $12 yes, then a recheck gives $15 yes and $12 no. It demonstrates why the record needs a flag. It does not show that the person is fraudulent or that one of the answers is necessarily correct.

Ask whether the person's idea of what was in the pack changed, whether they took “buy” to mean something else, or whether they simply changed their mind. A reason can turn a suspicious-looking route into a fixable wording issue. Apply any exclusion under a rule agreed in advance and keep the original path.

Show how the ranking changes when record-handling decisions affect it. Explain the recommendation’s dependence on those records; do not choose the rule that gives the preferred price. For simulated responses, also check whether different audience data changes the result. More generated rows do not give the precision of more people.

The objective changes the leading price

At $10, the worksheet’s share is 0.9 and the revenue index is $9. At $15, the share is 0.5 and the revenue index is $7.50. On that objective alone, $10 leads among the tested amounts. Now apply the assumed $7 variable cost: $10 yields (10−7)×.9=$2.70, while $15 yields (15−7)×.5=$4.00. The preferred tested price changes.

The revenue and contribution peaks differ

Arithmetic index ($ per opportunity)

  • Price × stated share
  • Contribution, $7 cost

Tested price ($)

Details

10

Price × stated share: 9

Contribution, $7 cost: 2.7

12

Price × stated share: 8.4

Contribution, $7 cost: 3.5

15

Price × stated share: 7.5

Contribution, $7 cost: 4

18

Price × stated share: 5.4

Contribution, $7 cost: 3.3

20

Price × stated share: 4

Contribution, $7 cost: 2.6

The threshold worksheet shows that $10 has the highest revenue index; $15 has the highest contribution index among these tested prices. These are arithmetic indices, not observed sales.

The other contribution indices are $3.50 at $12, $3.30 at $18 and $2.60 at $20. These calculations use the same stated shares and the assumed constant cost. Fees, returns, channel terms, repeat and acquisition may change the actual economics. Keep those inputs explicit when using an index to choose a pilot.

Reaching more buyers may matter more than near-term contribution. Set that priority in the brief. The study shows the response trade-off; the business decides which one to accept. A chart peak cannot choose the objective.

Use $15 as the contribution-leading candidate under the stated $7 cost, and carry $10’s stronger stated response into the pilot comparison. Use the seller’s actual costs and purchasing evidence to select the commercial price.

Keep the price paths, separate threshold worksheet, calculations and next evidence together. That lets the reviewer distinguish what respondents saw, what the analyst summarized and what the business decided.

Complete threshold worksheet and analysis

Save the complete CSV below as gabor-granger.csv and the Python code as gabor-granger.py in the same folder. Run python3 gabor-granger.py. The output includes the count, number used for each share, stated share, revenue index and contribution index at the assumed $7 cost.

Complete ten-record threshold data

response_id,maximum_accepted_price,evidence_type
D01,8,fictional_teaching_data
D02,10,fictional_teaching_data
D03,10,fictional_teaching_data
D04,12,fictional_teaching_data
D05,12,fictional_teaching_data
D06,15,fictional_teaching_data
D07,15,fictional_teaching_data
D08,18,fictional_teaching_data
D09,20,fictional_teaching_data
D10,25,fictional_teaching_data

Complete threshold analysis

"""Editable fictional threshold worksheet. No purchase or profit forecast."""
import csv
from pathlib import Path
rows=list(csv.DictReader(Path(__file__).with_name('gabor-granger.csv').open()))
values=[float(r['maximum_accepted_price']) for r in rows]
prices=[10,12,15,18,20]
print('Fictional teaching data; threshold summary, not actual adaptive survey logs.')
print('price,accepting_count,total,stated_share,revenue_index,contribution_index_at_cost7')
for p in prices:
    count=sum(v>=p for v in values);share=count/len(values)
    print(f'{p},{count},{len(values)},{share:.4f},{p*share:.2f},{(p-7)*share:.2f}')

Further reading

    Use a Sapien study discussion to decide which prices could lead to different commercial recommendations. For Harbor, that means examining $10’s stronger stated response against $15’s contribution index before an actual grocery pilot.

    ← Back to all articles