Why does my product show in stock for some customers but sold out for others?
Some shoppers see a buy button, others see sold out on the exact same product. Here's how to track down whether it's Markets, inventory locations, caching, or a variant setting.
What's going on
A merchant notices that the same product page shows different availability to different people: one customer says the item is sold out, another places an order for it minutes later, and nothing in the product editor looks wrong. It's not a rare glitch, it recurs often enough that it gets flagged repeatedly in merchant forums, usually alongside guesses about geolocation, browser caching, or device differences.
The confusing part is that several genuinely different Shopify mechanisms can produce the exact same symptom, so "it's random" reports are usually not random at all, they're determined by which market, inventory location, or cached page a given visitor happens to land on. Sorting out which mechanism is at play requires checking a few specific admin screens rather than guessing.
Left unresolved, this typically costs sales, since customers bounce off a false sold-out page, or creates overselling risk, since customers buy something a specific location can't actually fulfill, so it's worth diagnosing precisely rather than just refreshing the page and hoping it clears up.
Why it happens
Shopify tracks inventory per location, not as one global number, and Shopify Markets can assign different availability rules, and sometimes different fulfilling locations, to different regions. A visitor whose storefront session resolves to a market backed by a stocked location sees in stock; a visitor resolving to a market whose assigned location has zero units, or whose product was excluded from that market entirely, sees sold out, even though it's the identical product page and identical global inventory count.
Separately, storefront caching, whether from an app or a CDN layer in front of the store, can serve a stale snapshot of a page to some visitors after inventory changes, so two people loading the page seconds apart can see different states purely because one got a cached copy and the other didn't. Per-variant settings like continue-selling-when-out-of-stock can also create what looks like a location or device pattern when it's really just variant-by-variant configuration.
5 ways to fix it
Check whether the product or variant is restricted to specific Markets
In Shopify admin, go to Settings > Markets and check each market's product settings, since Shopify lets you explicitly include or exclude a product from a given market, and set market-specific pricing or availability. If a variant was accidentally excluded from a market, or only added to one, visitors whose storefront resolves to that market will see it as unavailable while everyone else sees it fine. This is worth ruling out first because it's the most common cause of this exact symptom, and it only takes a few minutes to check.
Confirm inventory is stocked at the location(s) serving each market
Shopify tracks inventory per location rather than as one global number, and which location fulfills a given order depends on your shipping and location settings, which can vary by market. Go to Products > Inventory and check stock levels location by location for the affected SKU. If a customer's order routes to a location with zero stock, the storefront can correctly show it as out of stock for that visitor even though another location a different customer routes to still has units. Adding stock at the right location, or reviewing which locations serve that market, is a free, native fix.
Rule out caching before assuming it's an inventory bug
Storefront pages, especially with third-party caching apps or a CDN/proxy in front of the store, can serve a stale sold-out snapshot to some visitors until the cache expires or is purged. Test by loading the product page in an incognito window, from a different network, and with a cache-busting query string appended to the URL. If the stale version disappears, the underlying inventory is fine and you just need to check any caching app or CDN setting for a shorter cache duration or a manual purge option. This explains reports where the same visitor sees different results a few minutes apart, or where it seems to correlate with device or browser rather than location.
Check the continue-selling-when-out-of-stock setting on each variant
Each variant has its own setting for whether it can still be sold once its tracked inventory hits zero. If some variants have this turned on and others don't, customers landing on different variant URLs, whether from ads, saved links, or direct variant selection, will see availability that looks inconsistent but is actually variant-specific configuration. Standardize this setting across variants of the same product if the difference isn't intentional.
Look for a country-redirect app or duplicate storefront pulling from a different inventory source
If the store uses a geolocation or country-redirect app, multiple regional domains, or a separate storefront synced by an integration, visitors can be silently routed to a version of the catalog that isn't reading the same live inventory feed, causing a lag or mismatch. Audit any installed geolocation or multi-storefront apps and confirm they read inventory live from Shopify rather than from a cached or periodically synced copy.
Bottom line
This is almost always a configuration issue inside Shopify's own Markets and inventory-location settings, or a caching layer sitting in front of the storefront, not a platform bug, and not something that generally needs a paid app to fix. Work through the Markets and location checks first since they're free and native, and only look at a caching or geolocation app if those come back clean.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.