State of Discounts 2026 // Ethercycle Research

We analyzed $29 million in Shopify discounts. Most of it bought nothing.

Ten established Shopify stores, 24 months, every discount dollar accounted for. What we found: a "20% off" reflex nobody priced, always-on codes rivaling Black Friday, discounts aimed at no one in particular, and the one promotion type that actually out-performs, given 7% of the promo dollars.

$285MGross sales analyzed
$29.4MDiscount dollars
1.14MOrders anatomized
Jul 2024 to Jun 2026Data window

Two datasets on this page, each labeled: 24 MO · 10 STORES longitudinal analytics, and 12 MO · 8 STORES per-order discount anatomy on 1,138,230 cleaned orders (non-promotional orders excluded; methodology below).

Share this X LinkedIn Facebook
The headline numbers

Six findings from the data

Merchants in this sample gave back 10.3 cents of every gross dollar. Here is where those cents actually went, and what they actually bought.

24 MO 10.3%

Discounting is a tenth of gross. $29.4M given back on $285.3M of gross sales, and 41.4% of all orders carry a discount. Per-store rates run from 2.06% to 22.68% of gross.

12 MO 99.4%

The code base is sprawl. 132,555 distinct codes were redeemed in 12 months. 99.4% of them were used exactly once, and that swarm carries 56% of code dollars. Over half of code spend flows through codes no one will ever review.

12 MO $24 = $24

Blanket discounting is literal. New customers: discounted on 41.6% of orders at $23.96 each. Returning: 41.3% at $24.12. Near-identical treatment, no visible targeting, and 67.3% of the dollars land on people who were already buying.

12 MO +55%

Gift orders carry the biggest baskets. $172.88 net AOV vs $111.61 full-price, reaching 46.5 to 54.2% new customers vs 30.2% for price-discounted orders. Yet real gifts get just 7% of promo dollars. Price cuts get 88%.

12 MO 20%

Everyone picked the same number. Median discount depth: 19.96% of the basket; 79% of discounted orders sit in the 10 to 30% band. And baskets are flat through 30% depth, so every point past ~20 buys nothing.

YOY 7/10

The retreat has started. Seven of ten stores gave back a smaller share of gross in year 2, and the heaviest discounters cut fastest. The pooled rate fell from 10.96% to 9.81%.

Finding 1 12 MO · 8 STORES

Blanket discounting is literal

Discounts get sold as an acquisition tool. Here is how precisely that tool is aimed: new and returning customers receive essentially the same deal.

CLEANED SAMPLE, 12 MONTHS, 8 STORESOrders discounted41.59NEW CUSTOMERS41.34RETURNINGAvg give-back ($)23.96NEW CUSTOMERS24.12RETURNINGDepth (% of basket)15.44NEW CUSTOMERS16.99RETURNING
New customersReturning customers

Incidence is % of the cohort’s orders carrying any discount; give-back is dollars per discounted order; depth is dollar-weighted discount as a share of the pre-discount basket. The two cohorts are statistically indistinguishable on all three. That is what “blanket discounting” means: 67% of discount dollars land on returning customers simply because that’s who orders.

Same incidence, same give-back, near-same depth. Individual stores differ in both directions (welcome-funnel stores favor new customers, subscription-and-loyalty-heavy stores favor returning); pooled, the market shows no net targeting at all. The consequence is mechanical: returning customers place two-thirds of the orders, so they collect 67.3% of the discount dollars, and every one of those dollars subsidized a purchase from someone who had already decided to buy from you.

It gets worse for the acquisition story: price-discounted orders have a lower new-customer share (30.2%) than full-price orders (32.6%). The "acquisition tool" acquires less than no tool at all. The only stores that break the pattern are the ones running actual welcome funnels, and the only order type that over-indexes on new customers is the free gift (below).

Finding 2 12 MO · 8 STORES

The full-basket paradox

Discounted orders don't shrink baskets. Net of the discount itself, they're bigger: $122.29 vs $111.61 for full-price orders.

Full-price AOVDiscounted AOV (net)
NET OF THE DISCOUNT. LABEL = DISCOUNTED MINUS FULL-PRICEStore B−$32Store H+$52Store G+$22Store F−$6.80Store D−$4.09Store C+$33Store E+$13Store A+$6.06

Discounted orders’ average basket, net of the discount itself, vs full-price orders’ average basket, per store. Discounted baskets net more in 5 of 8 stores and pooled ($122 vs $112). Code-only orders alone net $118, so the pattern isn’t an artifact of manual pricing. Correlation, not causation: thresholds gate deals to bigger carts, and bigger carts hunt codes.

Minimum-spend thresholds work: they gate the deal to bigger carts, and code-hunters skew toward loaded carts. But look at the price you paid for that $10.68 of net lift: $24.07 per order in surrendered margin. You bought a bigger basket and handed back more than twice the difference. Hold that math; the next section shows what the same mechanic costs when the incentive is a gift instead of a price cut.

Finding 3: the big one 12 MO · 8 STORES

Gifts beat discounts on every axis. Almost nobody uses them.

Same head-to-head, 1.14 million orders: full price vs price discount vs free gift. The gift wins on basket size, wins on new customers, and costs COGS instead of margin.

NET AOV AFTER ANY DISCOUNT · 12 MO · 8 STORES$112Full price666,770 orders$116Price discount408,768 orders$160Free shipping only45,695 orders$173Gift only9,263 orders$191Gift + discount7,734 orders

Who each order type reaches

% OF ORDERS FROM FIRST-TIME CUSTOMERS · PROMO COST PER ORDER BELOW32.6%Full pricepromo $0.00/order30.2%Price discountpromo $24/order50.1%Free shipping onlypromo $7.50/order46.5%Gift onlypromo $43/order54.2%Gift + discountpromo $84/order

The gift order’s $43 “cost” is the gift’s retail value: Shopify books a free gift as a 100%-off line item. The merchant’s real cost is COGS, a fraction of face value. The price discount’s $24 is real margin surrendered at face value. Selection caveat, stated plainly: gift campaigns are threshold-gated (“spend $X, get the gift”), so part of the basket gap is who qualifies, not what the gift causes. The new-customer gap has no such excuse.

Read those two charts together and the asymmetry is hard to ignore. Price-discounted orders: modestly bigger baskets, the worst new-customer mix on the page, at $24.35 per order of real margin. Gift orders: the biggest baskets measured, a new-customer mix half again better than the price cut's, at a booked "cost" that is actually the gift's retail sticker, not what the merchant paid for it. And credit where due: free-shipping-only orders post the single highest new-customer share (50.1%) at $7.50 a head, which is an argument for non-price incentives generally, not against gifts.

And the market share of these two tools? Price cuts take 88% of promo dollars. Real gifts take 7%. Merchants have overwhelmingly chosen the instrument with the worst economics.

ALLOCATION-LEVEL SPLIT OF CLEAN DISCOUNT DOLLARS · 12 MO · 7 STORESPRICE DISCOUNTS87.98%Free gifts: 7.04%Shipping: 4.98%

Allocation-level split of every discount dollar in the cleaned sample (7 of 8 stores; one store’s cache predates allocation splits and is excluded here only). Price discounts include codes, automatic discounts, scripts, and post-purchase edits.

It's not one store

Full-price AOVGift-order AOV (net)
EVERY STORE WITH REAL GIFT VOLUME SHOWS THE SAME GAPGift store 1+$126Gift store 2+$141Gift store 3+$26

Stores with 1,000+ gift orders in the window. Net AOV excludes the gift line itself (it’s 100% discounted), so these are dollars customers actually paid.

Disclosure, before you ask

Our team builds Promo Party, a gift-with-purchase app for Shopify. That's why we had this data and this question in the first place. Judge the numbers, not us: every stat on this page is computed from raw order data by a script, the full methodology is published below, and the biggest caveat on the gift findings (threshold selection bias) is printed directly under the chart it weakens, not buried here. If the data had said gifts lose, we'd have published that instead. When cleaning the sample killed one of our own early findings, we cut it; the same rule applies in both directions.

Finding 4 12 MO · 8 STORES

Everyone defaults to 20%, and depth past 20 buys nothing

Five industries, eight stores, no coordination, one number. Median discount: 19.96% of the basket. Nobody priced that. Everybody copied it.

DEPTH = DISCOUNT AS % OF PRE-DISCOUNT BASKET16.08%4.29%0-10%40.97%35.32%10-20%37.81%49.76%20-30%3.74%6.79%30-50%1.41%3.84%50+%
Share of discounted ordersShare of discount dollars

Median depth 20%, 90th percentile 25%. Five unrelated verticals herd on the same number. Nobody is pricing promotions; everybody is copying them.

What deeper discounts actually buy

AVERAGE BASKET BEFORE THE DISCOUNT WAS APPLIED$1590-10%$14310-20%$14920-30%$12130-50%$10150+%

The basket here is gross of the discount, which avoids the mechanical suppression a net-AOV comparison would bake in (depth's denominator is this same gross basket, so the flatness is the finding, not an artifact). One residual mechanic: fixed-dollar codes read as deeper on small carts, which explains part of the 30%+ fall. Flat through 30%, falling after: deeper discounts attach to the same carts or smaller ones.

This is the chart that settles the "should we do 20% or 30%?" meeting. Pre-discount baskets are flat from 0% through 30% depth, then fall. Deeper offers don't attach to bigger carts; past 30% they attach to smaller ones. Whatever a discount does for your conversion, the marginal ten points of depth does nothing but donate margin to the same basket.

Finding 5 MIXED WINDOWS, LABELED

The leak is always-on, not Black Friday

Merchants re-plan BFCM every year and never audit the evergreen codes that quietly outspend it. 86% of discount dollars are spent outside November.

24-MONTH WINDOW, ALL 10 STORES14.07%Share of annual discount dollars13.13%Share of annual gross sales

If discounting were uniform year-round, November’s share of discount dollars would equal its share of gross. It nearly does. The peak BFCM day runs 5.2x a median BFCM-window day, which is why the season feels like the spend. It isn’t: 86% of discount dollars are spent in the other eleven months.

Where the always-on dollars flow

132,555 DISTINCT CODES REDEEMED · 12 MO · 8 STORESSINGLE-USE CODES56.13%REPEAT CODES30.51%Evergreen codes: 13.36%

Single-use = redeemed exactly once in 12 months: 99.4% of all distinct codes, carrying 56.13% of code dollars. Evergreen = live 10+ of 12 months: 64 codes carrying 13.36%. The biggest single evergreen code at one store gave back $349K, live all 12 months. Top-10 codes carry the majority of code dollars at 5 of 8 stores.

Two structures dominate the code machine. At one end, evergreen public codes: a handful per store, live year-round, leaking to every coupon extension on the internet. The single biggest in our sample gave back $349K on its own and never took a month off. At the other end, a single-use swarm: 99.4% of the 132,555 distinct codes redeemed were used exactly once, and together they carry 56% of code dollars. Unique codes are often good practice (targeted, leak-proof, measurable). But over half your code spend flowing through codes no human will ever review is a governance problem wearing a personalization costume.

What we'd do · our judgment on top of the data

Five moves, in order

01

Cap depth at 20 to 25%

Baskets are flat through 30% depth and fall after. If 20% doesn't move a customer, 30% buys the same basket with ten extra points of your margin attached.

02

Differentiate new vs returning, because today nobody does

Identical treatment is the industry default. Fence acquisition offers to actual first-timers. Move returning customers to levers that don't reprice your catalog: early access, loyalty perks, gifts.

03

Audit your evergreen codes quarterly

A code that's live 12 months a year is a standing price cut wearing a promotion costume, and public codes leak to coupon extensions within days. Expire, rotate, fence. Your top-10 codes are most of your code spend; the audit takes one sitting.

04

Run gifts as a program, not a November stunt

Threshold-gated gift-with-purchase produced the biggest baskets and the best new-customer mix in 1.14M orders, at COGS cost. The data says the tool works; the seasonality chart says nobody has committed to it.

05

Watch your stacking rules

Orders combining two or more discount types were 6% of discounted orders but took 12.8% of discount dollars. Combinability is where 20% quietly becomes 35%.

What can go wrong

The risks nobody prices

R1

You're training your customers

At 41% discount saturation, the discount is the price and full price is the anomaly customers wait out. The 7-of-10 retreat suggests merchants are starting to feel this.

R2

The attribution illusion

42% of discount dollars in this sample sit on orders with no session at all (subscriptions, POS, drafts). Nothing on this page is incrementality math, and neither is your dashboard. A discount that "drove" an order may have subsidized one that was coming anyway; Finding 2 suggests that's the norm, at scale.

R3

Evergreen leakage

A year-round public code propagates to coupon extensions and converts full-price intent into discounted intent with zero targeting. You pay the 20% on customers who never saw your campaign.

R4

Governance debt

132K distinct codes per year across 8 stores is beyond manual review. Without naming conventions and expiry policy, nobody in your org can say what's live, for whom, or why.

R5

Margin compounding

10.3% of gross, every year, is a permanent line on the P&L that nobody ever approved as a budget. A merchant doing $10M is spending a seven-figure sum annually on a program with no owner.

Questions from the comments

FAQ

The sample

Only 8 to 10 stores. Is that really research?

It's 10 stores, measured two ways: a $285M, 10-store sales panel over 24 months, and 1.14 million individually anatomized orders on 8 of those stores over 12 months. First-party raw data beats any survey of 500 merchants self-reporting what they think they discount. We publish the spread instead of pretending the sample is uniform: per-store rates run 2.06% to 22.68%. Where a finding depended on one store's weight, we broke it out per store before calling it a finding, and one candidate finding died exactly that way.

Are these US stores? What size?

US-based, established seven- and eight-figure Shopify brands across five unrelated consumer verticals. All are agency clients, which means they're more operationally mature than average; if anything, your discount program is likely messier than the ones measured here.

Why exclude draft orders and $0 orders?

Because they aren't consumer promotions: manually priced orders, comps, and exchanges. Together they carried 29% of raw discount dollars, enough to distort every downstream number, so the whole report runs on the cleaned sample. The exclusions are themselves script-computed and documented in the methodology.

The findings

Are you saying discounts don't work?

No. We're saying 10.3% of gross is being spent without targeting, auditing, or measurement, and the data shows which parts of that spend can't be doing the job merchants assign to it: identical treatment of new and returning customers, dollars pooling on repeat buyers, depth beyond 20% attached to no basket gain, and evergreen codes leaking year-round. A discount with a fence, a cap, an expiry, and a target audience is a fine tool. That's not what the data shows merchants running.

Isn't the gift-basket gap just selection bias from thresholds?

Partly, yes, and we say so under the chart itself. "Spend $150, get a gift" gates the gift to big carts, so part of the $172.88 vs $111.61 gap is who qualifies, not what the gift causes. Three things survive that caveat: the new-customer mix (46.5 to 54.2% new for gift orders vs 30.2% for price-discounted; thresholds don't explain who shows up), the cost structure (COGS vs face-value margin), and the per-store consistency (every store with gift volume shows the gap). This is a descriptive comparison, stated as one. Nobody has run the holdout test; if you run one, we'd love to see it.

Is 20% the "right" discount then?

It's the ceiling the data supports, not a target. Baskets are flat from 10 to 30% depth, so whatever 20% does for your conversion, 30% does the same thing minus ten points of margin. The honest answer to "what should my discount be" is: whatever number you pick, the herd already picked 20%, and your real leak is more likely an unaudited evergreen code than a mispriced percentage.

What about free shipping?

Measured but underexplored: shipping promotions took 5% of promo dollars, and shipping-only promo orders carried $159.84 net baskets at $7.50 per order, with a 50% new-customer share. It behaves more like a gift than a price cut, which fits the thesis, and it deserves its own study window before we'd headline it.

What about sale prices and compare-at markdowns?

Out of scope by data model: Shopify books markdowns as the price itself, not as a discount, so no order-level ledger exists for them. This report covers the discounts ledger: codes, automatic discounts, scripts, and manual adjustments. Markdown-driven "sale" merchandising is a real margin lever and a different study.

Trust and methodology

You sell a gift-with-purchase app. Why should I trust this?

You shouldn't trust us; you should check us. The disclosure sits next to the gift finding, not in a footer. Every number is script-computed from raw order data, the methodology below describes exactly what was measured and excluded, the biggest caveat against our own thesis is printed under the chart it weakens, and when cleaning the sample killed one of our own preliminary findings, we cut it rather than shipping it. We built a gift app because we believed this thesis; this is the first time we've been able to test it on seven-figure order volume, and we published the test, not the pitch.

What attribution model is this?

Shopify's own analytics throughout: last non-direct click where channels appear, and the discounts ledger for everything else. No GA4, no multi-touch, no ad spend data (Shopify has none), so nothing here is a ROAS claim. Channel-level claims exclude the 42% of discount dollars on sessionless orders, and we say so where it matters.

Was any customer data involved?

No customer-level data ever left the stores' own admin. The analysis files contain order aggregates and anonymized per-order economics: amounts, discount types, and an at-query-time new-vs-returning flag. No customer records, emails, addresses, or customer IDs were collected at any stage, and stores appear in this report only as letters.

Can I replicate this on my own store?

Yes, and you should: your numbers are the ones that matter. The recipe, conceptually: pull monthly gross sales and discounts from Shopify analytics for the trend; export 12 months of orders with their discount applications via the Admin API for the anatomy; exclude test, cancelled, draft, and $0 orders; classify each discount application by type (code, automatic, manual, script, and 100%-off automatic line items, which are your gifts); then cut by customer cohort and depth. A competent dev, or frankly a competent AI agent, can have your version of Finding 1 in an afternoon.

Methodology, complete

What we measured and how

Sample. 10 established US Shopify stores (seven and eight figures), all agency clients, anonymized to letters via a fixed mapping. Longitudinal side: 24 months (July 2024 to June 2026) of monthly gross sales and discount dollars per store from Shopify analytics. Order side: 12 months (July 2025 to June 2026) of per-order discount applications on 8 of the 10 stores via the Admin API: 1,138,230 orders after cleaning.

Cleaning. Orders excluded: test, cancelled, draft (24,178 manually priced orders), and $0-total (9,959; comps and exchanges). The exclusions carried 29% of raw discount dollars, which is why the report runs on the cleaned sample. One store's order history begins at its platform migration, so only its post-migration months are included order-side. One store's cache predates allocation-level splits and is excluded from the price/gift/shipping dollar split only.

Definitions. Depth = discount ÷ (discount + net subtotal), i.e. share of the pre-discount product basket, shipping excluded; basket-by-depth comparisons use the gross-of-discount basket to avoid sharing a denominator with depth. A "gift order" carries a 100%-off automatic line item, which is how Shopify books gift-with-purchase. New vs returning uses the customer's order count, which is measured at query time, not order time, so returning shares are modestly overstated; the direction of that bias is against our Finding 2, not for it. Evergreen code = redeemed in 10+ of 12 months. Single-use code = redeemed exactly once.

Limits, stated plainly. The longitudinal discounts metric counts codes and automatic discounts only, so those rates are floors. No incrementality claims anywhere: there are no holdouts, no lift tests, and no ad spend data in Shopify. Gift volume comes from 3 of 8 stores. Everything descriptive is labeled descriptive, and the two editorial sections (the six moves, the risks) are our judgment on top of the data, labeled as such.

Published July 30, 2026. Research and analysis by Ethercycle, a Shopify-exclusive agency since 2014. Companion article on The Unofficial Shopify Podcast blog.

Worth sending to someone? X LinkedIn Facebook

Act on it

If the gift findings made you curious, that's the tool we build: threshold gift-with-purchase for Shopify, the mechanic behind the biggest baskets in this dataset. If it's your discount ledger that scared you, that's the audit we do.

Try Promo Party Reserve Your Consultation

You read to the end