<p>Three weeks into a launch, you check your inventory dashboard and see the same thing you see every season: the middle sizes are gone, and you're staring at a pile of XS and XXL that nobody touched. A style that started as 600 units of clean size curve is now 180 units of lopsided leftovers — and every day they sit there, they're eating the margin you made on the sizes that actually sold.</p>
<p>This is size run breakage, and it's the single most expensive problem in fashion ecommerce that nobody in the general flash sale world writes about. In <a href="/blog/flash-sales-for-fashion-brands">our complete fashion flash sales playbook</a>, we covered why fashion is structurally different from every other vertical. This article goes deep on the one problem that wastes more margin than any other: how to clear broken size runs without torching the sizes that are still selling at full price.</p>
<h2>Why broken size runs are a margin-killer, not an inventory problem</h2>
<p>Most founders think about broken size runs as an inventory math problem. It's actually a margin math problem, and the difference matters.</p>
<p>Here's the scenario. You launch a style in sizes XS through XXL, six sizes, 100 units each. By week three, S/M/L are 80% sold through and XS/XXL are 10% sold through. The instinct is to put the whole style on sale to move what's left. But the moment you do that, you're discounting the 20 units of M that would have sold at full price next week — and you're training every customer who sees the discount that your prices aren't real.</p>
<p>Run the numbers on a €120 dress. If you discount the full style at 30% to clear 90 units of XS and 90 units of XXL, you also give away 30% on the 60 S/M/L units still in stock. That's roughly €2,160 in margin you never needed to spend. Do that across a 30-style collection and you've just handed away €60,000 in margin to solve a problem that only needed €30,000 of discount depth.</p>
<p>The correct answer is to only discount the sizes that are actually broken. Keep the middle sizes at full price. Clear XS and XXL specifically. The math works, the brand stays intact, and you don't accidentally train your best customers to wait for markdowns.</p>
<h2>Why Shopify's native discount system can't do this well</h2>
<p>Shopify discounts operate at the product level, not the variant level. When you create an automatic discount for a style, it applies to every variant of that style. There is no native UI for "apply 30% off to size XS and XXL only, leave S/M/L at full price." You can technically achieve variant-level control by creating individual discount codes for specific variant IDs through the admin API, but it's clunky, manual, and doesn't scale past a handful of styles.</p>
<p>The other common workaround — splitting the broken sizes into a separate "outlet" product — destroys your SEO, your product reviews, and your inventory reporting. You end up maintaining two versions of every style and confusing customers who search for the size they want.</p>
<p>Shopify's Functions API (introduced in 2023) opened up more granular discount logic for Plus merchants willing to write custom code, but for the 95% of fashion merchants not on Plus and not writing Rust functions, there's no clean native path.</p>
<h2>The variant-level clearance playbook</h2>
<p>Here's the workflow that actually works for broken size run clearance:</p>
<p><strong>Step 1 — Identify broken runs at the variant level, not the style level.</strong> A style is "broken" when sell-through variance across sizes exceeds about 40 percentage points. If S/M/L are at 80% and XS/XXL are at 15%, that's a 65-point gap and the run is broken. If every size is between 40% and 60%, the style is just underperforming overall — that's a different problem with a different solution.</p>
<p><strong>Step 2 — Set the threshold for intervention.</strong> Don't intervene too early. In fashion, the first two weeks of a launch are for full-price sell-through. Wait until week three or four to assess. Intervening too early trains staff and customers to expect constant clearance.</p>
<p><strong>Step 3 — Apply a 30 to 40% discount only to the broken variants.</strong> This is the depth that moves inventory on terminal sizes without being insultingly deep. Deeper discounts don't sell more XS — customers who wear XS still buy XS at any reasonable price point, and customers who don't won't buy it at 70% off either.</p>
<p><strong>Step 4 — Use a variant-specific landing page.</strong> Don't just enable the discount and hope customers notice. Create a dedicated page that shows only the variants on sale, so the discount is discoverable and the middle sizes stay on the main product page at full price.</p>
<p><strong>Step 5 — Monitor size-level velocity in real time.</strong> Once the sale goes live, watch sell-through per size. Pull variants that sell out faster than expected to avoid overselling, and be ready to extend the sale on variants that don't move in the first 24 hours.</p>
<h2>How Heartly handles variant-level clearance</h2>
<p>Heartly was built specifically to handle the problems Shopify's native discount system can't. When you create a flash sale in Heartly, you can target individual variants — size XS only, color navy only, or any combination you need — without splitting products or writing custom functions.</p>
<p>The Autopilot feature takes this one step further. It scans your catalog daily, detects broken size runs automatically using sell-through variance, and can create targeted variant-level flash sales without manual intervention. Instead of spending an afternoon every two weeks combing through size curve reports, you get a notification that says "these 7 styles have broken runs, here's the suggested clearance plan, approve to launch."</p>
<p>Each flash sale lives on its own dedicated landing page with only the variants on sale, so your main product pages stay at full price. And because Heartly flash sales automatically distribute to <a href="https://deals.heartly.io" target="_blank" rel="noopener noreferrer">deals.heartly.io</a>, every clearance event gets exposed to a deal-seeking audience you didn't have to acquire.</p>
<h2>The margin math of doing this right</h2>
<p>Let's run the numbers on a realistic mid-size fashion brand. You run 40 styles per season, average 300 units per style, average €80 retail, average 55% gross margin. That's a €960,000 seasonal buy with about €528,000 in gross margin if everything sells at full price.</p>
<p>In reality, about 25% of seasonal inventory ends up with broken size runs. If you handle that 25% with blanket 30% sitewide discounts, you give away roughly €72,000 in margin on inventory that could have sold at full price. If you handle it with targeted variant-level clearance, you give away about €18,000. That's €54,000 in recovered margin per season, per brand, from a single operational change.</p>
<p>For most fashion merchants, this is the highest-ROI change they can make to their flash sale strategy. It doesn't require more campaigns, more email sends, or more customer acquisition. It just requires discounting less.</p>
<h2>Frequently Asked Questions</h2>
<h3>How do I identify a broken size run programmatically?</h3>
<p>The simplest heuristic is sell-through variance across sizes. Calculate sell-through percentage for each size variant. If the range between the highest and lowest is more than 40 percentage points, the run is broken. If it's less than 20 points, the style is selling evenly (either well or badly). Between 20 and 40 points is a gray zone where the run might self-correct.</p>
<h3>Can I do variant-level discounts on Shopify without an app?</h3>
<p>Technically yes, through the Shopify Functions API if you're on Shopify Plus, or by creating per-variant discount codes through the admin API. Practically no — neither approach scales to more than a handful of products, and the Functions approach requires writing custom Rust code. An app is the realistic path for most merchants.</p>
<h3>What discount depth clears broken sizes without killing margin?</h3>
<p>30 to 40% is the sweet spot for terminal sizes in most fashion categories. Deeper discounts rarely sell more units because size-specific demand is inelastic — customers who wear XS will buy XS at 20% off; customers who don't won't buy it at 70% off.</p>
<h3>Should I always wait until end of season to clear broken runs?</h3>
<p>No. End-of-season clearance of broken runs is the most expensive option because the garments have been sitting in warehouse the longest. Intervene 3-4 weeks after launch if the variance is clear. Earlier intervention costs less margin than late intervention.</p>
<h3>Does this work for WooCommerce too?</h3>
<p>The strategy does; WooCommerce has the same variant-level limitations as Shopify. Heartly supports both platforms from a single dashboard, so multi-platform fashion merchants can run the same variant-level clearance logic across Shopify and WooCommerce stores.</p>
<p><strong>Ready to stop discounting your bestsellers to clear your broken sizes?</strong> <a href="/blog/flash-sales-for-fashion-brands">Read the complete fashion flash sales playbook</a>, or <a href="https://www.heartly.io/signup">start your 7-day free trial</a> and set up your first variant-level clearance in minutes.</p>
All articles
·8 min read
How to Clear Broken Size Runs on Shopify Without Discounting Your Bestsellers
The middle sizes sold, XS and XXL didn't, and now you're thinking about a full-style discount. Don't. Here's the variant-level clearance playbook that recovers €50K+ per season in fashion margin.

Enjoyed this article? Share it with others.
Ready to boost your sales?
Join hundreds of merchants using Heartly to create flash sales and grow their business.
Start Free Trial