But real businesses are messier than that.
You might have products sitting in a showroom. Or units reserved for retail partners. Or damaged items waiting on a return label. Or marketing samples. Or a chunk of inventory that you want to count, but you absolutely do not want Shopify to sell, allocate, or route into fulfillment.
That is the whole point of tracking inventory that is not for sale or fulfillment. You still want the number to be real. You just do not want it involved in new orders.
Shopify has gotten better here. You can now view and update on hand inventory at any active location, even if that location does not fulfill orders for that variant. That last part matters.
Let’s break down what this means, how it shows up in the admin, and how to actually use it day to day without confusing your team.
The core idea (and why this matters)
Shopify inventory is split by location. Each location can be a warehouse, a store, a 3PL, a pop up, a storage unit, whatever. Variants can be stocked at locations, and locations can be set to fulfill online orders.
Historically, if a location did not fulfill orders for a variant, inventory management at that location could feel awkward. You could end up with stock that exists in real life but is hard to represent cleanly in Shopify, especially if it is intentionally “not sellable”.
Now, Shopify lets you:
- View on hand inventory at any active location
- Update on hand inventory at that location
- Even when that location does not fulfill orders for that variant
So you can keep accurate counts across the business without accidentally making stock available for purchase.
Quick definitions (because Shopify uses specific words)
Before we go further, you need to know what Shopify is showing you.
On hand
This is the physical quantity recorded at a location. Think “what is sitting there”, not “what can be sold”.
Committed
Units that Shopify has reserved for orders. Usually these are tied to unfulfilled orders or transfers. They are spoken for.
Unavailable
Inventory that exists but is not sellable, often because it is reserved, damaged, set aside, or otherwise blocked by an inventory state or workflow.
Available
The number that can be sold from that location. Usually, Shopify calculates it based on on hand minus committed and unavailable, depending on configuration.
And here is the important part for this article.
If a location is not used to fulfill new orders for a variant, then Shopify will not show “available” at that location. Because it is not relevant. It is not a selling location for that variant.
What’s new : inventory visibility for non fulfilling variants
New behavior for variants that don’t fulfill orders from a location
For variants that don’t fulfill orders from that location :
- On hand inventory is now shown and can be updated
- Any existing committed or unavailable quantities remain visible until they’re reduced to zero
- Available quantity won’t be shown because the location is not used to fulfill new orders
This is a subtle but big quality of life improvement.
It means you can use Shopify locations for tracking stock that you do not want sold. Without losing visibility. Without having to fudge numbers somewhere else.
How it displays in Shopify admin
Shopify is pretty explicit about it.
- On the Inventory page, the Available column will show as “—” with a warning that says :
- “Location doesn’t fulfill this variant”
- On the Product variant page, the Available field for that location is shown as blank, and you get a warning on the location :
- “Location doesn’t fulfill this variant”
That “—” is Shopify’s way of saying : stop looking for “available” here. This location is not part of new order fulfillment for this variant.
But you can still track on hand.
What changed : existing committed orders can still use it
Another important detail.
Even though on hand inventory at these locations won’t be used to fulfill new orders, it can continue to be used for fulfilling existing committed orders.
In plain English : if you already had commitments tied to that location, Shopify will still respect them and let them be fulfilled. It is not going to break historical allocations just because the location is not considered a fulfilling location for new demand.
Also, Shopify will still show committed and unavailable quantities if they exist, and keep them visible until they hit zero. That helps you clean up the past while setting up the future.
Common scenarios where “track but don’t sell” inventory is useful
If you’re wondering whether you actually need this, you probably do. Here are the most common cases.
1. Showroom or display stock
You want to track 3 units sitting on a shelf for customers to touch. You do not want those units sold online.
2. Damaged or QA hold inventory
You received a batch, something is off, so it sits in a “Hold” area. You still want to count it. But it should never inflate availability.
3. Marketing samples and influencer kits
You want to know how many sample units you have left. But you are not “selling” them.
4. Retail or wholesale allocations
You might allocate 50 units for a physical retail partner or a wholesale drop. It exists, it is on hand, but it is not meant to fulfill DTC orders.
5. Internal use items
Spare parts, replacement units, internal consumption. Track it for accounting and planning, but not for storefront availability.
How to set this up in Shopify without making a mess
Step 1 : Create a dedicated location (or repurpose one)
You need a location that represents the bucket of inventory that is not for sale or fulfillment.
Examples :
- “Showroom”
- “Damaged”
- “Samples”
- “Wholesale Reserve”
- “QA Hold”
Make sure it is active. Shopify’s new behavior applies to any active location.
Step 2 : Ensure that location is not fulfilling new orders for those variants
There are a few ways businesses end up here :
- The location is not set up to fulfill online orders at all
- The location fulfills online orders, but the variant is not assigned / not used there for fulfillment
- You intentionally remove that location from being a fulfilling option for that variant
However your setup works, the key outcome is the same : Shopify will treat that location as not fulfilling the variant for new orders.
And that’s what triggers the “available is —” behavior while still letting you edit on hand.
Step 3 : Update on hand quantities at that location
This is where the new improvement is most noticeable.
You can go into the Inventory view and set the on hand quantity at that non fulfilling location. That stock is now visible, trackable, and reportable as on hand inventory.
But it will not show as available there. Which is exactly what you want.
Step 4 : Train your team on what “—” means
This sounds silly, but it will save you tickets and Slack threads.
“—” does not mean zero. It does not mean missing data. It means “available does not apply here”.
If you have warehouse staff, retail staff, and someone doing customer support all looking at the same screen, this one symbol will confuse somebody unless you call it out.
How to work with committed and unavailable quantities at non fulfilling locations
Shopify will keep showing :
- committed
- unavailable
…if they already exist at that location, until they reduce to zero.
This is useful, but it also means you might see numbers that look “stuck” for a while.
A typical example :
- You had old orders that were committed to Location A
- You changed routing rules or setup so Location A no longer fulfills that variant for new orders
- Those existing orders are still committed there, and Shopify will still show them
This is not a bug. It is Shopify keeping your past allocations intact.
Operationally, the clean way to handle this is :
- Fulfill or cancel the remaining committed orders
- Complete any transfers that are in progress
- Resolve any unavailable stock states (damaged, on hold) according to your process
Eventually, those quantities hit zero, and what remains is just on hand tracking.
Reporting and planning : what you should and shouldn’t rely on
If you start tracking non sellable inventory in Shopify locations, you need to be clear about what numbers you use for what decisions.
Use on hand for :
- total stock visibility across the business
- accounting reconciliation (depending on your setup)
- internal planning
- shrink and damage tracking
- sample stock monitoring
Use available for :
- what customers can actually buy
- what your fulfillment team should pick for new orders
- stock levels that power merchandising decisions
And remember : at a location that does not fulfill the variant, available will not be shown. So if you are building internal spreadsheets or using an inventory app that expects “available per location”, you might need to adjust your logic to use on hand instead for those locations.
A simple workflow that works (and keeps things sane)
Here is a basic, practical setup that tends to work for most stores :
- Have one or more “selling” locations (warehouse, 3PL) that fulfill online orders.
- Create one “non selling” location (Samples, Damaged, Showroom).
- When items become non sellable, move them operationally, then update on hand at the non selling location.
- Do not try to force availability there. Let it be “—”.
- Review that location weekly or monthly to decide what comes back into sellable stock, what gets written off, what gets replaced.
It is boring. That’s good. Inventory systems should be boring.
The thing to watch out for
People sometimes assume that if inventory exists in Shopify, it will affect what customers can buy.
Not anymore, not in this case.
You can have 200 units on hand at “Wholesale Reserve”, and Shopify can still show “sold out” online if your selling locations have zero available. That is intentional.
So if someone on your team says “but we have stock”, the next question should be :
“Where is it, and is that location fulfilling this variant ?”
Nine times out of ten, that resolves the confusion.
Wrap up
You can now track inventory in Shopify that isn’t for sale or fulfillment in a clean, honest way.
- On hand is visible and editable at any active location, even when that location does not fulfill orders for that variant.
- Shopify will still show committed and unavailable quantities there until they drop to zero.
- Shopify will not show available at that location. You will see “—” (Inventory page) or a blank field (variant page), plus the warning :
- “Location doesn’t fulfill this variant”
- That on hand inventory won’t be used for new orders, but it can still be used to fulfill existing committed orders.
If you have ever kept a side spreadsheet for samples, damaged stock, or reserved units, this is your sign to stop doing that. Put it in a location, track it properly, and let Shopify be the source of truth.
Conclusion
By leveraging Shopify's enhanced inventory visibility features for non-fulfilling variants, merchants can maintain accurate and transparent stock records across all locations. This improvement eliminates the need for external tracking methods such as spreadsheets for special inventory categories like samples, damaged goods, or reserved stock. With clear definitions and workflows in place, businesses can confidently manage their inventory, ensuring that on hand quantities are visible and committed orders are fulfilled appropriately while avoiding confusion over available stock at non-fulfilling locations. Ultimately, this leads to more efficient operations, better planning, and a single source of truth within Shopify’s system.
FAQs (Frequently Asked Questions)
What does 'on hand' inventory mean in Shopify's inventory tracking ?
'On hand' inventory refers to the physical quantity of stock recorded at a specific location. It represents the actual units sitting there, regardless of whether they are available for sale or fulfillment.
How does Shopify handle inventory at locations that do not fulfill orders for a variant ?
Shopify now allows you to view and update 'on hand' inventory at any active location, even if that location does not fulfill orders for a particular variant. While 'available' quantities won't be shown for such locations, you can still track physical stock without making it available for purchase.
What is the difference between 'committed', 'unavailable', and 'available' inventory in Shopify ?
'Committed' inventory consists of units reserved for existing orders or transfers. 'Unavailable' inventory exists but is not sellable due to being reserved, damaged, or blocked by workflow states. 'Available' inventory is the number of units that can be sold from a location, usually calculated as on hand minus committed and unavailable quantities.
Why would I want to track inventory that is not for sale or fulfillment in Shopify ?
Tracking non-sellable inventory helps maintain accurate counts across your business without accidentally making stock available for purchase. Common scenarios include showroom displays, damaged items on hold, marketing samples, retail partner allocations, and internal use items—all requiring visibility without affecting storefront availability.
How does Shopify display non-fulfilling location inventory in the admin interface ?
In Shopify admin, the Inventory page shows the Available column as “—” with a warning stating “Location doesn’t fulfill this variant.” On the Product variant page, the Available field is blank with a similar warning on the location. This indicates that while on hand inventory is tracked, it’s not used for new order fulfillment at that location.
Can existing committed orders still be fulfilled from locations that do not fulfill new orders for a variant ?
Yes. Even if a location does not fulfill new orders for a variant, Shopify will continue to honor existing committed orders tied to that location. Committed and unavailable quantities remain visible until they reach zero, allowing smooth transition and cleanup while maintaining historical fulfillment commitments.