ClearStock is live on the Shopify App Store.Install free →

← All blogs

Guides8 min read

Shopify inventory adjustments: the audit trail you already have

Shopify inventory adjustments: how the adjustment history works, the reason list worth enforcing, and the patterns that predict shrinkage before counts do.

InventoryX is in development and not available today. ClearStock is the live Shopify app.

Short answer: every inventory change in Shopify — manual edits, orders, receiving, app holds — is recorded automatically in an adjustment history you can open from any product page: who made the change, when, what state it moved, and why (if a reason was picked). The admin keeps 180 days per product; beyond that, the Inventory adjustment changes report lets you slice adjustments by SKU, location, staff member, app, and reason. Most stores never open either screen — and then wonder why they can't explain a variance.

Below: how the trail actually works (verified against the Shopify Help Center, October 2026), and a before/after comparison of two months of adjustment logs from a real-shaped store — messy versus disciplined — because the difference between the two is what shrinkage detection looks like in practice.

First, the mechanics in four facts

  1. Two edit methods, two trail entries. Click an editable quantity and you get Set to (record the exact number after a count) or Adjust by (record a movement from an origin to a destination — e.g., from your location to Inventory removal). With Set to, the history shows the reason you selected; with Adjust by, it shows the movement, like "Moved to Safety stock" (Shopify Help Center, "Viewing inventory adjustment history," accessed October 2026).
  2. Reasons are a fixed list, chosen at edit time: Correction (the default), Count, Damaged, Promotion or donation, Received, Return restock, Theft or loss. If you use Set to with no reason selected, the activity column reads "Manually adjusted" — which is audit-speak for "we'll never know." (Adjust by always shows the movement, like "Moved to Safety stock," even without a reason.)
  3. Automatic changes are logged too. Orders, draft-order reservations, transfer receipts, app holds — each shows up as a system activity like "Reservation created" or "Transfer created," with per-state deltas.
  4. One blind spot: the bulk editor changes quantities without recording a movement trail. If you bulk-edit inventory, the history can't tell you what moved where. Use it knowingly (the CSV has its own validation rules if you're doing bulk that way).

The 180-day window is the part that surprises people. Per-product history is bounded; the report is the long memory. If you're not on a plan tier with the reports you need, export the adjustment data periodically — the trail you don't capture is the trail you can't reconstruct at claim or discrepancy time (counts and their cadence are a separate discipline).

The before/after: two months of adjustment logs

Same store, 480 SKUs of pet treats and aquarium supplies, two staff plus the owner, receiving weekly. The only thing that changed between the two months was reason discipline.

Before (March) — an excerpt of the log (7 of the month's 19 adjustments shown):

Date Activity Created by Available
Mar 4 Manually adjusted Kayla 142 → 138
Mar 9 Manually adjusted Kayla 61 → 55
Mar 14 Inventory correction Owner 300 → 297
Mar 17 Manually adjusted Kayla 88 → 84
Mar 21 Inventory correction Owner 210 → 205
Mar 26 Manually adjusted Kayla 55 → 51
Mar 28 Manually adjusted Devin 143 → 140

Nineteen manual adjustments in the month. Fourteen read "Manually adjusted." When a supplier invoice came in short 6 units, there was no way to tell whether those units had been damaged on arrival, given away at a market stall, or walked out the back — the log had the what but deliberately recorded no why. The end-of-quarter count found 1.9% shrinkage and zero explainable causes.

After (May) — reasons enforced, same staff:

Date Activity Created by Available
May 2 Damaged Kayla 142 → 138
May 6 Inventory manually counted Devin 61 → 59
May 9 Inventory received Owner 300 → 360
May 12 Theft or loss Kayla 88 → 86
May 15 Promotion or donation Owner 210 → 202
May 19 Inventory manually counted Devin 55 → 53
May 23 Items restocked Kayla 143 → 145

Same volume of changes, completely different information. Two things surfaced immediately:

  • Kayla's "damaged" entries clustered on Fridays — the day the market stall ran. That's not damage, that's unrecorded stall giveaways. The fix took one conversation and a new stall rule: log giveaways at the stall with the Promotion reason.
  • "Theft or loss" appeared twice in May and zero times in March — not because theft started in May, but because March had no vocabulary for it. The reason list didn't create the shrinkage; it made it visible.

The patterns that predict shrinkage

The adjustment report is where the patterns live, because it can filter by staff member, location, and reason over months. Four patterns worth checking monthly:

  1. Reasons collapsing to "Correction." When Correction dominates, the reason field is decoration, and your audit trail is a headcount of mismatches. Rule to enforce: Correction is for genuine data-entry slips; a damaged unit gets Damaged, a count fix gets Count.
  2. One staff member's adjustments skew systematically downward. A person whose edits are almost always negative while their counts always "reconcile" is either guessing at quantities (training problem) or concealing (control problem). Either way, the report shows it; the history alone won't, because it's per-product.
  3. Adjustments spiking right before counts. If quantities get "corrected" in the week before a count, the count is being pre-cleaned instead of measuring reality. This is the single most reliable tell that the count process has been captured.
  4. Theft-or-loss and Damaged entries with no follow-through. A damaged unit should end up written off or returned to supplier eventually; a Theft or loss entry should trigger something. Reasons logged with no downstream action are noise — and repeated noise is how real losses hide.

None of these patterns are proof of anything. They're questions with timestamps attached — which is exactly what you need when you sit down to investigate a discrepancy or when you're building the case for shrinkage controls that don't treat every staff member as a suspect.

The reason discipline, as policy

One page, five rules:

  1. No unsourced quantity edits. Every manual change picks a reason from the list. "Manually adjusted" appearing in the log at all is a coaching moment, not a style choice.
  2. Received stock enters through receiving, not Adjustment by. POs and transfers create their own trail entries; hand-typing received units in as quantity edits manufactures unexplained stock and breaks supplier reconciliation.
  3. Counts adjust with the Count reason, on the day of the count. Backfilled count corrections are indistinguishable from fabrications.
  4. Damaged and Theft or loss entries get a same-day note — what happened, in the note field, even though the reason is already selected. Two months later, the note is the difference between a claim you can substantiate and one you can't.
  5. Bulk editor is restricted to people who understand it skips the movement trail — or banned outright if you rely on the adjustment history for accounting.

Common questions

Where do I see Shopify inventory adjustment history? Open the product (or variant) page, scroll to the Inventory section, and click View adjustment history. You'll see each change with date, activity, who made it, and the per-state quantities. The per-product view shows the last 180 days (Shopify Help Center, as of October 2026).

How far back does Shopify keep inventory adjustment history? 180 days per product in the admin view. For anything older, use the Inventory adjustment changes report, which can filter and analyze adjustments across SKU, location, staff member, app, and adjustment reason.

What are the Shopify inventory adjustment reasons? The fixed list is: Correction, Count, Damaged, Promotion or donation, Received, Return restock, and Theft or loss. If you use Set to with no reason selected, the adjustment history shows "Manually adjusted" — Adjust by always shows the movement. Reasons are chosen at edit time in both the Set to and Adjust by flows.

Why does an inventory change show I didn't make? Most unexplained entries are automatic: orders committing stock ("Reservation created"), transfer receipts ("Transfer created"), app holds and releases, or system data corrections. Open the adjustment history and check the Activity column — it names the system process. Apps you've installed can also adjust inventory, and they're named in the Created by column.

Can I export inventory adjustment history in Shopify? The Inventory adjustment changes report is the analysis surface; export availability depends on your plan tier. If your plan doesn't include the report, the per-product 180-day history is the only native trail — which is why stores that depend on it export it on a schedule before entries age out.

Next step: open the Inventory adjustment changes report (or three of your biggest SKUs' histories if you don't have it) and look at one thing: what share of the last 90 days' manual entries say "Manually adjusted" or "Correction." If it's most of them, your audit trail exists but isn't saying anything — and enforcing the reason list costs nothing and takes one team meeting.