Price-Anchoring Patterns That Lift Shopify AOV

Last updated
Expert reviewed
5 min read
Simeon Mantel
Simeon Mantel
CEO at Fudge.

Key takeaways

  • Price anchoring works because the first number a shopper sees frames how every later number reads. It is a documented cognitive bias, not a trick.
  • The patterns that lift Shopify AOV are all about context: honest compare-at pricing, good-better-best tiers, a premium decoy, bundles priced against the sum of parts, quantity breaks, and per-unit framing for subscriptions.
  • Most of this is native theme work: compare_at_price, product options and variants, bundle apps or metafields, and a clear layout that puts the anchor first.
  • Inflated or fake “was” prices are a consumer-protection risk in many regions. Only anchor against a real, previously charged price.
  • Test anchoring against AOV and conversion rate together, never AOV alone.

Price anchoring on Shopify is the practice of controlling which number a shopper sees first so the price you want them to pay reads as reasonable. It is one of the most reliable levers you have for Shopify AOV, and most of it is a display and layout decision rather than a discount.

This guide covers what anchoring is as a cognitive bias, the specific anchor-pricing patterns that work on a storefront, how to build each one in a theme, and how to test them without kidding yourself about the results.

Why you can trust us

We have worked in the Shopify space for over four years and helped hundreds of stores rework how they present price and value. We build Fudge, an AI storefront editor with a 5.0 rating on the Shopify App Store, so we work directly on the theme layer where every one of these patterns is rendered.


What is price anchoring?

Price anchoring is an application of the anchoring bias: when people judge an unknown value, they lean heavily on the first number they are given, even when that number is arbitrary. The classic demonstration comes from Tversky and Kahneman, who showed that a random anchor shifted people’s numeric estimates in a predictable direction.1

In a store, price has no fixed meaning to a first-time visitor. Is £80 for a lamp expensive? There is no way to know in the abstract. So the shopper reaches for whatever reference the page gives them. If the page shows £120 crossed out next to £80, the £120 becomes the anchor and £80 reads as a saving. If the page shows a £250 version of the same lamp first, £80 reads as the sensible choice.

You are not inventing value. You are supplying the context the shopper uses to judge value, and that context is going to exist whether you design it or not.

Why anchoring lifts AOV

Average order value moves when shoppers trade up or add more, and both decisions are relative. A £45 tier looks generous next to a £70 tier and stingy next to a £30 one. A bundle looks like a deal only when its price sits visibly below the total of buying the parts separately.

Anchoring is the mechanism behind most Shopify AOV tactics. It sits alongside the rest of your product-page work, so it pairs naturally with the tactics in our Shopify CRO guide.


The price-anchoring patterns that work on Shopify

Here are the patterns worth building, what each one anchors against, and where it fits.

PatternAnchor the shopper seesBest for
Compare-at pricingThe original price, struck throughSales, clearance, genuine markdowns
Good-better-best tiersThe most expensive tierProducts with real feature differences
Premium decoy tierA costly option few will buyNudging toward the middle option
Highest price firstThe top of the rangeCollections and variant lists
Bundle vs sum of partsTotal cost bought separatelyComplementary products
Quantity breaksPer-unit price at low volumeConsumables and refills
Per-unit framingCost per day, wash, or servingSubscriptions and large packs

Honest compare-at (was-now) pricing

The most common anchor is a struck-through original price beside the current one. Shopify supports this natively through the variant compare_at_price field: set it above the selling price and most themes render the original with a line through it.2

The rule is that the compare-at price must be a price you genuinely sold at. A “was” price that the product never actually carried is the deceptive pattern regulators care about, covered below.

Good-better-best tiering

Offer three versions and most shoppers pick the middle one. The top tier is not there mainly to sell; it is there to make the middle tier look measured. This works only when the tiers differ in ways the buyer can see, so the jump in price maps to a jump in value.

On Shopify this is usually product variants or separate products presented together. Order them from most expensive to least so the high number anchors first.

The premium decoy

A decoy is a high tier priced so that the tier you actually want to sell looks like the obvious value. The decoy does not need volume. Its job is to shift the comparison, which is why a clearly premium option sitting above your target price reliably pulls choices toward the middle.

Keep the decoy real and buyable. A fake option people cannot purchase erodes trust the moment someone tries.

Show the highest-priced item first

On collection pages and within variant selectors, the first price sets the frame for the rest. Sorting a collection high-to-low, or listing the flagship variant first, means the range opens on its top number and everything after reads as more affordable.

You can see this at work in curated ranges like the ones in our roundup of the best Shopify home decor stores, where hero products anchor the collection before the everyday pieces appear.

Bundle pricing against the sum of parts

A bundle converts when the shopper can see the parts add up to more than the bundle price. Show both numbers: the individual total, struck through, and the bundle price beneath it. The sum of parts is the anchor, and the bundle is the saving against it.

Bundles also do double duty by raising units per order. For the cart-side version of this, see how to add cross-sells in the Shopify cart.

Quantity breaks

Tiered pricing by quantity (“1 for £12, 3 for £30, 6 for £54”) anchors on the single-unit price so the multi-buy reads as progressively better value per unit. It suits consumables and anything a customer reorders.

Marking one tier as the popular choice adds social proof to the anchor. It tells the shopper where other people landed, which lowers the effort of the decision and tends to concentrate choices on the highlighted tier. Only label the tier you can honestly say is the most chosen.

Per-unit framing for subscriptions

A subscription or large pack feels smaller when priced per day, per wash, or per serving. “£1.20 a day” anchors against a trivial daily spend rather than a £36 monthly charge. The total is unchanged; the reference frame is smaller, so the perceived cost drops.

Want these pricing patterns built into your theme? Describe them to Fudge.
Try Fudge for Free

How to build these in a Shopify theme

None of this requires a page builder or a heavy app. Here is where each pattern lives in a theme.

Compare-at pricing. Set compare_at_price on each variant in the admin or via the API. Themes read it in Liquid, so the strike-through renders wherever the price appears: product page, cards, and cart. Confirm your theme actually shows it, since a few minimal themes hide it by default.

Tiers and decoys. Use product options and variants for versions of one product, or a small set of related products displayed together in a section. The layout does the anchoring work, so put the highest price first and give each tier a short reason it costs what it does.

Bundles. Native Shopify bundles, a bundle app, or a custom section can group products. Whichever you use, render the struck-through sum of the parts next to the bundle price so the saving is visible rather than implied.

Quantity breaks and per-unit copy. These come from theme code plus metafields. Store the per-unit or per-day figure in a metafield and print it under the price, or generate the break table from variant prices. A subscription app usually exposes the recurring price, and you add the per-unit line in the template.

If you would rather describe the pattern in plain English than edit Liquid, the Shopify store editor approach writes the theme code for you.


Stay honest: the deceptive-pricing risk

Anchoring stops being legitimate the moment the anchor is fake. Showing an inflated “was” price the product never sold at, a permanent “sale” that never ends, or a decoy nobody can actually buy are all forms of deceptive pricing.

Consumer-protection rules in many regions treat reference prices seriously, and several markets require that a displayed original price reflect a genuine prior selling price over a defined period. The specifics vary by country, so check the rules that apply where you sell.

The practical standard is simple. Every anchor you show should be a real number: a price you charged, a tier a customer can buy, a bundle saving that truly exists. Honest anchoring survives scrutiny and repeat visits. Fake anchoring costs you trust the first time a shopper notices, and it can cost you more than that.


Test anchoring changes responsibly

Anchoring changes are easy to misread because they can lift one metric while hurting another.

The core risk is chasing AOV alone. A premium decoy or an aggressive tier ladder can push the average order up while quietly reducing the number of people who buy at all. A higher AOV on fewer orders can mean less revenue.

So measure AOV and conversion rate together, and watch total revenue per visitor as the tie-breaker. If AOV rises and conversion holds, the change is a win. If AOV rises and conversion falls, do the arithmetic before you keep it.

Run one change at a time where you can, give each test enough traffic to mean something, and check returns and refunds afterward. A pattern that lifts AOV but drives buyer’s remorse shows up as returns a few weeks later, not on the day.


Where Fudge fits

Fudge is an AI storefront editor that writes native theme code. You describe the pattern you want, and it builds the Liquid, CSS, and any JavaScript directly into your theme.

You can ask for a good-better-best tier block with the flagship anchored first, a bundle section that shows the struck-through sum of parts, a quantity-break table, or per-unit subscription copy. Because the output is native, there is no widget rendering over your store and no extra script on every page.

And because it is theme code, it stays when you cancel. The pricing layout you build does not vanish the way an app-rendered element does. You keep the anchor, the tiers, and the bundle exactly as they were.


FAQ

What is price anchoring in ecommerce?

Price anchoring is presenting a reference number first so the price you want to sell reads as reasonable by comparison. It works because of the anchoring bias: people judge unknown values against whatever number they saw first. On a storefront the anchor might be a struck-through original price, a premium tier, or the total cost of buying bundle items separately.

Does price anchoring actually increase AOV?

It can, because trading up and adding more are relative decisions that depend on the reference the page provides. A tier or bundle looks like value only next to a higher number. The effect is real but not guaranteed, so measure AOV and conversion rate together rather than assuming a lift.

How do I set a compare-at price in Shopify?

Set the compare-at price field on each product variant in the admin, above the selling price. Most themes then render the original price with a strike-through next to the current price. Only use it for a price the product genuinely sold at, not an invented higher number.

Is anchor pricing legal on Shopify?

Honest anchoring is fine. Showing a fake original price the product never sold at, or a permanent fake sale, is deceptive pricing and is restricted in many regions. Several markets require a displayed reference price to reflect a genuine prior selling price, so check the consumer-protection rules where you sell.

What is a decoy price and does it work?

A decoy is a high-priced option added mainly to make your target tier look like the sensible choice. It shifts the comparison rather than selling in volume. It works when the decoy is a real, buyable option, and backfires if shoppers discover it cannot actually be purchased.

How should I test a price-anchoring change?

Change one thing at a time and measure AOV alongside conversion rate and revenue per visitor. A change that raises AOV while lowering conversion can reduce total revenue. Give the test enough traffic to be meaningful and check returns afterward, since a poor anchor can show up as refunds weeks later.

Simeon's signature
Build pricing that lifts AOV without an app.

Footnotes

  1. Tversky, A., & Kahneman, D. (1974). “Judgment under Uncertainty: Heuristics and Biases.” Science, 185(4157), 1124-1131. Demonstrated that an arbitrary anchor shifts people’s subsequent numeric estimates toward it. https://www.science.org/doi/10.1126/science.185.4157.1124

  2. Shopify Dev, “variant” Liquid object - the compare_at_price field holds the higher original price a variant is compared against, which themes render as a strike-through beside the selling price. https://shopify.dev/docs/api/liquid/objects/variant

You might also be interested in

Add Trust Badges to Shopify Without Slowing Speed
Add Shopify trust badges that lift conversion without adding JavaScript - native theme approaches, the badges that actually work, and where to place them.
Sticky Add to Cart on Shopify PDPs (2026)
Sticky add to cart on Shopify keeps price, variant, and buy button visible as shoppers scroll. How to build it natively with no app.
How to A/B Test Shopify Product Pages
A/B test Shopify product pages without invalidating results. Tools that work with Shopify, sample-size guidance, and the tests worth running first.