VALOTRIX Cart Rewards
How it works Pricing Blog Docs
Install on Shopify

Automatic Discounts vs Discount Codes on Shopify

July 1, 2026 · 5 min read

Shopify gives you two ways to apply a discount: automatic, where it shows up the moment a cart qualifies, and code-based, where the shopper has to type something in at checkout. They look similar in the admin - same setup screen, same discount types - but they behave very differently in a live cart. Here's the actual difference, when each fits, and what happens when you try to combine them.

The difference

  • Automatic discount - applies the moment the cart or checkout meets the conditions you set. No field, no action from the shopper.
  • Discount code - applies if the shopper enters the exact code at checkout (or it arrives via a discount URL, which most shoppers never use directly).

Both live under Shopify's Discounts section, both support the same discount types - percentage off, fixed amount, free shipping, Buy X Get Y - and both get evaluated the same way at checkout. The structural difference is whether a shopper has to take an action to trigger it.

Why typed codes leak

A discount code field is a small, boring thing to add to checkout, until it isn't. In practice, it's a place you lose shoppers:

  • They go hunting. The moment a "have a discount code?" field appears, some shoppers open a new tab and search your brand name plus "discount code" or "coupon." If a stale or third-party code turns up and it happens to work, or works better than yours, that's a leak you don't control.
  • They mistype it. Case sensitivity, an extra space, an expired code bookmarked from an old email - the result is the same generic "this code isn't valid" message, with no context for why.
  • They abandon rather than ask. Some shoppers won't contact support over a broken code. They just leave the cart.
  • They generate support tickets. For shoppers who do reach out, "the code didn't work" is one of the most common promo-related tickets, and it's rarely obvious from your side without checking eligibility, usage limits, and expiry all at once.

None of this happens with an automatic discount. There's no field to abandon, no code to mistype, and nothing to search for, because the offer was never gated behind a code.

When a code still makes sense

Codes aren't the wrong tool, they're a different tool. They fit when you want to control who gets the discount and how they hear about it:

  • Influencer or affiliate codes, where attribution matters.
  • One-off goodwill discounts issued by support.
  • Email or invite-list offers, where the code itself is the gate.
  • Time-limited promos you want to hand out selectively rather than expose to every visitor.

If the value of the offer depends on who has the code, use a code. If the value of the offer depends on the cart qualifying, use automatic.

Why automatic is the better default for GWP, BOGO, and threshold offers

Gift-with-purchase, BOGO, and "spend $X get Y" are all offers where the trigger is already something true about the cart - a product is in it, the subtotal crossed a line, the shopper carries a tag. There's no reason to also require a code, because the qualifying condition is already doing the gatekeeping. Layering a code on top just adds a chance for the offer to fail for a shopper who already qualifies.

This is also where automatic discounts pair well with on-site messaging - a progress bar or a cart note can say "you're $12 away," and the moment the shopper crosses that line, the discount (and, with the right setup, the gift itself) is simply there. A code can't do that cleanly; the messaging and the mechanism would be two disconnected systems. See Rewards and discounts for how the automatic side is structured, and Threshold free gift for the recipe.

How stacking and combining behaves

Shopify limits how discounts combine, and it's worth checking before assuming two offers will stack. Each discount belongs to a combination class - product, order, or shipping - and discounts combine with each other when their combination settings explicitly allow it, not by default. This applies the same way to automatic and code-based discounts; being automatic doesn't make a discount stack with everything else on its own.

Practically: if you're running an automatic gift-with-purchase and also want to allow a sitewide code, check the combination settings on both discounts rather than assuming they'll play together. If you want the gift-with-purchase to apply regardless of what else is active, set that once and verify it with a real test cart, or a cart simulator if your app has one, so you're not guessing at checkout. See Simulator troubleshooting.

The short version

Use a code when the discount's value comes from controlling who has it. Use automatic for anything where the cart itself is the qualifying condition - which covers most gift-with-purchase, BOGO, and spend-threshold offers. Fewer fields, fewer typos, fewer "the code didn't work" tickets.

Keep reading

  • Shopify Buy X Get Y: how it works and its limits - native BXGY, and where it can run as automatic or code-based.
  • How to set up gift with purchase on Shopify - the different ways to run a free-gift offer.

Ready to go code-free on your next promotion? Install Valotrix Cart Rewards and start on the free plan.

Valotrix
Cart rewards, done right. Built on Shopify Functions by a Shopify engineer who runs stores every day.

Product

  • How it works
  • Pricing
  • Blog
  • Docs
  • Shopify App Store

Legal

  • Privacy Policy
  • Terms of Service
  • valentin@valotrix.com
© 2026 Valotrix Studio · Built by a Shopify engineer who uses Shopify daily Romania