Ecom Store Pro

Shopify Discounts: Mechanisms, Setup & ROI Math

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

Listen to a short brief of this article
Hands-free while you multitask

The short version

Start with Shopify's native discounts — automatic discounts, codes, BOGO and free shipping — add a public Function app only for a specific gap, and consider a custom Function app only on Plus.

Set the discount from a margin floor, not intuition: at a 35% margin, a 20% promo needs 133% more orders just to hold gross profit, and a 30% promo needs 600% more.

Run one mechanism per campaign, model the worst-case basket, give every promo a hard end date, and measure gross profit rather than revenue.

What's New Since Publication: Updated since publication · 4 changes
  1. Bold Custom Pricing is no longer listed on the Shopify App Store
    The listing for Bold's Custom Pricing: Wholesale B2B app, which this guide named as a B2B add-on from $29/mo, now reads "This app is not currently available on the Shopify App Store" (checked October 11, 2026). We removed it from the app table below; Wholesale Gorilla and Regios remain, with pricing re-read on the same day.
  2. Discounts can now go into Rollouts
    Shopify added discounts to Rollouts: a new offer can go to a portion of online store traffic first, or be tested against your existing offers before a wider launch. The KPI section now covers where that fits next to your own promo post-mortem.
  3. Same-item product-discount stacking arrived — but only for Shopify Plus
    On July 15, 2026 Shopify started allowing multiple product discounts on the same item — including a discount code on top of an automatic product discount — grouped and matched through discount tags. The changelog names no plan boundary, but Shopify's discount-combinations guide does: same-item product stacking is Shopify Plus only. On other plans the rule this guide originally described still holds, with product discounts combining only across separate items. The stacking section below now covers both lanes.
  4. Discounts can now be assigned directly to a market
    Shopify added an eligibility selector that assigns any code-based or automatic discount to specific markets. Stores on the Basic plan and above using the new version of Markets can now restrict a discount to a country or region, B2B, or retail market (channel markets excluded) natively, without a separate Function app to gate it. The percentage itself still stays universal across markets — Markets varies price and currency, not the discount rate.

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, and combinability flags. Total and per-customer usage limits belong to discount codes only: a code can cap its total uses or allow one use per customer, while an automatic discount has neither option. 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, and sits on your balance sheet as a liability until redeemed.
You can create discounts that are either applied automatically, or applied with discount codes.
Shopify Developers — About discounts — 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 segment). Best for site-wide sales, Black Friday, or always-on customer-tier discounts. Note: a store can have at most 25 active automatic discounts, and that total includes app-based discounts (the app-based limit was raised from 5 in November 2024).
Discount codes
Acquisition & influencer
Manually entered at checkout, where codes aren't case sensitive. 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 catalog volume pricing and quantity rules (B2B); for B2C a native discount can require a minimum quantity of items, and discount apps add multi-tier ladders. 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 extra costs at checkout — shipping, tax and fees — are the top reason US shoppers give for abandoning a cart in Baymard's survey once 'just browsing' is set aside. 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. To use B2B catalog features on the Basic, Grow, or Advanced plans, your store must be using new Shopify Markets.
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

Key takeaway

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 discount—Custom logic if combined
BOGO / Buy X get YBuy X get Y discount——
Free shipping over thresholdShipping discount——
Wholesale price lists by B2B marketB2B catalogs (Plus, or Basic/Grow/Advanced with new Shopify Markets)Optional for extra workflows—
Competitor-based dynamic pricing—Prisync, 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 customers—LimitedDiscount Functions
Gift card issuance & redemptionGift cards (all plans)Rise.ai for advanced gifting—
Loyalty points & tier discounts—Smile, LoyaltyLion, YotpoFunctions for redemption rules
Abandoned-cart recovery codeDiscount codes (manual)Klaviyo, Shopify Messaging 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 active automatic discounts (app-based included)
  • 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.
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. At a 30% margin a 10% discount already needs 50% more orders to hold gross profit, and the requirement climbs steeply below that.

Break-Even Uplift by Discount %

Key takeaway
The single rule that prevents most discount disasters
Cap the discount at margin minus 5–10 percentage points. Those 5–10 points are your minimum acceptable contribution per order, not a safety rating on the discount itself: at a 35% contribution margin, a 25% discount still needs 250% more orders to hold gross profit, and a 30% discount needs 600%. Compute (margin − discount) — only when that goes negative, past 35% in this example, are you paying customers to take product. Make this floor a hard config in your promo planning sheet, not a vibe.

Discount ROI Calculator

Key takeaway

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, as a % of your baseline 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

Key takeaway

Different mechanics buy conversion at very different prices. On this chart's numbers, free shipping buys the most conversion per margin point (8.0 pp of lift for 2.5 pp of margin), followed by tiered spend thresholds (3.0 for 2.0); 10% sitewide and loyalty/VIP perks buy the least (4.5 for 7.0 and 2.5 for 3.0). First-order codes bring the biggest lift (9.5 pp) and the biggest margin hit (8.5 pp).

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, specific customers, customer segments, or markets). 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.
In Shopify adminOpen in your store
  1. Discounts
  2. Create discount
  3. Amount off products
Method, value, eligibility and minimums sit on one form, with a running summary of the rules on the right.

Video: Automatic Discounts in Admin

Key takeaway

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 Messaging. 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 Messaging automations or Klaviyo. Never lead with the discount — we found no benchmark that compares recovery rates with and without one, so hold the margin back for the last email instead of spending it 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. 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 so each creator's sales and commission are tracked — natively in Shopify Collabs (free to install, though Shopify adds a processing fee to every automatic commission payment — see the tooling notes below) or in a third-party affiliate app. Price the code and the commission together, so the discount plus the payout still clears your margin floor.
6
Win-back for lapsed customers (90+ days)
Identify customers with no order in 90/180 days via customer segments. Send a one-time, time-limited code (15% / 7 days). Track repeat-purchase rate vs control.

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 Messaging — and whether the cart flow is worth paying for at all, against Shopify's free built-in recovery, is exactly what our abandoned cart recovery guide prices out. For the full setup, see our Klaviyo on Shopify guide.

Influencer codes can run through Shopify Collabs, which is free to install but adds a 2.9% processing fee to every automatic commission payment — whether that beats a paid affiliate app is what our Shopify Collabs vs affiliate app comparison works through. For US audiences, creators paid in commission or free products should disclose that — see what your affiliates have to disclose. For UK audiences on Instagram, see whether Instagram's Paid partnership label is enough.

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 every combination must be explicitly allowed: each discount's own settings say what it combines with (official rules). Multiple discounts apply only when the setting on each discount allows it. The same guide also gates two pairings by eligibility — product discounts with order discounts, and order discounts with other order discounts, are each marked "available only to eligible merchants".

The ceiling moved on July 15, 2026: Shopify Plus stores can now tag discounts into groups and stack several product discounts on the same item — a discount code on top of an automatic product discount included. On every other plan the old rule stands, with product discounts combining only across separate items. That opt-in design is a feature: most accidental 35–40% discounts come from someone toggling a promo as combinable without checking what else is live.

1
Know the combination rules
Shopify groups discounts as Order, Product, and Shipping, and combinations happen only where every applied discount is marked combinable. Since July 15, 2026 Shopify Plus stores can also stack tagged product discounts on the same item; on other plans product discounts pair only across separate items.
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.

One prerequisite applies to the catalogs on the first three plans: Shopify states that to use B2B catalog features on Basic, Grow, or Advanced, your store must be using new Shopify Markets. 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.

That barrier runs one way only: since June 23, 2026 Shopify switches discounts for B2B on automatically for new B2B stores and existing ones carrying no active or scheduled discounts, so on those stores a retail code left eligible for All customers also reaches wholesale buyers by default.

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, and on those three plans catalog features require your store to be using new Shopify 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 ·
Discount Apps & Native Tools — Quick Reference
ToolBest forPriceNotes
Shopify Discounts (native)Automatic, codes, BOGO, free shipping, quantity rulesIncludedMax 25 active automatic discounts, app-based included
Shopify B2B (native)Catalogs, tailored pricing, quantity rules, volume pricingIncluded on Basic, Grow, Advanced, PlusUp to 3 active market catalogs on Basic, Grow and Advanced, where catalog features need new Shopify Markets; 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
Wholesale GorillaWholesale ordering + tiered pricing workflowsFrom $34.95/moOptional workflow layer alongside native B2B
Regios Automatic DiscountsCustomer-tag and geolocation-based discount logic$34.99–$249.99/moFlowchart rule builder on Shopify Functions; 7-day trial, no free tier

Pricing as listed on the public Shopify App Store on October 11, 2026. 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. Since May 7, 2026, stores on the Basic plan and above that use the new version of Markets can assign a discount to specific country or region, B2B, or retail markets (not channel markets), so only customers in those markets can use it — see how to limit a discount code to one country. To vary the amount per market within one code, use a public Function app, or on Plus a custom Function app.
POS discounts
In-person & omnichannel
Fixed-value and percentage codes from your admin also work at POS checkout, with or without POS Pro, and can't be kept online-only; staff can also add custom line-item and cart discounts, which you limit through POS staff permissions. Automatic discounts apply at POS only on POS Pro locations, through Apply on POS Pro locations or a retail market, and discounts created by third-party apps can't be limited to one channel. Our answer on using a discount code in Shopify POS covers the Apply discount codes permission and the exchange exception.
Refunds on discounted orders
Refund the paid price
Shopify lets you refund an order in part, up to the total available to refund — the original amount of the order — and you can edit the refund amount manually. Decide in your return policy how a Buy X get Y return is handled — for example, the free item comes back too or its value is deducted — and rehearse it on a test order. Write that rule down before the promo starts, or watch refund margin spiral.
Hitting the 25 automatic-discount cap
Consolidate or restructure
Shopify allows a maximum of 25 active automatic discounts per store, and that total includes app-based discounts, so native admin-created automatic discounts count toward the same cap. 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 discounts.
Bulk / unique-code generation
Per-recipient codes
Generate unique codes in bulk with an app like Dyno, which can also import codes via CSV — the Shopify admin exports discounts to CSV but can't import them — within a store's cumulative ceiling of 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"

Key takeaway

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 can apply to a Shopify merchant running discounts. The EU's Price Indication Directive (Omnibus) requires that a price reduction announced to customers in the European Economic Area show the lowest price applied in at least the prior 30 days as the reference — Shopify's guide notes it might not apply to personalized reductions such as loyalty discounts or an individual discount code — and each member state sets its own penalties. 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.

A sheet still compares a promo against last month, not against a control. Since October 2, 2026, Shopify's Rollouts can include discounts: a new offer can go to a portion of online store traffic first, or a discount change can be compared against your existing offers on conversion before it goes wider. Rollouts isn't on every plan in the same form — which plans get a true split test, and when a paid testing app still earns its fee, is what our Shopify Rollouts vs paid A/B testing app comparison sets out.

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 rateShows whether the promo pulled in orders that come back — compare against your baselineWithin +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.
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 active automatic discounts (app-based included)
  • 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
  • Price Indication Directive compliance across EEA markets
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.

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.

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

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 allows a maximum of 25 active automatic discounts per store, including app-based ones. Discount codes sit outside that cap — up to 20,000,000 unique codes per store — but a customer can use at most 5 product or order codes and 1 shipping code per order. Combinability then decides what stacks at checkout.
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, when each discount's 'Combines with' settings allow it; a custom discount applied manually to a POS cart or draft order always applies. Discounts are Order, Product or Shipping. Since July 15, 2026, Plus stores can stack product discounts on one item; other plans combine them only across separate items, and on those plans Buy X get Y items take no further product discounts.
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 (new Markets required), and Plus. For DTC, a native amount off discount — code or automatic — can require a minimum quantity of items, so 'buy 3, get 10% off' needs no app; public App Store apps, or custom Function apps on Plus, add multi-tier ladders.
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) applies when you announce a price reduction to customers in the European Economic Area: show the lowest price you charged in the last 30 days or more; national law can require longer. Shopify's guide has you enter it in the Compare-at price field or display it with metafields. Each member state sets its own penalties.
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, and on those three plans catalog features require your store to be using new Shopify 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. Coexistence does not mean separation in both directions, though: since June 23, 2026 Shopify activates discounts for B2B automatically on new B2B stores and existing ones with no active or scheduled discounts, and on those stores a code left eligible for All customers reaches wholesale buyers unless you assign specific markets to it.
About This Article
Shopify Developer & Editorial Director
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. Directs the editorial process behind Ecom Store Pro: sets its topics and the rules every AI-written page must pass before publication.

This page was written by AI. Separate AI agents that did not write it check its figures and claims against official sources and test its links and interactive tools. A human editor sets the site's editorial direction, topics and rules and checks that pages are complete and display correctly, but does not check their facts or edit their text. Details may change — always confirm critical data at shopify.com.

Editorial Policy

Some links in this article are affiliate links. If you sign up for a Shopify store through these links, we may earn a commission at no extra cost to you. Read our full advertising policy.

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.