How We Price Test on Shopify Without Breaking Checkout
Price is the biggest lever most Shopify brands never test. A small price change can move margin more than months of design work, yet most stores set prices once and guess from there.
The reason is simple: on Shopify, testing prices properly is hard. We recently ran a three-way price test for a UK DTC brand across its full range, sitewide, from the first page view to the final payment. This is how we did it, and what we learned.
Why price tests usually break
Out of the box, Shopify can't randomly split visitors in the same market between different prices. A product has one price per market, and checkout charges that price.
Most testing tools work around this by changing the price on the page with JavaScript. That looks fine on the product page, but it often falls apart further down the funnel:
- The cart drawer, search results or upsells still show the old price.
- Multibuy offers like "2 for £50" don't change with the test price.
- Checkout charges the real price, so the customer sees one number and pays another.
When the price shown doesn't match the price paid, you lose trust and you lose clean data. A test like that isn't measuring price. It's measuring confusion.
How We Built It: One Visitor, One Price
Our rule was simple. Whatever price a visitor sees first, they see everywhere and pay at checkout. We built it in three layers.
- The front end, with Convert.com. Convert splits visitors into a control and two price variants. Each visitor stays in their group on every page and every return visit, and our script updates every place a price appears: product pages, collections, the homepage, search, the cart drawer and multibuy badges.
- The checkout, with Convert's Shopify integration. Convert writes the visitor's prices onto their cart, and Shopify charges those prices at checkout. No discount codes, no crossed-out prices, no surprises.
- The multibuy offers, with a custom Shopify Function. The "2 for" deals were normal Shopify discounts, so they only knew one price. We replaced them with one small Shopify Function that reads the cart's price group and applies the right bundle price. Visitors outside the test keep exactly the deals they had before.
The result: for every product and every bundle, the price on the page, in the cart and at payment always match.

Keeping the test honest: who stays out
Some visitors have already seen a price before they reach the site. If an ad promised £36 and the page says £38, that's a broken promise, not a test. So three groups always see the normal prices:
- Visitors from ads that show a price. The ad already set their expectation, so we spot them by the campaign's tracking tag.
- Google Shopping and Performance Max clicks. Google's product feed showed them a price, so we spot them by Merchant Center and campaign tags.
- Search engine and social crawlers. The price Google crawls must match the feed, so we spot them by their browser signature.
Once a visitor is excluded, it's remembered. If they come back later through a normal link, they still see the normal prices.
One more thing we learned: some shoppers use ad blockers that also block testing tools. They simply see normal prices. That's the safe outcome, but it means the test sample is smaller than total traffic, so plan your test length around it.
How we checked it
A price test is only as good as its weakest page. Before and after launch we walked every group through the whole journey:
- Product pages, collections, homepage and search show the group's price.
- The cart drawer, bundle badges and upsells match.
- Checkout totals match, for single items and bundles.
- Excluded visitors see normal prices, and stay excluded on return.
- Visitors outside the test pay exactly what they paid before launch.
- Add to cart, checkout started and purchase goals all record in Convert.
After launch, we checked real orders too. Almost every order placed in a test group was charged that group's price, and we traced the few that weren't.
What we'd tell any Shopify brand
- Test the whole journey, not the product page. If checkout doesn't match, the test isn't real.
- Don't forget your bundles. Multibuy offers are where price tests quietly break.
- Keep out anyone who's already seen a price. Ads and Shopping feeds set expectations before the click.
- Check real orders, not just dashboards. Your order data tells you who was really in the test.
- Give it time. Price moves conversion rates by small amounts, so tests need weeks, not days.
