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.

On this page
- Where to find inventory history in Shopify
- What each column in the adjustment history means
- Created by is where most answers are
- The activities Shopify adds on its own
- Why so many rows just say Correction
- Inventory history for every variant, or older than 180 days
- Five stock changes and how each one looks in the log
- What this means for your low stock alerts
- 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:
- From your Shopify admin, go to Products.
- Click the product.
- If it has variants, click the variant you want.
- In the Inventory section, make sure Inventory tracked is on.
- Click View adjustment history.
Three limits catch people out.
- One variant at a time. Shopify's help page is clear that you can't view the history for all of a product's variants at once.
- The last 180 days only. Shopify doubled this from 90 days in November 2024. Plenty of older guides and forum answers still say 90.
- Tracked variants only. A variant with tracking switched off has no history, because Shopify is not counting it. Finding untracked variants shows how to list them.
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:
| Column | What it tells you |
|---|---|
| Date | When the change happened |
| Activity | What caused it: an order, a return, a transfer or the reason someone picked |
| Created by | The staff member, app or sales channel that made the change |
| Unavailable | Units set aside after the change, such as damaged stock or an app hold |
| Committed | Units already spoken for, such as unfulfilled orders and draft orders |
| Available | What a customer can still buy |
| On hand | Everything at the location: committed plus unavailable plus available |
| Incoming | Units 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.
- Available down, committed up by the same amount. Something was ordered and has not shipped. An order, a draft order or a transfer marked ready to ship. Nothing has left the building yet.
- Committed down, on hand down. The order shipped. This is the moment units physically leave.
- Available down, unavailable up. Units were set aside. Damaged, held as safety stock or held by an app. They are still on the shelf.
- Incoming down, available and on hand up. A transfer or purchase order was received.
- Available and on hand move together, with no order. Somebody or something typed in a new number. A count, a manual edit, a delivery, a return or an app sync.
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.
- A person's name. Somebody edited the number by hand. Ask them. The Activity column tells you which reason they picked, if any.
- An app's name. That app wrote the number. Inventory sync tools, marketplace connectors, dropshipping suppliers and wholesale apps all change stock. Some of them overwrite Shopify's count on a schedule.
- A sales channel. An order came in through that channel, such as your point of sale.
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:
| Activity | What happened | What to check |
|---|---|---|
| Reservation created | A 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 updated | An existing hold changed, for example a draft order was edited | Same as above |
| Reservation deleted | The hold ended and the units went back to available | Nothing, unless it keeps happening |
| Transfer created | An incoming transfer was marked as received, so units were added | That the number matches what arrived |
| Removed from location | Someone unassigned a location from the product, so its stock there is no longer counted | Whether that was on purpose |
| Data correction | Shopify fixed an error in its own count automatically | If 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:
- Correction. The default, or a general fix.
- Count. You counted and the number was different.
- Received. New stock came in from a supplier.
- Return restock. A returned item went back on sale.
- Damaged. Items were damaged.
- Theft or loss. Items went missing.
- Promotion or donation. Items were given away.
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:
- Every change one app made last week
- Every Theft or loss this quarter
- Every change to one SKU across all your locations
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 saw | What the row shows | What it means |
|---|---|---|
| Available dropped with no new orders | Unavailable up by the same amount. Reservation created. An app in Created by. | An app is holding stock |
| Stock went to 0 overnight | Available and on hand drop together. An app in Created by. | A sync app overwrote the count |
| Stock went up with no delivery | A canceled order, Return restock or Transfer created | Units came back or arrived |
| Stock at one location vanished | Removed from location | The location was unassigned from the product |
| The count jumped to a round number | Correction, with a person in Created by | Someone 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.