Automatic discounts on Shopify apply at checkout without the shopper entering a code — the moment the cart meets your conditions, the price drops. They’re the fastest way to run a promotion, but they have real limits once your offers get interesting. This guide shows how to create them, where they fall short, and when a Shopify Function or offer app is the safer choice.
How to create an automatic discount
Every Shopify plan includes automatic discounts under Discounts. Here’s the native setup.
- In your admin, go to Discounts → Create discount.
- Choose the type: Amount off products, Amount off order, or Buy X get Y.
- Set the value — a percentage or a fixed amount (or Free for a Buy-X-Get-Y gift).
- Select Automatic discount (not a discount code) so it applies with no action from the shopper.
- Add conditions — minimum purchase amount or minimum quantity — and scope to the right products or collections.
- Set the active dates and Save. The discount now applies automatically at checkout for any qualifying cart.
That’s enough for a straightforward “10% off orders over $50” or a simple BOGO. The problems start when you want more than one thing at once.
Where native automatic discounts fall short
- One at a time. By default Shopify applies a single automatic order or product discount per cart and picks the best one. Discount combinations let you mix some types, but the rules are narrow.
- No product-page merchandising. The discount fires at checkout, but nothing on the product page tells the shopper “buy 3 and save 15%.” Offers that aren’t shown don’t change behaviour — see how to set up quantity breaks for why on-page display matters.
- Limited logic. Tiered volume pricing, mix-and-match bundles, and conditional gifts are awkward or impossible to express as plain automatic discounts.
- Blunt gift handling. A native Buy-X-Get-Y gift works, but it won’t auto-add the gift or show progress toward a threshold — see free gift with purchase.
When a Shopify Function is safer
A Shopify Function is server-side discount logic that runs at checkout. It re-validates the cart at the moment of payment, which matters for two reasons: it can express richer logic than native discounts, and it enforces the offer so it can’t be gamed.
This is the checkout-safe distinction. Many cheap offer apps apply discounts in storefront JavaScript. It looks right on the product page, but the cart is a separate, dynamic object — if a shopper removes a qualifying item, a JS-only app can leave a bundle discount or free gift applied to a cart that no longer qualifies. That’s a direct margin leak. A Function re-checks the cart server-side, so what the shopper sees is exactly what they’re charged, however they edit the cart.
Native discount vs offer app: how to choose
- Use a native automatic discount for a single, simple promotion — a flat percentage off, a minimum-spend deal, or a basic BOGO you don’t need to display on the product page.
- Use an offer app built on a Function when you want tiered volume pricing, bundles, BOGO, or a free gift shown on the product page and enforced at checkout. Our free Profit Flow AOV Bundle does exactly this — all four offer types, no feature caps, every one enforced by a Shopify Function. For a fuller breakdown of the trade-offs, see Shopify Functions vs discount apps.
You don’t have to choose one forever. Many stores run a native discount for a headline sale and an app for their always-on AOV offers.
Test before you trust
Whatever route you take, place a real test order: add items to qualify, then edit the cart and confirm the discount behaves — applying only when it should, and disappearing when it shouldn’t. That single test catches most margin leaks. For the wider toolkit, see our roundup of the best Shopify apps to increase AOV.
Want discounts that are always shown and always enforced? Install the free Profit Flow AOV Bundle — quantity breaks, bundles, BOGO and a checkout-safe free gift, every offer enforced by a Shopify Function. Not sure where your margin is leaking? Start with a free profit audit.