Writing

Running an offer test: does the discount earn what it gives away?

Compare 10% off against free shipping against nothing at all, applied at the cart by Shopify rather than in the browser. The setup, and the one metric that answers it.

12 September 2026 · 6 min read

An offer test gives each group a different offer — a percentage off, an amount off, free shipping, or nothing — and tells you which one made the most money. Not which converted best: which made the most money, because an offer that lifts conversion and gives away more than it earns is a loss that looks like a win on every other chart.

It is the cheapest of the two pricing tests to set up and the safest to run, because nothing on your page changes. There is no rewriting, no flicker risk, and no selector to break.

Offer tests are on the Growth plan and above, and in the 14-day trial.

How it actually works

The discount is applied by a Shopify Function at the cart, not by JavaScript in the shopper’s browser. Your group is written onto the cart, Shopify reads it, and the offer is applied server-side.

That matters for two reasons. It cannot be tampered with or blocked by an ad blocker, and it works on every Shopify plan, Basic included — an offer is a discount by definition, and Shopify does not restrict discounts by plan.

One consequence worth knowing: there is nothing to preview. The preview tab will tell you so rather than pretending. A preview deliberately never writes your group onto a cart — that is what keeps your own browsing out of your results. Run Check setup on the Preview tab to confirm the store side is ready, then start the test and look at a real order.

Setting one up

Approve the pricing permissions on Settings, Store connection. We create one automatic discount for the test and remove it when the test ends.

Then, per group:

No offer
A real arm, not an unfinished one. Usually the control — though it does not have to be: comparing 10% off against free shipping with nobody getting nothing is a perfectly good test.
Percentage off
Between 0 and 100. Works in every currency, unchanged.
Amount off
Set in your store currency, and converted into each shopper's currency at Shopify's rate — the way Shopify converts its own discounts. So is a minimum order value.
Free shipping
Every delivery option, not just the cheapest.

Each offer can carry a minimum order value — below it the offer does not apply, which is how “spend £50 to save” is expressed.

Subscriptions. Offers apply to subscription orders as well. By default a subscriber gets the offer on their first order only; you can choose to keep it on every renewal instead.

What the shopper reads at checkout

You choose the wording. Keep it plain: a shopper settling up should not read the name of a testing tool. Left empty it says “Discount”.

The wording is deliberately not part of what makes two groups different. Two arms both giving 10% off under different names are the same offer, and letting them count as two would split your traffic between identical treatments and report the noise as a result. If the wording is what you want to test, that is a content test on the copy.

The one thing that will bite you

Your existing automatic discounts. Shopify applies one automatic discount unless the combination is explicitly allowed, and the rules work both ways — ours already allows yours, but yours has to allow ours.

So before starting: open Discounts in Shopify, open each active automatic discount, and under Combinations tick the discount types this test uses. If you would rather not, pause the other discount for the length of the test. Otherwise Shopify picks, and it will not pick based on what you were trying to measure.

Reading the result

Profit per visitor is the primary metric, falling back to revenue per visitor where product costs are not set. An offer will almost always lift conversion — that is arithmetic, not a finding. The question the test answers is whether it lifted revenue by more than it gave away, and only a margin-aware number can say.

Average discount per order is promoted onto the front page for this kind of test, and deliberately shown with no direction — not green for down, not green for up. The group that took the discount it was offered is not losing for having taken it, and colouring that either way would be the chart asserting a goal nobody set.

Watch abandoned checkout rate too. An offer that appears only at the cart changes the shape of the funnel rather than the top of it.

When it wins

Create the winning offer as a normal automatic discount in Shopify, then end the test. Ours is removed when the test ends, so making it permanent is a deliberate step rather than something that happens by forgetting — which is the behaviour you want from anything that gives money away.

Keep reading

All writing