Skip to content

Adjustment history CSV

One row per stock change. Adjustment is required, as a whole number such as -2 or 5. Every other column can be left out of the file, or left blank.

Download the adjustment history template, or press Download template in Shelfcast with Adjustment history chosen. It has two made-up changes for you to replace.

Imported adjustments are a record only. They show in History with the source Imported history, and stock in Shopify isn’t changed.

Column What to write Also accepted
Date When the change happened, with or without a time, in your store’s timezone. Blank means the time you import it. Example: 2026-01-20 09:30 Created at, Created, Adjusted at, Time, Timestamp, Date adjusted
SKU The product’s SKU in Shopify, in any capitals. Example: EXAMPLE-MUG-BLUE Variant SKU, Product SKU
Barcode Any of the product’s barcodes in Shopify, exactly, leading zeros included. UPC, EAN, GTIN
Product The product’s name. Used only when Shelfcast can’t find the product. Example: Example mug Product title, Title, Item, Product name
Variant The variant’s name. Used only when Shelfcast can’t find the product. Example: Blue Variant title, Option
Location The name of the Shopify location, in any capitals. A name that doesn’t match is kept as written. Example: Main warehouse Warehouse, Store
Adjustment (required) How much stock changed: a whole number other than 0. Negative for stock that went out. A + is optional. Example: -2 Quantity change, Change, Delta, Adjusted by, Quantity, Qty
Quantity after How many there were after the change: a whole number. Example: 22 New quantity, On hand after, After, New
Reason Why it changed. See reasons below. Example: Damaged Adjustment reason, Type
User Who made the change. It’s shown under By in History. Example: Sam Rivera Staff, Staff member, Adjusted by user, By, Employee
Note Any text. Notes, Comment

Shelfcast reads the reason by what it contains, in any capitals, and keeps your original wording in the entry’s note:

The reason contains Imported as
“receiv” Received
“count” or “stocktake” Stock count
“damage” Damaged
“shrink”, “theft” or “loss” Shrinkage
“restock” or “return” Restock
“correct” Correction
anything else, or nothing Other

Shopify’s own reason codes, as Shelfcast’s export writes them, are read as they are.

If there’s a note too, the entry’s note reads as the reason and the note together, such as “Damaged – Dropped in the stockroom”.

  • Products and locations are matched where possible. Rows that don’t match are still imported, with the product, variant, SKU and location names from the file, so history for products you no longer sell is kept.
  • Products are found by SKU, whatever the capital letters, then by barcode.
  • Every row is a new entry. There’s no duplicate check, so importing the same rows twice puts them in History twice.

→ Read your inventory history

Nothing in a skipped row is imported. Each reason says what to fix. Press Download skipped rows for a file of just those rows, with the reason in an Error column, then fix them and import that file. Don’t import the whole file again: the rows that came in the first time would show up twice. → When rows are skipped

Message What to do
“Adjustment must be a whole number other than 0, like -2 or 5.” Write how much stock changed. A change of 0 isn’t imported, so delete those rows.
“Quantity after must be a whole number, like 22.” Write a whole number, or leave it blank.
“Date must be a date, written like 2026-01-20 or 2026-01-20 09:30.” Write the date as year-month-day, or leave it blank. See how dates are read.

→ Import a CSV explains how numbers and dates are read, and how to save a CSV from your spreadsheet.