Why Does Shopify Say a Product's Inventory Isn't Tracked?
"Not tracked" means Shopify's Track quantity setting is off for that specific variant, so it behaves as unlimited stock — nothing decrements on a sale and it won't appear in low-stock alerts. Most of the time that's a checkbox fix. The case every other guide skips is the one where a fulfillment app already owns that variant's tracking, and Shopify's own API locks the toggle so clicking it in your admin does nothing at all.
"Not tracked" next to a variant means Shopify's Track quantity setting is off for that specific variant, not the whole product. It behaves as if it has unlimited stock: customers can buy any amount, nothing decrements when it sells, and it's invisible to your low-stock alerts and inventory reports. Most of the time this is a ten-second checkbox fix. The case almost nothing written about it covers is the one where a fulfillment app already claims that variant's tracking — and in that case, the toggle in your admin can be genuinely locked, doing nothing no matter how many times you click it.
The three reasons a variant shows "not tracked"
- The Track quantity checkbox is simply off. This is the default for a product added through the bulk editor, a CSV import with a blank "Variant Inventory Tracker" column, or a variant created through an app's API call that never set inventory management at all.
- The product type doesn't need tracking. Digital downloads, services, gift wrapping add-ons, and other line items with no physical stock to run out of are commonly left untracked on purpose — there's nothing to count.
- A fulfillment service or app has claimed ownership of the item's inventory. Print-on-demand tools (Printify, Printful), 3PLs, and Amazon's multi-channel fulfillment integration often take over inventory for the products they fulfill. Once that happens, Shopify's own tracking for that variant can stop being something you control from the product page at all.
The first two are what every existing guide on this topic covers, and covers well. The third is where they all stop, and it's the one that generates the confused Shopify Community threads — merchants who enable Track quantity, save, refresh the page, and find it's back off, or find the checkbox greyed out with no explanation.
How to confirm this is actually what's happening
Before you assume a variant is untracked, rule out the things that look identical from the storefront but aren't the same problem. A product showing endless "Add to cart" availability could be untracked, or it could be tracked with "Continue selling when out of stock" turned on — a separate setting that also removes the out-of-stock block but still counts down a real number behind the scenes. The fastest way to tell them apart: open the variant in admin. An untracked variant has no quantity field to look at at all; a tracked variant with continue-selling enabled shows a real, and possibly negative, number. If your reports show the product but its sales never move the inventory total, or the low-stock alert list never includes it no matter how many sell, that's the tell that tracking itself is off rather than just permissive.
Fixing the first case: turning tracking on for one variant
From your Shopify admin, go to Products, open the product, and scroll to the Inventory section. For a product with variants, this setting lives on each variant individually — checking it at the product level doesn't cascade down, so a product with five variants needs the box checked five times if all five need tracking. Enable Track quantity, set a starting quantity per location, and save.
If you're re-importing via CSV, the column to check is Variant Inventory Tracker. It needs the literal value shopify — blank rows import as untracked regardless of what the corresponding Variant Inventory Qty column says, which is the single most common way a bulk import silently ships hundreds of untracked variants at once.
The case where the checkbox won't stick, and why
Shopify's GraphQL Admin API models this more precisely than the admin screen shows you. Every variant's inventory sits behind an InventoryItem object with a tracked boolean — the same thing the "Track quantity" checkbox controls — and a second, less-visible field called trackedEditable, which reports whether you are currently allowed to change tracked at all. Shopify's own developer documentation defines that field but doesn't spell out, in merchant-facing terms, what flips it — the pattern that matches what merchants actually report is that once a fulfillment service or app takes over a variant's stock, that variant's tracking authority moves with it, and trackedEditable is the field built to represent exactly that state.
That's consistent with the pattern showing up in Shopify's own community forum: a merchant syncing products through Printify gets tracking working on one product, then can't replicate it on the next one. The checkbox isn't malfunctioning inconsistently — it's reflecting two different ownership states that look identical from the product page but aren't identical underneath it.
Auditing this across a whole catalog instead of one product at a time
Clicking through variants one by one to find which ones are actually untracked doesn't scale past a small catalog. The GraphQL Admin API's productVariants query returns both fields directly, so you can pull the real state for hundreds of variants in one request:
query UntrackedVariants {
productVariants(first: 100, query: "inventory_total:0") {
edges {
node {
sku
displayName
inventoryItem {
tracked
trackedEditable
}
}
}
}
}
Anything returning tracked: false is invisible to your low-stock alerts today. Anything additionally returning trackedEditable: false isn't yours to fix from the admin at all — that's a conversation with whichever app or fulfillment service owns it, not a setting to keep clicking. For the variants where trackedEditable is genuinely true, the fix can run through the same API rather than by hand:
mutation EnableTracking($id: ID!) {
inventoryItemUpdate(id: $id, input: { tracked: true }) {
inventoryItem {
tracked
}
userErrors {
field
message
}
}
}
Watch the userErrors array rather than assuming success — this is the same mutation that will tell you, explicitly, when an item's tracking isn't editable, instead of silently doing nothing the way the admin checkbox appears to. For a catalog large enough that a single 100-item page isn't enough, run the same query through Shopify's bulkOperationRunQuery mutation instead of paging by hand — it's built for exactly this kind of full-catalog export and won't hit the same rate limits a loop of individual requests would.
One mapping worth knowing if your store still runs an older integration on the REST Admin API rather than GraphQL: the REST equivalent is the variant's inventory_management field, and it only ever holds two practical values for this purpose — "shopify", meaning tracked, or null, meaning not. There's no REST field equivalent to trackedEditable; if a REST-based sync shows inventory_management: null and repeated attempts to set it to "shopify" silently revert, that's the same fulfillment-ownership state described above, and the GraphQL query above is the only way to confirm it directly.
When "not tracked" is the right answer
Don't chase this fix on everything. Digital products, services, made-to-order items with no fixed stock ceiling, and genuinely unlimited print-on-demand SKUs are correctly left untracked — enabling tracking on these just adds a number you'll have to keep resetting to avoid a false "sold out" message on something you can always fulfill. The rule of thumb: if running out is physically possible, track it; if it isn't, the untracked state isn't a bug you're carrying, it's the setting doing its job.
Why this is worth checking even when nothing looks wrong
An untracked variant that should be tracked doesn't announce itself. It sells past the physical stock you actually have, doesn't trigger a low-stock alert because there's no count to be low, and shows as perfectly healthy in every report that only counts tracked SKUs. The failure mode isn't an error message — it's an oversold order discovered when a supplier can't fulfill it. This is the same class of catalog drift our on-hand-versus-available breakdown covers from a different angle, and if your store runs more than one stocking location, an untracked variant at one location and a correctly-tracked one at another is exactly the kind of split state that turns into the concurrent-write problems multi-location setups hit once two systems both assume they're the source of truth.
Our free store scanner checks a live Shopify URL for exactly this kind of silent catalog gap in about two minutes — it won't fix a fulfillment app's ownership claim for you, but it will tell you which variants are untracked before a customer finds out by ordering something you can't actually ship. If the audit turns up more untracked stock than a single afternoon of clicking checkboxes can fix, or the trackedEditable pattern points to a sync conflict between Shopify and a 3PL, that's the kind of catalog and integration work worth talking to a Shopify developer about directly — get in touch and we'll tell you plainly what's actually going on with your setup.