E-Commerce

Count Real Shelf Stock and Update Shopify via CSV

Scan your shelves with your phone, merge the counts into Shopify's inventory CSV, and import. Your storefront finally matches what is actually on the shelf.

7-Day Free Trial No Credit Card Required iOS & iPadOS
Online retailer scanning product barcodes on stock room shelves for a Shopify inventory count

Why Shopify Stock Numbers Drift From Reality

Shopify only knows what you tell it. Every untracked event pushes the number in your admin away from what is physically on the shelf: a return that never got restocked, a box that arrived dinged and was quietly pulled aside, a picker who grabbed the wrong variant of two near-identical products, a receiving session where 24 units were entered as 42. None of these show up anywhere. With a few thousand SKUs, even a small monthly error rate means dozens of products where Shopify's availability is simply wrong - and you have no idea which ones.

When the drift runs in the wrong direction, you oversell. The storefront says 2 in stock, the shelf has 0, and an order comes in that you cannot fulfill. Now you write the apology email, process the refund, and hope the customer does not leave a one-star review that says "they sold me something they didn't have." For a small online retailer, those reviews are disproportionately expensive - they sit on your store forever and cost you the repeat buyers your margins depend on.

So you defend yourself, and the defense costs money too. You pad safety stock, listing fewer units than the system shows so an error cannot become an oversell - which means turning away sales on stock you actually have. Meanwhile the drift also runs the other direction: products listed as sold out with units sitting right there on the shelf. That is dead capital, invisible to your storefront and to you, quietly accumulating in every aisle.

The obvious fix - just count the shelves - does not survive contact with Shopify's admin. Counting with a clipboard and then updating products one at a time means searching for each product, opening the variant, clicking into inventory, typing the number, and saving. At 30-60 seconds per SKU, a 2,000-SKU catalog is a 20-hour data entry job, so it never happens. Shopify does support bulk inventory updates via CSV import, but filling that CSV by hand from paper count sheets just reintroduces the transcription errors you were trying to eliminate.

How DataScan Gets Shelf Counts Into Shopify's CSV Import

DataScan turns the physical count into a scan-and-type exercise. In Single Value Scan mode, you scan a product's barcode - the same EAN or UPC printed on the box that Shopify already stores in the product record - and type the quantity you see on the shelf. Scan, type, next. A hundred SKUs take 15-20 minutes. The app works completely offline, so a stock room with steel shelving and no signal is not a problem, and every count can be reviewed before export. One tap exports the whole session as a CSV or Excel file.

The Shopify side uses functionality built into every Shopify plan: inventory export and import via CSV. In your admin, go to Products, then Inventory, and export the inventory CSV for your location (choose the "All states" format - it is the one Shopify recommends). Open that file in Excel or Google Sheets next to your DataScan export, and use XLOOKUP or VLOOKUP to pull each SKU's counted quantity into the "On hand (new)" column. One important detail: fill in "On hand (new)", not "On hand (current)" - Shopify ignores the current column on import. Then import the file back into Shopify. Done. Storefront availability now matches the shelf, with no Shopify app installed, no API keys, and no integration to maintain.

Shopify's import has a built-in safety net that makes this workflow robust for a live store. When both "On hand (current)" and "On hand (new)" are present in the file, Shopify compares the current value in the file against the actual current value in your store - and rejects any row where stock changed between your export and your import, emailing you the details. So orders that come in while you are counting do not get silently overwritten; you just recount those few items and re-import. Since inventory imports cannot be undone, keep the original exported CSV as your backup before every import.

One honest limitation: DataScan is file-based. There is no live sync and no direct Shopify integration - the CSV merge is a manual step you do in a spreadsheet, and that is the trade-off that keeps the whole setup simple and cheap. If you want to remove even that step, DataScan can upload its exports to an SFTP server automatically, and third-party Shopify inventory apps (EZ Inventory, for example) can pull quantity updates from an SFTP server or URL on a schedule. That combination gives you a hands-off pipeline from shelf scan to storefront - but it is an optional advanced setup through a third-party app, not something DataScan does on its own.

How It Works: From Shelf Count to Updated Storefront

  1. Count a Section with Single Value Scan Open DataScan in Single Value Scan mode and work along the shelf: scan each product's barcode, type the quantity physically in front of you, move on. Review the list in the app before you finish.
  2. Export the Count as CSV One tap exports the session as a CSV file with every barcode and counted quantity. Email it to yourself or let DataScan upload it to your FTP/SFTP server.
  3. Export Shopify's Inventory CSV In Shopify admin, go to Products, then Inventory, and export the CSV for your location using the recommended "All states" format. Keep an untouched copy - imports cannot be undone, and this file is your rollback.
  4. Merge Counts by SKU Open both files in Excel or Google Sheets. Use XLOOKUP or VLOOKUP to fill Shopify's "On hand (new)" column with the counted quantity for each SKU. Leave "On hand (current)" untouched - Shopify ignores it on import but uses it to detect conflicts.
  5. Import Back Into Shopify Import the merged CSV in the same Inventory screen. Shopify validates each row and rejects any where stock changed since your export, emailing you the details. Recount those few items, re-import, and your storefront matches the shelf.

Meeple Depot: A Real Example

Meeple Depot is an online-only board game retailer in Denver. Owner Tom stocks about 2,200 SKUs - games, expansions, card sleeves, dice sets, and hobby paints - in a 1,200 square foot warehouse unit, and sells exclusively through his Shopify store. It is a two-person operation: Tom plus a part-timer who packs orders in the afternoons. Stock drift came from everywhere: returns that sat in a corner instead of going back on the shelf, dinged boxes pulled aside to sell as damaged copies but never adjusted in Shopify, and pick errors between expansion boxes that look nearly identical on the shelf.

The cost was very visible. Meeple Depot was cancelling 5-7 oversold orders per month, each one a refund, an apology email, and occasionally a public one-star review that specifically mentioned the cancelled order. To protect himself, Tom started padding: fast-moving games were listed with one or two fewer units than the system showed, and anything questionable was marked sold out early. That stopped some oversells but meant turning away sales on games that were sitting right there on the shelf. The only real reconciliation was a full count once a year over a miserable weekend - and the numbers drifted visibly wrong again within weeks.

The new routine took one Monday to set up. Tom split the warehouse into six zones of roughly 350-400 SKUs each. Every Monday morning he counts one zone with DataScan in Single Value Scan mode: scan the EAN on the back of each game box - the same barcode already stored in his Shopify product records - and type the shelf count. A zone takes about 50 minutes. Then the desk work: export the DataScan CSV, export Shopify's inventory CSV in the "All states" format, XLOOKUP the counted quantities into the "On hand (new)" column by SKU, and import. The whole cycle runs about 70 minutes a week, and the entire catalog gets physically verified every six weeks.

The first full pass through all six zones was an education. Out of 2,200 SKUs, 163 were wrong in Shopify. Seventy-one phantom units - storefront said available, shelf said empty - each one an oversell waiting to happen. And more than 90 units of the opposite: real stock listed as sold out or below the true count, roughly $1,400 of retail value sitting invisible on the shelves. The import process also proved its safety net early: on one import, two rows came back rejected because customers had ordered those games between export and import. Shopify emailed the details, Tom recounted the two items, and re-imported - nothing got overwritten.

Six months in, oversold orders are down from 5-7 per month to roughly one per quarter - only ever from same-week drift in a zone counted five weeks ago. Tom removed all the manual padding and stopped marking items sold out early, so fast movers sell down to the last real unit. No new reviews mention cancelled orders. He has looked at the advanced option - DataScan exporting to SFTP with a third-party Shopify app pulling quantity updates automatically on a schedule - but for now, 70 minutes on a Monday morning is a price he is happy to pay for a storefront he finally trusts.

The CSV Merge, Step by Step

Export Shopify's inventory CSV (Products, then Inventory, then Export - choose the "All states" format). In Excel or Google Sheets, XLOOKUP each SKU's counted quantity from the DataScan export into the "On hand (new)" column - Shopify ignores "On hand (current)" on import, so leave it untouched. Re-import the file. Shopify compares the file's current values against the store and rejects any row where stock changed since export, so orders placed mid-count are safe. Keep the original export as your backup - imports cannot be undone.

Measured Results After 6 Months

  • Oversold orders reduced from 5-7 per month to roughly one per quarter
  • First full count corrected 163 of 2,200 SKUs: 71 phantom units removed, 90+ hidden units relisted (about $1,400 in retail value)
  • Weekly zone count plus CSV merge takes about 70 minutes; the full catalog is physically verified every six weeks
  • Eliminated safety-stock padding and early sold-out flags, recovering sales on stock that was actually on the shelf
  • Zero new reviews mentioning cancelled orders since the routine started
  • Total tooling cost: one DataScan subscription - no Shopify apps, no API integration, no new hardware

Everything You Need for Shopify Stock Counts

Single Value Scan Counting

Single Value Scan mode is built for stock counts: scan a product's barcode, type the shelf quantity, and the app pairs them automatically. Review the full count list before export to catch typos.

Works With Your Existing Shopify Barcodes

Scan the EAN or UPC already printed on the product box, or your own SKU labels - the same identifiers stored in your Shopify product records. Counts match Shopify's inventory rows with a simple SKU lookup.

EAN, UPC, and Code 128 Support

Reads all standard retail symbologies plus Code 128 and QR for self-printed SKU labels. Barcode type filtering locks scanning to the formats you use, so shelf-edge labels never get picked up by mistake.

CSV and Excel Export

Export the count as CSV or Excel with one tap. The file opens directly in Excel or Google Sheets, ready for the XLOOKUP merge into Shopify's exported inventory CSV.

Works Offline

Steel shelving and back-of-house stock rooms kill Wi-Fi. DataScan works completely offline - count the whole warehouse, then export when you are back at your desk.

SFTP Upload for Automation

DataScan can upload every export to your SFTP server automatically. Third-party Shopify inventory apps can then pull quantity updates from SFTP on a schedule - an optional hands-off pipeline from shelf scan to storefront.

Get Started This Week

  1. Download DataScan Download DataScan from the App Store and start the free 7-day trial - no credit card required. Select Single Value Scan mode; no other configuration is needed for stock counts.
  2. Test Count One Shelf Scan 20-30 products and type their shelf quantities. Export the CSV and compare it against the numbers in your Shopify admin to see how far your inventory has already drifted.
  3. Practice the CSV Merge Export Shopify's inventory CSV (Products, then Inventory - choose the "All states" format) and keep an untouched backup copy. XLOOKUP your test counts into the "On hand (new)" column by SKU.
  4. Run a Test Import Import the merged file in Shopify's Inventory screen and verify the quantities changed in your admin. If any rows are rejected because stock moved mid-count, recount those items and re-import.
  5. Set Up a Zone Rotation Divide your stock area into zones of 45-60 minutes each and count one zone per week. A 2,000-SKU catalog gets fully verified every five to six weeks without ever closing for a full count.

Ready to Stop Overselling on Shopify?

Count your real shelf stock and keep Shopify honest with a weekly CSV import. Start your free 7-day trial today.

7-Day Free Trial • No Credit Card Required • Cancel Anytime