A discount that needs a code leaks to coupon sites, gets forgotten at checkout, blocks the customer from using their own, and puts an empty "discount code" field in front of every shopper telling them a better price exists somewhere. An automatic discount applies because the condition is met. For a volume or bundle offer — where the condition is simply that the cart qualifies — there is no reason to involve a code at all.
Four costs, and none of them are obvious
They leak. A code created for a newsletter is on a coupon aggregator within days, used by people who arrived intending to pay full price. You did not run a promotion for them and you paid for one anyway.
They get forgotten. A shopper who knows a discount exists but cannot find the code either opens another tab to look for it — where they may not come back — or abandons. Both outcomes are caused by the mechanism rather than the offer.
They block stacking. Shopify allows one discount code per order. If your volume discount is a code, a customer holding a welcome code has to choose between them, at the checkout, having already decided to buy.
The empty field is an advert. A visible code box tells every shopper that someone somewhere is paying less. Some of them go and find out.
An automatic discount removes all four. The price changes in the cart because the cart qualifies, and the code field stays free for the customer's own code.
The stacking point is the one to weigh
Of the four, this is the one that is quietly costing the most.
A customer with a welcome code, arriving at a product with a quantity break, is being asked to work out which is worth more — at the point of payment, with a form in front of them. Some will do the maths. Some will pick the smaller saving and feel mildly cheated. Some will abandon and come back never.
With an automatic volume discount, both apply: the tier price is already in the cart and their code goes in the box. The customer gets a better deal than either mechanism alone, and you get the order.
Worth stating that you can control this. Shopify lets you set whether automatic and code discounts combine, so "both apply" is a decision rather than an accident. Make it deliberately and model the stacked total before you launch.
When a code is the right tool
Codes are not obsolete — they are a different instrument, and they earn their place where who gets the discount matters as much as what triggers it.
- Attribution. An influencer or partner code tells you where a sale came from. That is the main legitimate use and it is a good one.
- Individual gestures. A one-off apology or goodwill discount for a specific customer.
- Genuinely closed groups — a private sale, a list of accounts — where you want a shared secret rather than a rule.
- Offline and print. A card in a parcel, a code on a flyer.
The test: if the discount depends on what is in the cart, it should be automatic. If it depends on who the shopper is or where they came from, a code is doing real work.
What replaces the code field for communication
The reasonable objection to automatic discounts: a customer may not notice they got one, and an unnoticed discount is money given away silently.
So the offer has to be visible where the code field is not doing that job:
- On the product page, above the quantity selector, where the decision is made.
- In the cart, as a line naming the discount — "Volume discount −£5.40" — rather than a total that is simply lower than expected.
- As a progress prompt where a threshold is close: "Add 1 more to save 15%" converts better than any static table.
Done properly the customer is better informed than with a code, because the saving is shown at the moment it applies rather than as something to remember.
Hiding the field entirely
Some stores remove the discount code box from checkout to stop the "I should find a code" reflex. Worth considering and not automatic.
It works if you genuinely never issue codes. If you run any partner, influencer or apology codes, removing the field creates a support problem that costs more than the reflex did — a customer holding a code you gave them and nowhere to type it.
The middle option most stores land on: keep the field, make the automatic discount prominent enough that the shopper sees they already have one, and accept that a few will go looking anyway.
What to check in your app
If you are running bundles or volume discounts through an app, confirm which mechanism it uses, because listings are vague about it.
The test: build a qualifying cart and go to checkout without typing anything. If the discount is not already applied, it is a code — whatever the listing says about being automatic.
Then check two more:
- Does it combine with a customer code, and is that configurable?
- Is the discount line-item or cart-level? Line-item shows the reduced unit price where the shopper is comparing tiers; cart-level subtracts a total at the bottom, after the decision. Line-item also refunds cleanly on a partial return.
The reporting difference
One practical loss worth naming, since this article is otherwise one-sided.
Codes are easy to report on. Shopify shows orders per code, so "the newsletter offer did £4,200" is a question you can answer in the admin without thinking about it.
Automatic discounts are harder to attribute. The discount applied because a cart qualified, and nothing records which campaign or channel put that cart together. You can see total discount given; you cannot slice it by where the customer came from.
Two ways round it, neither perfect:
- Compare periods. Margin per order with the offer running against a comparable period without it. Blunt, and it is the measure that actually matters anyway — revenue and AOV both rise regardless.
- Run it on one collection at a time. A collection-level test gives you a comparison group without needing per-order attribution.
If a campaign genuinely needs attribution — a paid partnership, a channel test — that is exactly the case where a code is the right instrument. Use one there and keep the automatic discount for the standing offer.
Setting it up
- Make cart-condition discounts automatic. Volume, bundle, mix-and-match, threshold.
- Keep codes for identity and attribution. Partners, individuals, closed groups, print.
- Decide the stacking rule deliberately and model the worst-case cart.
- Show the offer on the product page and in the cart, named.
- Add a progress prompt where a threshold is within reach.
With Bundle, every offer type applies automatically at checkout without a code, so the customer's own code stays usable.
Where to go next
For tier design and where the table belongs on the page, see the volume discount guide. If you are choosing an app, the code test is the first of several in how to compare bundle apps.