Home › Blog › Shopify inventory history shows who moved your stock and why

Shopify inventory history shows who moved your stock and why

Shopify inventory history, which Shopify calls adjustment history, logs every change to a tracked variant's stock for the last 180 days. Each row says what happened, who or what did it and how each stock number moved. When a count makes no sense, the answer is almost always in there.

Shopify inventory history row where an app reservation drops available from 20 to 6 while on hand stays at 20
No sale and no shipment, yet 14 fewer to sell. One row says who did it.

On this page

  1. Where to find inventory history in Shopify
  2. What each column in the adjustment history means
  3. Created by is where most answers are
  4. The activities Shopify adds on its own
  5. Why so many rows just say Correction
  6. Inventory history for every variant, or older than 180 days
  7. Five stock changes and how each one looks in the log
  8. What this means for your low stock alerts
  9. If you only do one thing this week

Your low stock alert for the white linen shirt in medium arrived at 3:12am. It said 6 left. Your threshold is 10.

At 11pm it had 20. Nobody ordered the shirt overnight. You check the shelf in the morning and count 20.

So where did 14 shirts go?

They did not go anywhere. They are still on the shelf. Shopify's inventory history for that variant has one row from 3:12am that explains it. It even names who did it. By the end of this post you will be able to read that row.

Where to find inventory history in Shopify

Shopify keeps the log on each variant. To open it:

  1. From your Shopify admin, go to Products.
  2. Click the product.
  3. If it has variants, click the variant you want.
  4. In the Inventory section, make sure Inventory tracked is on.
  5. Click View adjustment history.

Three limits catch people out.

For anything wider or older there is a report, which comes later.

What each column in the adjustment history means

Every row is one change. Here is what each column tells you:

ColumnWhat it tells you
DateWhen the change happened
ActivityWhat caused it: an order, a return, a transfer or the reason someone picked
Created byThe staff member, app or sales channel that made the change
UnavailableUnits set aside after the change, such as damaged stock or an app hold
CommittedUnits already spoken for, such as unfulfilled orders and draft orders
AvailableWhat a customer can still buy
On handEverything at the location: committed plus unavailable plus available
IncomingUnits on the way from incoming transfers

Each number column shows the change and the new total. If the four stock numbers are new to you, available vs on hand explains how they fit together.

The trick is to stop reading the row left to right. Instead, ask which columns moved. That tells you what kind of change it was before you read a single word.

Back to the shirt. The 3:12am row shows available down 14 and unavailable up 14. On hand did not move. So the shirts were set aside, not sold.

Created by is where most answers are

The Created by column names the staff member, app or sales channel that made the change. It is the fastest way to solve a mystery.

The app case is the one that causes the most confusion. Threads on the Shopify Community forum with titles like "Why is my inventory count increasing unexpectedly on its own?" come up again and again. Stock almost never changes by itself. Even Shopify's own changes are named in the log. If Created by names an app, that app did it. Open its settings and look for how often it syncs and which system it treats as the true count.

For the shirt, Created by names the wholesale app you installed in the spring.

The activities Shopify adds on its own

Most activities are easy to read. An order is an order. A reason you picked is the reason you picked.

Shopify also writes rows that nobody on your team created. Its help page lists six of them. Here is what each means in plain terms:

ActivityWhat happenedWhat to check
Reservation createdA draft order or an app set units aside. Draft orders show as committed. App holds show as unavailable.Which draft order or app it is. Then whether the hold is still needed
Reservation updatedAn existing hold changed, for example a draft order was editedSame as above
Reservation deletedThe hold ended and the units went back to availableNothing, unless it keeps happening
Transfer createdAn incoming transfer was marked as received, so units were addedThat the number matches what arrived
Removed from locationSomeone unassigned a location from the product, so its stock there is no longer countedWhether that was on purpose
Data correctionShopify fixed an error in its own count automaticallyIf it repeats on one variant, ask Shopify support

That is the whole story of the shirt. Reservation created, by the wholesale app, 14 units moved to unavailable. A quote for a wholesale buyer was holding them. The alert was right. Only 6 were genuinely for sale.

Removed from location is the one that looks most alarming. Stock at one location seems to vanish in a single row. The units are still there. Shopify just stopped counting them at that location. If you sell from more than one, alerts across every location covers what else to watch.

Why so many rows just say Correction

Open the history on a busy variant and you may see Correction again and again. That is because Correction is the default. Shopify uses it whenever nobody picks a reason.

There are seven reasons to choose from when you adjust stock by hand:

There is a catch. Shopify's help page says the Add reason option isn't available in the Shopify mobile app. So every change made on a phone is logged as Correction.

Six months later that matters. You cannot tell a miscount from a theft from a delivery. Losses hide inside a column of Corrections. A stock count that does not match the shelf gets much harder to explain.

The fix is a habit. When you adjust stock on a computer, click Add reason and pick the real one. It takes one click. Received for deliveries. Count after a count. Damaged and Theft or loss when that is what happened.

Inventory history for every variant, or older than 180 days

The product page shows one variant and 180 days. For anything wider, go to Analytics, then Reports. Open Inventory adjustment changes.

Shopify describes it as showing all inventory adjustments made during a selected time period. You can filter it by SKU, location, staff member, app or adjustment reason. That turns questions you could never answer one variant at a time into a few clicks:

A second report, Inventory adjustments by count, shows how many adjustments were made instead of how many units moved. It is a quick way to spot an app writing to the same variant dozens of times a day.

Know one limit. Shopify added these reports in July 2025 and says they keep history past 180 days from then on. They do not reach further back than that. If a question needs older data than your store has, nothing in Shopify will answer it.

The history is also where you find the date a variant sold out. That is the number you need to correct days of inventory remaining, which counts sold out days as days nobody wanted it.

Five stock changes and how each one looks in the log

When a number surprises you, find the row and match it to one of these:

What you sawWhat the row showsWhat it means
Available dropped with no new ordersUnavailable up by the same amount. Reservation created. An app in Created by.An app is holding stock
Stock went to 0 overnightAvailable and on hand drop together. An app in Created by.A sync app overwrote the count
Stock went up with no deliveryA canceled order, Return restock or Transfer createdUnits came back or arrived
Stock at one location vanishedRemoved from locationThe location was unassigned from the product
The count jumped to a round numberCorrection, with a person in Created bySomeone typed over the old number, often after a count

If none of these fit, look at the rows around it. A change often makes sense only next to the one before it.

What this means for your low stock alerts

A low stock alert compares your threshold with available. Stockwell reads available. Available vs on hand explains why nearly every alert does.

So anything that moves available can fire an alert. A sale, yes. But also an app hold, a draft order or a sync that writes a lower number. Nothing has to leave the building.

When an alert looks wrong, open the Shopify inventory history for that variant before you touch the threshold. Most of the time the alert was right about available. The history tells you why available moved. Two causes are worth fixing at the source: an app hold that should have been released and a sync that writes the wrong number. An alert can't fix either. It can only tell you fast.

The reverse happens too. If an alert should have fired and didn't, check that the variant is tracked. Then check whether an app keeps writing the number back up.

If you only do one thing this week

Open the inventory history for your three best sellers. Read the last 20 rows on each.

For every name in Created by that you do not recognize, find out what it is and why it is changing your stock.

Then start picking a real reason every time you adjust stock by hand. In six months your history will answer questions it can't answer today. The wider picture of alerting starts at low stock alerts on Shopify.

Know before a SKU hits zero

Stockwell watches every variant at every location and emails your team when stock falls under the level you set. Install it from the Shopify App Store and the first alert is running in a couple of minutes.

Get it on the Shopify App StoreFree plan covers 500 SKUs with a daily summary. Paid plans add instant alerts and more recipients. No card needed to start.