Marketing Guide

Shopify Discounts: Mechanisms, Setup & ROI Math

End-to-end Shopify discounts guide — seven mechanisms, native vs apps vs Functions, B2B price lists, stacking, ROI math, playbooks, edge cases, benchmarks, and compliance.

April 26, 2026·Updated July 2026·22 min read·
Listen to a short brief of this article
Hands-free while you multitask

Key Insights in 60 Seconds

What Shopify natively supports, when apps and Functions earn their keep, and how to keep margin intact under promo pressure.

Native discounts cover most needs — percentage, fixed-amount, BOGO, free shipping, and buy-X-get-Y rules are built in.
Stacking rules matter — discount functions run concurrently; combination settings determine which discounts combine.
Functions replaced Scripts — public Function apps work across plans; custom Function apps require Plus.
Discount apps add segmentation — tools like Klaviyo or Shopify Email can send personalized codes to VIPs.
Margin math is the real test — 20% off at 35% margin needs 133% more orders to break even.
Over-discounting trains customers — frequent sales lower perceived value and hurt long-term profitability.
Free shipping is the safest discount — it lifts AOV without training customers to wait for percentage sales.

What You'll Learn

1What discount types Shopify offers natively
2When to use automatic discounts vs codes
3How to stack discounts without destroying margin
4Public vs custom Function app rules
5Email-powered personalized discount campaigns
6Margin math and common discount mistakes

What Counts as a Shopify Discount

Key takeaway

On Shopify, a discount is any rule that reduces what a customer pays at checkout — either on a product, the cart total, or shipping. The Shopify Admin treats discounts as a first-class object: each one has a type, eligibility, schedule, usage limit, and combinability flags. Public App Store apps containing Functions can extend the type on any plan; only Plus stores can use custom apps containing Shopify Function APIs.

That uniformity matters because it means you don't need an app to do most of what merchants think requires one. Native Shopify covers automatic discounts, codes, BOGO, free shipping, and, since April 2, 2026, B2B catalogs on Basic, Grow, Advanced, and Plus. Public App Store apps that contain Discount Functions can extend any plan; building your own custom app with Function APIs requires Plus.

One product, six different P&L outcomes
A $100 SKU at 40% margin can be discounted via: (1) a 15% automatic site-wide promo, (2) a WELCOME10 code, (3) a BOGO that gives a free $20 add-on, (4) a free-shipping threshold at $80, (5) a B2B catalog price at $85 net, or (6) a Function rule giving repeat customers $5 off. Same product, six different P&L outcomes — and gift cards add a seventh path that behaves as cash, not a discount.
You can create discounts that are either applied automatically, or applied with discount codes.
Shopify Developers — About discounts — Shopify.dev · View source (shopify.dev)

The Seven Discount Mechanisms

Key takeaway

These seven are what Shopify ships natively. Read them as a menu: pick the one whose strengths match the goal you actually have, not the one that's most fashionable that quarter.

Automatic discounts
No code required
Apply automatically at checkout when conditions are met (cart total, product set, customer tag). Best for site-wide sales, Black Friday, or always-on customer-tier discounts. Note: app- and Function-based automatic discounts are capped at 25 active per shop (raised from 5 in November 2024).
Discount codes
Acquisition & influencer
Manually entered at checkout. Best for influencer codes, email pop-ups, retargeting, and abandoned-cart recovery. Cheap to issue, easy to track per-channel — but the most diluted to your brand.
Buy X get Y (BOGO)
AOV uplift
Buy two get one free, buy a shirt get socks free, etc. Native in Shopify with both code-based and automatic variants. Strongest mechanic for raising AOV without straight discounting the lead product.
Volume / quantity breaks
Bulk & B2B-ready
Tiered pricing per quantity (e.g. 10% off at 5 units, 20% off at 10). Native via quantity rules (B2B) or via discount apps for B2C. Margin-friendly because the discount unlocks at scale, not at first unit.
Free shipping
Highest lift per margin point
Threshold-based or unconditional. Consistently the cheapest way to lift conversion in DTC because shipping is the most cited cause of cart abandonment. Configure once, A/B-test the threshold.
B2B price lists & catalogs
Basic, Grow, Advanced & Plus
Since April 2, 2026, catalogs with tailored pricing, volume discounts, and quantity rules are included on Basic, Grow, Advanced, and Plus — up to three active catalogs across all your B2B markets, or unlimited catalogs with direct company/location assignment on Plus.
Gift cards
Cash equivalent, deferred revenue
Native on every Shopify plan. Sold as a product or issued manually; redeemed at checkout like cash. Useful for refunds-without-cash, loyalty rewards, and influencer seeding. Note: gift cards are deferred revenue, not a discount cost — track them separately in the P&L.

Mechanism vs Goal Map

No mechanism wins on every axis. The radar below scores each one against six common merchant goals — use it as a fast filter before you pick the tool.

Native vs Apps vs Shopify Functions

Key takeaway

The decision tree below is the one I run with every store: start native, add a public Function app only for a specific gap, and consider a custom Function app only on Plus when a vendor app is too rigid or expensive at scale. Inverting that order is how stores pay for behaviour Shopify already includes.

Use Case → Right Tool
Use caseNative ShopifyAppFunctions
Site-wide % off (BFCM)Automatic discount
Influencer / email codesDiscount codes
Tiered cart total (spend $X get Y%)Automatic discountCustom logic if combined
BOGO / Buy X get YBuy X get Y discount
Free shipping over thresholdShipping discount
Wholesale price lists by B2B marketB2B catalogs (Basic, Grow, Advanced, Plus)Optional for extra workflows
Competitor-based dynamic pricingPrisync, Dealavo
Custom stacking rules across productsCombinable settings (limited)Promo appsDiscount Functions
Geo or market-based pricingMarkets pricingRegios, Geo appsDiscount Functions
Hide discounted price from select customersLimitedDiscount Functions
Gift card issuance & redemptionGift cards (all plans)Rise.ai for advanced gifting
Loyalty points & tier discountsSmile, LoyaltyLion, YotpoFunctions for redemption rules
Abandoned-cart recovery codeDiscount codes (manual)Klaviyo, Shopify Email automations

Editorial mapping based on current Shopify capabilities. Confirm app fit against your specific stack before installing.

Native vs Apps vs Functions — Choose by Constraint
Stay native
  • Goal fits one of the seven native mechanisms
  • Under 25 app/Function-based automatic discounts
  • No per-customer dynamic pricing
  • No bespoke stacking rules required
  • B2B fits within three active catalogs across all markets
Reach for apps or Functions
  • More than three active B2B market catalogs
  • Competitor-based or AI repricing
  • Geo-pricing without using Markets
  • Custom stacking native settings can't express
  • Direct company/location catalog assignment (Plus)
Editorial decision frame; revisit annually as Shopify ships new native discount types.

Which Path Fits Your Store? (Quiz)

Five questions. The result tells you whether to stay native, add one public app, or — on Plus — invest in a custom Functions app. Be honest about engineering capacity; getting that wrong is the most common reason a discount programme stalls.

Discount Path PickerFind the lightest setup that solves your goal mix.
Question 1 of 5
What's the primary goal of the next promo you're planning?

The Discount Math: Margin Before Mechanic

Key takeaway

Most discount programmes fail at this step — not at setup, not at execution. The maths are not glamorous, but they are decisive: a discount of d off a product whose contribution margin is m requires extra sales of d / (m − d) just to keep the same gross profit. So a 20% promo at 35% margin needs 133% more orders to break even, and a 30% promo at 35% margin needs 600% more orders. Below 30% margin, anything heavier than ~10% is structurally a loss-leader.

Break-Even Uplift by Discount %

The single rule that prevents most discount disasters
Cap the discount at margin minus 5–10 percentage points. If your contribution margin is 35%, your maximum survivable discount is ~25–30%. Any deeper and you're paying customers to take product. Make this floor a hard config in your promo planning sheet, not a vibe.

Discount ROI Calculator

Plug in your AOV, baseline orders, contribution margin, the discount you're considering, and the uplift you expect. The calculator returns net profit before and after, the absolute and percentage profit delta, and — most importantly — the minimum uplift required to keep last month's profit. If your honest forecast is below that number, the promo loses money before any creative is shipped.

Discount ROI Calculator

Model gross profit before, during, and after a promotion. The break-even number tells you the minimum uplift you need just to keep last month's profit.

Baseline revenue
$40,000
Profit $16,000
Promo revenue
$47,600
Profit $14,000
Profit delta
$-2,000
-12.5% vs baseline
Break-even uplift
60%
Minimum extra orders just to match baseline profit
Below break-even — needs more uplift

* Model assumes COGS scales linearly with units and ignores fixed costs, ad spend, and refunds. Use it for directional decisions, not P&L.

Conversion Lift vs Margin Hit by Promo Type

Different mechanics buy conversion at very different prices. The two best mechanics on lift-per-margin-point are almost always free shipping and loyalty perks; sitewide percent-off and first-order codes are the most expensive levers in the toolkit.

Step-by-Step Setup in Shopify Admin

Key takeaway

The Shopify Admin makes creating a discount almost suspiciously easy: Discounts → Create discount → pick type → set rules → save. Which is exactly why so many merchants ship promos that are technically fine and economically wrong. The seven steps below put guardrails around that flow.

1
Define the single goal
Acquisition, AOV uplift, retention, clearance, or B2B segmentation. One goal per promo. Mixing two is the #1 reason promos look 'meh' in reporting — you can't tell which lever moved.
2
Check the margin floor
Compute (margin − discount). If it goes negative, you're paying customers to take product. Cap the discount at margin minus your minimum acceptable contribution per order — usually 5–10 percentage points.
3
Pick the mechanism
Match the goal to one mechanic from the table above. Acquisition → code; AOV → BOGO/volume; retention → automatic with customer tag; B2B → catalog price list. Resist combining mechanics until iteration #2.
4
Build it in Shopify Admin
Discounts → Create discount → choose type. For automatic discounts, pick eligibility (all customers, segment, or tag). Set start/end dates explicitly — open-ended promos almost always run too long.
5
Configure combinations carefully
Decide whether the new discount can stack with order, product, or shipping discounts. The default is usually 'no' — open it only when you've modelled the worst-case stacked margin.
6
QA on a draft order
Create a draft order with the conditions, apply the discount, and verify the final price matches your model. Bad discount logic is invisible in the admin and very visible on a $0 order in reporting.
7
Measure margin, not just revenue
Track gross profit, refund rate, and AOV by promo (not just total revenue). 'Revenue uplift' on a discount is meaningless without the margin number — that's how merchants 'grow' themselves bankrupt.

Video: Automatic Discounts in Admin

A short walkthrough from Shopify Help Center on building an automatic discount end-to-end in the admin — useful as a reference if you're configuring your first one.

How to Create Automatic Discounts — Shopify Help CenterOfficial Shopify Academy walkthrough of building an automatic discount in the admin.

Use-Case Playbooks

Key takeaway

Most stores need fewer playbooks than they think — and most of those playbooks are variations on six recurring patterns. Each one below pairs a goal with a mechanic, an opening cap, and the channel/app stack that ships it without bloat.

1
Welcome / first-order popup (10–15% code)
Trigger an email-capture popup after 10–20 seconds or 30% scroll. Issue a single-use code (e.g. WELCOME10) with 14-day expiry, valid on first order only, excluding sale items. Apps: Klaviyo, Privy, or native Shopify Forms + Shopify Email. Cap at 15% — anything deeper trains discount-hunting from day one.
2
Abandoned-cart recovery (small recovery code)
Send a 3-email sequence: 1h (no discount), 24h (free shipping), 72h (5–10% code, single-use). Use Shopify Email automations or Klaviyo. Never lead with the discount — recovery rate is comparable, but you don't burn margin on customers who would have returned anyway.
3
Loyalty / VIP tier discounts
Use customer tags + automatic discount eligible to a segment (Bronze/Silver/Gold). For points-based loyalty (earn → redeem), install Smile, LoyaltyLion, or Yotpo Loyalty — all integrate with the native Shopify discount API. Keep tier perks small (5–10%) but compounding (free shipping + early access).
4
Annual promo calendar (BFCM, Boxing, Mother's Day)
Plan ≤6 sitewide promo windows per year: BFCM (5 days), Boxing/Year-end (7 days), Valentine's, Mother's/Father's Day, Back-to-School, brand birthday. Each with hard end date, fixed % cap, and category exclusions defined 30 days in advance. Predictable beats deep — fatigue kills margin faster than depth.
5
Influencer / affiliate codes (per-creator tracking)
Issue unique codes (CREATOR10) per partner. Use Shopify Collabs (free, native) or third-party affiliate apps (Refersion, UpPromote) for per-creator commission tracking. Cap at 10–15% to leave room for the affiliate payout without going under your margin floor.
6
Win-back for lapsed customers (90+ days)
Identify customers with no order in 90/180 days via Shopify Segments. Send a one-time, time-limited code (15% / 7 days). Track repeat-purchase rate vs control — win-back economics often beat new-customer acquisition by 3–5×.

Tooling notes for the playbooks above: the loyalty pattern usually ships with Smile or LoyaltyLion — for the full points-economics breakdown, see our Shopify loyalty program guide; abandoned-cart and welcome flows run cleanly on Klaviyo or native Shopify Email; influencer codes are simplest via Shopify Collabs (free) before reaching for paid affiliate platforms. For the full setup, see our Klaviyo on Shopify guide.

The 'one playbook at a time' rule
Don't roll out three playbooks the same quarter — you won't be able to attribute lift to any single mechanic. Ship one, measure for 30–60 days, lock its config, then add the next.

Combining & Stacking Discounts

Key takeaway

Shopify groups discounts into three categories — Order, Product, and Shipping — and a customer can combine at most one of each, provided every involved discount is explicitly marked as combinable with the others (official rules). Combinability is opt-in, not on by default. That is a feature: most accidental 35–40% discounts come from someone toggling a promo as combinable without checking what else is live.

1
Choose one per category
Shopify groups discounts as Order, Product, and Shipping. Customers can combine at most one of each — provided every applied discount is marked as combinable with the relevant categories.
2
Default to non-combinable
Combinability is opt-in. Toggle 'Combines with other discounts' only after you've calculated the worst case (lowest-margin product × highest stacked discount).
3
Cap with minimum prices
Use price floors per product through a public Function app, or on Plus through a custom Function app, so no combination drops below your hard margin floor. Easier than reasoning about every possible stacked combo.
4
Test the stack live
Build a test cart with every active promo applied. If the cart total is uncomfortable, the rules are wrong — not the cart.
The 'worst basket' test
Before publishing a combinable discount, build the worst possible cart: lowest-margin product, highest stacked discount, free shipping, smallest qualifying quantity. If that basket's gross margin makes you wince, the combinability flag is wrong — not the promo.

Discounts for B2B & Wholesale

Key takeaway

Since April 2, 2026, native B2B is no longer a Plus exclusive. Basic, Grow, Advanced, and Plus all include company profiles and catalogs with tailored pricing, volume discounts, quantity rules, net payment terms, ACH payments (United States only), and vaulted credit cards. A catalog is assigned through a B2B market, and that assignment is what keeps wholesale pricing off your DTC product pages without a public code.

1
Catalog → markets → companies
Since April 2, 2026, Basic, Grow, Advanced, and Plus stores can create company profiles and B2B catalogs. Basic/Grow/Advanced assign up to three active catalogs across all B2B markets; Plus adds unlimited catalogs and direct assignment to a specific company or location.
2
Quantity rules per SKU
Use quantity rules (min, max, increment) per product or variant to enforce case packs and bulk minimums. Combine with tiered prices for true volume discounting.
3
Volume pricing tiers
Each catalog supports volume pricing — e.g. 5% off at 24 units, 10% at 100. Cleanest way to do B2B discounts without public codes leaking to DTC customers.
4
Net payment terms (optional)
Pair catalog pricing with net payment terms, vaulted credit cards, or ACH payments (United States only) on Basic, Grow, Advanced, and Plus. Plus is required for deposit requirements, partial payments, and payment requests per fulfillment.

Shopify Plus becomes the relevant upgrade when you need unlimited catalogs, direct catalog assignment to a specific company or location, deposit requirements, partial payments, or payment requests per fulfillment. Contextual checkout and storefront with Shopify Markets require Advanced or Plus. See our B2B wholesale guide for the complete plan boundary.

Advanced: Shopify Functions & Apps

Key takeaway

Shopify Scripts were the legacy Plus-only tool; editing and publishing stopped on April 15, 2026, and every published Script was deactivated on June 30, 2026. Shopify Functions are the replacement. Stores on any plan can install public App Store apps containing Functions, while only Plus stores can use custom apps containing Shopify Function APIs. Discount functions run concurrently and have no knowledge of one another; their outputs combine according to the discount node's combination rules.

Stores on any plan can use public apps that are distributed through the Shopify App Store and contain functions. Only stores on a Shopify Plus plan can use custom apps that contain Shopify Function APIs.
Shopify Developers — About Shopify Functions — Shopify.dev · View source (shopify.dev)
Discount Apps & Native Tools — Quick Reference
ToolBest forPriceNotes
Shopify Discounts (native)Automatic, codes, BOGO, free shipping, quantity rulesIncludedApp/Function-based automatic discounts capped at 25 per shop
Shopify B2B (native)Catalogs, tailored pricing, quantity rules, volume pricingIncluded on Basic, Grow, Advanced, PlusUp to 3 active market catalogs below Plus; Plus adds unlimited and direct assignment
Shopify Functions (Discounts API)Public Function apps; custom discount apps on PlusApp or engineering costScripts replacement; custom Function apps require Plus
Bold Custom PricingCustomer-tag pricing and extra wholesale workflowsFrom $29/moOptional where the native B2B workflow is not enough
Wholesale GorillaWholesale ordering + tiered pricing workflowsFrom $34.95/moOptional workflow layer alongside native B2B
Regios DiscountsCustomer-tag and geo-based discountsFree–$24.99/moLean budget option for international DTC

Pricing as listed on the public Shopify App Store at time of writing. Always verify the current tier on the live listing.

Edge Cases & Operations

Key takeaway

These are the questions that surface in week three of running real promos at scale — none of them are dealbreakers, but each one creates an avoidable fire when discovered live. Configure them upfront and they vanish from your roadmap.

Discount + tax interaction
Pre-tax by default
Shopify applies discounts to the order subtotal before tax — so a 20% discount also reduces the tax owed. EU/UK merchants on inclusive-tax pricing should test how the discount displays on storefront vs invoice; mismatches confuse customers and accountants.
Shopify Markets & multi-currency
Per-market pricing
Markets supports per-country price adjustments and currency rounding, but discount % stays universal — a 20% code is 20% in every market. For market-specific promo amounts, use a public Function app, or on Plus a custom Function app, to read the buyer's market and adjust; otherwise run separate codes per market.
POS discounts
In-person & omnichannel
Shopify POS supports both code-based and manual line-item discounts at the till. Online discount codes apply at POS by default; segment-only automatic discounts respect customer profiles when the customer is added to the cart. Limit cashier-applied manual discounts via POS staff permissions.
Refunds on discounted orders
Refund the paid price
Shopify auto-refunds the discounted amount, not the full sticker — but partial returns require manual proration. For BOGO returns, the 'free' item must be returned too or its value deducted. Document a clear return policy for promo orders or watch refund margin spiral.
Hitting the 25 app/Function discount cap
Consolidate or restructure
Shopify caps active app- and Function-based automatic discounts at 25 per shop (raised from 5 in November 2024). Native admin-created automatic discounts don't share this limit. When you hit it: (1) retire expired or zero-uplift promos, (2) consolidate narrow rules into one segment-targeted discount, or (3) ask the public app vendor — or your Plus custom-app team — to merge logic into fewer Functions.
Bulk / unique-code generation
Per-recipient codes
Generate unique codes in bulk via Shopify Admin (CSV import) or apps like Dyno — a store's cumulative ceiling is 20,000,000 unique discount codes. Useful for influencer drops, gift-card alternatives, or anti-leak campaigns where you want to revoke individual codes if they leak to coupon sites.

For brick-and-mortar and omnichannel merchants, behaviour at the till is documented in Shopify POS; for refund mechanics on discounted orders, the safest test is a draft order rehearsal before the campaign goes live.

Industry Benchmarks: What Looks "Normal"

Discount norms vary widely by vertical — what looks aggressive in electronics is restrained in apparel. The table below is an editorial view of typical and peak discount depths observed on Shopify stores per category, useful as a sanity check against your own promo plan.

Typical Discount Depth by Vertical
VerticalTypical year-roundPeak eventNote
Apparel & fashion15–25%30–40% (BFCM, end-of-season)Highest discount-cadence vertical; manage with hard end dates
Beauty & cosmetics10–20%25–30% (BFCM, holiday)Free shipping outperforms % off in lift-per-margin
Consumer electronics5–10%15–20% (BFCM, back-to-school)Margin floors tight; bundle discounts beat % off
Food & CPG (subscription)20–40% first order50% trial onlyFirst-order deep, LTV-positive only with auto-ship
Home & furniture10–20%25–30% (Memorial, Labor, Boxing)Free shipping is the killer mechanic given freight costs
Health & supplements10–15%20% (BFCM, New Year)Subscribe-and-save (10–15%) beats one-off codes
B2B wholesaleTiered: 5 / 10 / 15%Quote-based per accountVolume tiers + Net 30 terms beat % off discounts

Editorial benchmarks based on patterns across Shopify merchants — not official Shopify data. Use as a sanity check, not a target.

Compliance, Trust & Brand

Key takeaway

Two compliance regimes apply to almost every Shopify merchant running discounts. The EU's Price Indication Directive (Omnibus) requires that any reduction display the lowest price applied in the prior 30 days as the reference — fines vary by member state but are material. In the US, supplier MAP (Minimum Advertised Price) agreements forbid advertising below an agreed floor; violating MAP usually loses you the brand, not a fine. Both are easy to respect with discipline, and both need to be configured into your promo planning sheet, not just remembered.

The trust ledger
Track share of revenue sold at discount as a quarterly KPI. When it crosses ~30%, the discount is effectively the price — you're not running promos any more, you've just relabelled your sticker. The fix isn't deeper promos; it's repricing or a clearance event followed by a discount fast.

KPIs to Track Each Promo

Key takeaway

The default Shopify Analytics "sales by discount" report is a starting point, not a verdict. Build a single sheet (or a Lightspeed/BI dashboard) that joins net revenue, discount cost, refunds, and gross profit per campaign. The six KPIs below are the minimum viable set for telling a winning promo from a vanity-metric one.

Promo KPIs — What to Watch
KPIWhy it mattersTarget
Net revenue per promoRevenue after discount cost and refunds — what the bank seesVs same-period baseline
Gross margin %The only number that tells you if the promo paid for itself≥ baseline margin − 5pp
Discount cost / revenueCost of the promo expressed as % of net revenueUnder 12% for healthy DTC
Order uplift vs baselineIs the promo actually generating extra sales — or just shifting them?≥ break-even uplift
AOV changeBOGO, threshold, and volume promos should lift AOV+5% min, +10% target
Refund rateDiscount-driven impulse buys often refund at 1.5–2× normal rateWithin +1pp of baseline

Common Pitfalls

Key takeaway

These are the four post-mortem patterns I see again and again. None require an engineer to fix; all require the founder to design the guardrails before the campaign goes live.

Always-on '20% off' becomes the price
If a code never expires, customers learn the new price is 80% of the sticker. Set hard end dates and rotate the mechanic — even good promos lose their lift after 60 days.
Stacking that nobody modelled
Two combinable discounts plus a free-shipping rule can take 35–40% off without anyone approving that math. Default to non-combinable; open combinations one promo at a time.
Hidden segment discounts
Customer-tag discounts feel safe — until a screenshot shows the same SKU at two prices on social media. Make sure every segment-only discount has a clear, defensible rationale.
Reporting on revenue, not margin
BFCM 'breaks records' every year because revenue ignores discount cost and refunds. Build a single sheet that joins net revenue, discount cost, and gross profit per campaign.

DIY vs Hire Help

Key takeaway

The line is usually clearer than founders expect. Native discounts and native B2B catalogs are well within in-house capacity. A custom app containing Function APIs, integrations beyond three active B2B market catalogs, direct company/location pricing workflows, or stacking that requires a price-floor function are agency or in-house engineering work. When you cross that line, our guides on hiring a Shopify developer and custom Shopify development cover scoping, costs, and how to vet partners.

When to Stay DIY vs When to Hire
Stay DIY
  • Native discounts + one app cover all goals
  • Under 25 app/Function-based automatic discounts
  • B2B fits within three active market catalogs
  • Promo reporting fits in a single sheet
  • Founder/CMO can model margin in their head
Hire help
  • Custom Function app logic on Plus
  • Custom automation around direct company catalogs
  • Price-floor enforcement across stacked promos
  • BI/dashboard integration for promo P&L
  • EU Omnibus compliance across multi-region
Editorial assessment of where in-house DIY ends and engineering or agency work begins.

The Bottom Line

Key takeaway

The platform supports more discount flexibility than most stores use, and far more than most stores should use. The merchants who win with discounting share three habits: they pick one mechanism per campaign, they check the margin floor before they pick the % off, and they measure gross profit — not revenue. The stores that lose at discounting tend to deploy three mechanics simultaneously, optimise to revenue, and discover the damage in the quarterly P&L. The difference is not creative; it's discipline.

Pick the lightest mechanism that hits the goal, model the worst-case basket, then ship with a hard end date. Native first, then a public app, then — on Plus — custom Functions, and only when the margin floor allows.
Your Next Step by Stage
AuditList every active discount in your admin. Mark each with goal, margin floor, end date, and combinability — kill anything missing all four.Open Shopify Discounts docs
ModelRun your next planned promo through the ROI calculator above. If the break-even uplift looks unreachable, change the discount %, not the forecast.See dynamic pricing strategy
MeasureBuild the six-KPI promo sheet. Run it after every campaign and treat anything below the margin floor as a learning, not a failure.Browse Shopify App Store

Strong brands run fewer, sharper, better-measured promos. The platform makes it trivial to ship a discount in twenty minutes — your job is to make sure the twenty minutes upstream of that have already happened.

Test your next promo on a free trial

Spin up a Shopify trial, build the discount in the admin, and validate the maths in the calculator above before shipping to live traffic.

Start free trial

FAQ

Shopify caps app- and Function-based automatic discounts at 25 active per shop (raised from 5 in November 2024). Native admin-created automatic discounts and discount codes don't share that hard cap — codes are effectively unlimited (the platform-wide ceiling sits at ~20 million total codes per shop). Combinability rules then determine which can stack at checkout — by default each discount is non-combinable.
Automatic discounts apply at checkout when conditions are met — no customer action required. Discount codes must be entered manually. Use automatic for site-wide sales, segment-only pricing, and BOGO. Use codes for influencer attribution, email campaigns, abandoned cart, and any time you need per-channel tracking. Both can be set up natively from Discounts in the Shopify admin.
Yes, but only when explicitly enabled. Shopify groups discounts as Order, Product, and Shipping; customers can combine at most one of each, and only if every involved discount has 'Combines with...' the corresponding categories. Combinability is opt-in — the safer default is non-combinable until you've modelled the worst-case stacked margin.
Shopify gift cards are native on every plan and behave like cash at checkout — not as a discount. Use them as a refund alternative, loyalty reward, or influencer-seeding tool. Track them as deferred revenue, not promo cost: redemption hits the P&L only when the card is used, and unredeemed balance accrues until expiry. They sit outside the discount engine entirely, so they never compete with your active discount cap.
Since April 2, 2026, B2B catalog volume pricing and quantity rules are included on Basic, Grow, Advanced, and Plus. Basic/Grow/Advanced can assign up to three active catalogs across all B2B markets; Plus adds unlimited catalogs and direct company/location assignment. For DTC there is no native per-unit tier: automatic discounts only cover threshold rules like 'spend $X get Y%', so true per-unit tiering needs a public App Store app, or a custom Function app on Plus.
Before. Shopify subtracts the discount from the order subtotal first, then calculates tax on the reduced amount — so a 20% off promo also reduces the tax owed. EU/UK merchants on tax-inclusive pricing should preview the storefront and invoice display side-by-side, since the discount can render differently across cart, checkout, and order confirmation depending on theme and locale settings.
The EU Price Indication Directive (Omnibus) requires merchants showing a reduction to display the lowest price applied in the prior 30 days as the reference. Shopify doesn't enforce this automatically: configure your theme, use a public app, or on Plus use a custom Function app to surface the reference price. EU stores selling reduced products without compliant disclosure face material fines per member state.
Yes — predictable, always-on discounts retrain customers to wait for promos and erode the perceived value of the full price. The healthier pattern is fewer, sharper promos with hard end dates, paired with non-discount value (free shipping, loyalty perks, bundles). Track the share of revenue sold at discount; once it crosses ~30%, the discount is effectively the price.
Track gross margin, not revenue. The break-even formula is uplift% = d / (m − d), where d is the discount and m is the contribution margin. A 20% discount at 35% margin needs 133% more orders just to keep the same profit. The Discount ROI Calculator above models this for any combination of AOV, orders, margin, discount, and uplift.
Yes. Since April 2, 2026, Basic, Grow, Advanced, and Plus can use company profiles and B2B catalogs alongside DTC. Basic/Grow/Advanced assign up to three active catalogs across all B2B markets; Plus adds unlimited catalogs and direct company/location assignment. Because a catalog is assigned through a B2B market, wholesale pricing stays off your DTC storefront without any public discount code.
About This Article
Shopify Developer & E-Commerce Writer
9+ years with Shopify since 2017

Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Writes in-depth, data-driven e-commerce guides based on hands-on experience with real merchant stores.

Continue Learning

What to Read Next

Stay updated

Get notified about new articles

Subscribe to receive updates when we publish new Shopify guides and insights.