Why Shopify Stores Oversell Apparel — and What Inventory Actually Needs to Do
It is 9:47 on a Tuesday morning. Your phone buzzes with the Shopify chime. A new order — ten Bella+Canvas 3001 in Heather Blue, size XL, plus a couple of Athletic Heather mediums. A nice repeat customer, a small CrossFit gym you've been printing for since last spring.
You smile.
Then you pull up the supplier portal to drop the PO. Heather Blue XL is at zero stock at every warehouse but Reno. The Athletic Heather mediums are already on backorder. You know what comes next: an email to the customer that starts "I'm so sorry, but..."
You did not oversell on purpose. Shopify said the stock was there. The supplier said the stock was not. Somewhere between those two sentences, a customer is now waiting on you to explain.
If you've been there — and if you sell apparel on Shopify, you have — this article is for you. The pattern is structural, not personal. Once you can see the shape of the problem, the fix gets a lot easier.
Key Takeaways
- What's actually going wrong — the stock count Shopify shows your customer is older, slower, and shaped differently than the stock count your supplier actually has.
- Why it's not your fault — apparel inventory moves faster than most Shopify stores' refresh cycle, and most stores don't have a per-warehouse view at all.
- What needs to change — your store needs a fresher view of your supplier's stock, mapped correctly to your Shopify locations, with a bumper for the lag that's left.
- Who this matters most for — apparel decorators, blank resellers, dropshippers, and team-store operators selling SKUs whose stock at the supplier moves faster than once a day.
- Read on for — the four structural causes, the four workarounds people try, and the simplest way to fix it.
Table of contents
- The pain, named clearly
- Why it happens — four structural causes
- What people try (and why each one falls short)
- What inventory actually needs to do
- What to read next
- FAQ
The pain, named clearly
Overselling on apparel takes three predictable shapes. You probably know all of them.
The "we just sold ten of nothing" order. A Shopify order arrives for stock the supplier no longer has. Sometimes the supplier had it yesterday morning. Sometimes the supplier hasn't had it in a week. Either way, you found out from the customer.
The "wrong warehouse" order. A Shopify order arrives for stock that exists somewhere in the supplier's network but not where the customer needs it from. If you ship from your own holding stock plus the supplier's overflow, this one shows up the day a customer in Atlanta ends up with a package routed through Reno.
The "everything in this size" failure. A school's youth-baseball team store opens for two weeks every March. Coach orders ten size YL navy jerseys for the new bench. The supplier had stock when the order window opened — and ran out three days in because every league in the region had the same stock window.
A screen printer in Ohio running 200 Bella+Canvas 3001 a week told us the same story almost word-for-word: "We oversell about one order a week. The refund eats fifty bucks plus ten minutes. The lost trust eats a customer."
You can do the math on what that costs your store. The numbers add up faster than the refunds suggest. (We work the math out in The Real Cost of Managing a Wholesale Apparel Catalog by Hand.)
Why it happens — four structural causes
Overselling on Shopify is not a moral failing. It is the predictable result of how Shopify, your supplier, and the data path between them are designed.
1. The stock count Shopify shows is older than the stock count the supplier has
This is the easy one. Most apparel stores update Shopify from their supplier's catalog on some schedule — once a day, once a week, sometimes once a quarter. Whatever the schedule is, the stock number in your Shopify product is as fresh as the last refresh. If you refresh at midnight and the supplier sells out at 2pm, your store still says "in stock" until tomorrow morning.
National apparel suppliers move thousands of units a day across thousands of dealers. A 24-hour-old stock number is enough to oversell on the fast-moving SKUs (Gildan 5000 black L, Bella+Canvas 3001 athletic heather M, anything in a popular team color in size XL). The slower the refresh, the wider the window in which your store is selling fiction.
2. Your supplier holds stock in many warehouses; your Shopify store sees one number
S&S Activewear ships from eight warehouses across the U.S. SanMar runs major distribution centers in Washington, Pennsylvania, Texas, and several other regional sites. AlphaBroder operates a similar multi-DC footprint.
Your Shopify store, by default, sees one stock number per product variant. When the integration tool you're using (or the spreadsheet you're maintaining) collapses eight warehouse stocks into one Shopify number, three things go wrong:
- Wrong total. Add eight warehouses' stock together when only the East Coast warehouse is actually relevant for your shipping radius, and you'll oversell anything that's stocked far away from your customers.
- Wrong allocation. A Shopify multi-location store can lose its per-location accuracy if the supplier's locations and Shopify's locations don't line up. The numbers stop matching the geography.
- Wrong reaction. When one of your supplier's warehouses sells out unexpectedly, the others may not have what you assumed they had — and your Shopify number, still showing the supplier's total, is now wrong by a wide margin.
For a deeper walk-through of these three patterns, see Multi-warehouse inventory on Shopify: combine, filter, or map?.
3. Apparel SKUs are dense and seasonal, and they all move at once
A single Gildan 5000 has roughly 60 to 100 active variant rows once you count colors and sizes. A single SanMar Port Authority polo can have hundreds. Multiply by the brands you actually sell, and even a small apparel store has tens of thousands of variants flowing through its catalog.
Two practical consequences:
- Hot variants drain at the same time across the industry. When a popular color of Bella+Canvas 3001 trends in March, every decorator and reseller in the country is pulling on the same warehouse. Your refresh cycle hasn't caught up yet, but the supplier already has.
- Seasonal variants get false-positive stock counts. A youth-jersey size run in March looks "in stock" until the third day of order opens. Then it's not.
The faster the SKU moves, the older your last refresh is in real time, even if the clock says it ran four hours ago.
4. Most apparel stores have no buffer between "supplier said yes" and "Shopify said yes"
A buffer is a small amount of safety margin baked into the Shopify stock number — the supplier says 50, you write 47 to Shopify. The buffer absorbs the lag in your refresh cycle. Without it, you're running zero margin between the supplier's reality and your store's promise.
Most stores don't have a buffer because their integration tool doesn't expose it, or they hand-managed it once and it didn't survive the second supplier addition, or they didn't know to ask for it.
What people try (and why each one falls short)
You have probably tried at least one of these. Here is why each one only goes so far.
Manual stock buffers in spreadsheets
You export a CSV from the supplier portal once a week, subtract a fudge number per row, and re-upload to Shopify. This works on the good days. It falls apart when:
- The supplier adds new colors mid-cycle and your spreadsheet doesn't know about them.
- A different team member runs the upload next time and uses a different fudge.
- You add a second supplier and the spreadsheet doubles in maintenance time.
It is the duct tape of inventory. It will hold for a while.
"Low stock" alerts and manual locks
You set Shopify's low-stock threshold to, say, 5, and tell yourself you'll watch the alerts. The alerts fire. You're decorating a job. The variant sells one more time before you remember to lock it. The customer expects a shirt; you end up writing the apology email anyway.
This is not a tool failure — it is a human-attention failure. The alert assumes you can keep up. You can keep up some weeks. You can't keep up every week.
Locking variants when stock dips below a threshold
Some store owners hide variants below a chosen number. This trades overselling for under-selling. You stop disappointing customers who order what isn't there. You also stop shipping customers who would have happily bought the four units you do have. For a high-volume store, the lost orders add up faster than the refunds did.
Custom developer build
You hire a developer for $5,000–$15,000 to write a per-SKU sync against your supplier's API. It works for the first quarter. Then the supplier adds a new endpoint, or rotates credentials, or your developer changes jobs, and the build needs maintenance you didn't plan for.
This works at very high scale, with a permanent in-house engineer, against one supplier. Most apparel stores are not in that shape.
CSV upload "as needed"
You re-upload the supplier's CSV when something seems wrong. This catches the catastrophic cases. It does not catch the "we sold one of nothing" cases that happen during normal business days.
What inventory actually needs to do
Strip the tools and the noise. The job your inventory has to do is straightforward.
It needs to:
- Refresh from the supplier on a fast enough schedule that the lag between supplier reality and Shopify reality is shorter than your average sell-through window. For most apparel stores, that means several refreshes per day on stock, daily on prices.
- Read each warehouse correctly. If the supplier has eight warehouses, your inventory tool needs to know about all eight, not collapse them. Then it needs to give you a setting that says: combine into one Shopify location (most dropshippers), filter to the warehouses you actually pull from (regional shipping), or map each one to a Shopify location (multi-location stores).
- Apply a buffer when you want one. A 5-unit safety margin per variant absorbs almost all of the lag. The cost is a few unsold units per cycle. The benefit is the refund and the customer you don't lose.
- Stay in sync without a human running it. Schedule, retry, alert if something fails — without you having to remember.
This is not a feature wish list. It is the structural minimum of an apparel-store inventory system that doesn't oversell. Every reputable Shopify supplier-integration app does some of this. The category specifically built for apparel does all of it.
A category of Shopify apps called supplier integration apps — sometimes "supplier sync apps" or "wholesale catalog apps" — connects your supplier's data directly to Shopify. They keep stock fresh, write each warehouse to the right Shopify location, apply the buffer, and run on a schedule you don't have to babysit. Your job becomes picking the right one for your supplier and your store shape, not running the spreadsheet.
What to read next
If overselling is the pain you're trying to fix, the next two articles will get you there:
- Buyer's Guide: How to Evaluate a Shopify Supplier Integration App — the nine criteria that actually separate the apps in this category, including sync cadence and inventory mapping.
- Multi-Warehouse Inventory on Shopify: Combine, Filter, or Map? — the three sane ways to handle multi-warehouse supplier inventory, and how to pick the one that matches your store.
FAQ
Am I the only one this happens to?
No. Overselling is one of the most common pain points for Shopify apparel stores in the U.S. and Canada — almost every multi-supplier decorator and dropshipper has lived through it. The shape of the problem is industry-wide; the cost varies with how often it happens to your store.
Is it a Shopify problem or a supplier problem?
It's the gap between them. Shopify is fine at displaying whatever stock count you (or your integration tool) write into it. The supplier is fine at maintaining their own warehouse-level stock. The gap is the data path between them — how often it refreshes, how it maps warehouses, whether it applies a buffer.
Can I just use a spreadsheet?
Yes, until you can't. A spreadsheet works for a single-supplier store with a few hundred variants and one person doing the uploads on a fixed schedule. As soon as you add a second supplier, double the SKUs, or another team member starts running the upload, the spreadsheet stops being a tool and starts being a job.
How big do I have to be before this is worth fixing?
Most apparel stores hit the worth-fixing line somewhere around 100 SKUs and 20 orders a week. Below that, manual buffers and weekly CSV refreshes can hold. Above that, the math on overselling refunds, lost customers, and team time pulls ahead of the cost of a supplier integration app.
What's the simplest first thing I could try?
Two cheap moves. One: instrument your overselling rate. Count how many orders a week you can't fulfill from supplier stock as ordered. Two: bake a 5-unit buffer into your next CSV upload. The buffer alone won't fix the problem long-term, but it will give you a few weeks of breathing room while you evaluate the category.
Is there an app for this?
Yes — supplier integration apps for Shopify, which connect directly to your apparel supplier's data and keep stock, prices, and orders flowing without a spreadsheet. The shortlist of capabilities to compare is in the buyer's guide. Supply Master is one of them — top-rated for apparel-supplier integration in the U.S. and Canada at 5.0★ on the Shopify App Store. Try it free on the App Store or email support@comstack.com and we'll set it up for you.
If you're losing one order a week to overselling, fix it before it costs you the customer.