Skip to content
Back to blog
Guides

How to Map CSV Columns to Shopify Inventory Fields

Supplier files name columns their own way: stock_no, qty, unit cost. Here's how to map those headers to Shopify's SKU, inventory, price, and cost fields, with matches you confirm and a match-rate check before anything syncs.

Simple Apps LLC

Simple Inventory

8 min read

To map a CSV to Shopify, upload the file and Simple Inventory reads your header row, then proposes which of your columns feeds each Shopify field: your stock_no to SKU, your qty to inventory, your unit cost to cost. You confirm the matches it suggests, fix any it gets wrong from a dropdown, and it checks the result against your catalog before a single value syncs. Shopify’s native product CSV import does its own job here. It identifies rows by product handle, which works for files you exported from your own store. A supplier’s file rarely carries those handles, so mapping its columns to your catalog is a separate job.

If you only import files you exported from Shopify yourself, the column names already line up and there’s nothing to map. This post is for the other case. Your numbers arrive from a supplier or a warehouse, every source names its columns differently, and you want those columns understood correctly without renaming a spreadsheet by hand every week.

Stop renaming supplier columns to match Shopify. Map them once and confirm. See how Simple Inventory does it.

Why your supplier’s CSV columns don’t line up with Shopify

Every supplier names columns their own way. One sends stock_no, qty, unit cost. The next sends Item #, On Hand, Cost. A file exported from another Shopify store says Variant SKU and Variant Inventory Qty. A European distributor might send artikelnummer and bestand. None of those are wrong. They’re just not the names Shopify uses internally, which are SKU, inventory, and cost.

So the work in any inventory import is translation: this column in the file means that field in Shopify. Do it by hand and you’re either renaming headers in a spreadsheet before every upload or hoping a tool guessed right. Neither scales when you pull from several suppliers, each with their own format, on their own schedule.

How Simple Inventory maps your columns for you

Upload the file and the first thing it does is read row one, your header row, and work out what each column is. It tries the obvious match first, your header named exactly as a Shopify field. Then it checks a dictionary of common aliases. Then it allows for near-miss spelling. Between those layers, most real-world headers get recognized before you touch a thing, and anything it can’t place is left for you to pick from a dropdown.

The alias dictionary does most of that work, because supplier headers cluster around the same few words. Anything like qty, quantity, stock, available, on hand, QOH, or in stock maps to inventory. Item, item #, part number, code, ref, PLU, and stock code map to SKU. UPC, EAN, and GTIN map to barcode. Unit cost maps to cost, and RRP or MSRP map to compare-at price. The dictionary reaches past English too, so artikelnummer, bestand, giacenza, and precio resolve to the right field instead of being ignored. And because the spelling check tolerates a couple of characters, a header typed quantiy or inventroy still lands on inventory rather than getting dropped.

Here’s the part that keeps it honest: nothing imports on a guess. Anything the matcher inferred, rather than read off an exact name, gets tagged Suggested in the review step, with a one-line nudge to confirm or change it. The screen says it plainly: “Confirm how your columns map to Shopify fields. Rows tagged Suggested are our best guess, click any dropdown to change them.” Each Shopify field has a dropdown listing every column in your file, so correcting a match is one click. A header it recognized exactly comes through with no tag, because there’s nothing to second-guess.

Simple Inventory mapping review: Shopify fields SKU, Inventory, and Cost each with a dropdown set to a file column (stock_no, qty, unit cost), the inferred rows tagged with a Suggested badge to confirm
The review step: each Shopify field gets a dropdown of your file's columns. Rows it inferred are tagged Suggested so you confirm them; an exact name match comes through untagged.

Map any supplier’s columns to your catalog and confirm in a click. Simple Inventory is Built for Shopify and has run on Shopify stores since 2015. Try it on your file.

Which Shopify fields you can map to

A mapped import is for stock and pricing, not the whole product record. You can map columns to these fields: SKU, barcode, inventory quantity, price, compare-at price, cost, weight, tags, whether the variant is tracked, and inventory policy. In practice most merchants map two or three: an identifier plus quantity, often with cost or price riding along.

Two columns always matter more than the rest. You need an identifier, SKU or barcode, so each row can find its product, and at least one field to write back, usually quantity. Without both, there’s nothing to update, and the app won’t let you continue until you’ve mapped one of each.

What you can’t map is the rest of the product. Title, description, images, product type, and creating brand-new products are the native Shopify product CSV import’s job, and it’s good at it. Simple Inventory updates variants that already exist in your store. So if a file is mostly new SKUs, create those products in Shopify first, then let a mapped feed keep them stocked from then on.

Map once, reuse it every week

Most supplier feeds don’t change their shape. The same distributor sends the same columns in the same order, week after week. So the second time matters more than the first.

Save a mapping when you set it up and give it a name. The next time you import a file with that same header layout, Simple Inventory recognizes it and offers to apply the saved mapping straight away, no re-matching. If you pull from three suppliers with three different formats, you set each up once and every later import is a quick confirm. The translation work happens a single time per source, not every upload.

Catch a wrong column before it reaches your store

An unreadable header is the easy case. You see it, you fix it. The quiet danger is a header read wrong, where the wrong column maps to a real field, looks fine on screen, and a bad sync runs before anyone notices. A barcode column sitting where SKU should be is the classic one. It matches nothing in your catalog, and you find out the hard way.

So before you activate, Simple Inventory samples the values in your chosen match column and tests them against your live catalog, then tells you what share it could find. It checks the sample against both SKU and barcode. If you picked SKU but the column actually holds barcodes, you see a low SKU match rate and a high barcode one, and the fix is obvious before the first run. A typo in the mapping, a shifted column, an identifier you chose by mistake, it all surfaces here instead of after.

Simple Inventory match-rate check showing a sampled match column tested against the catalog, reporting how many of the sampled values match an existing SKU before the import is activated
Before activating, it samples your match column against your catalog and reports the match rate, so a wrong identifier column is caught before anything syncs.

FAQ

How do I map CSV columns to Shopify fields?

Upload the file and Simple Inventory reads your header row, then proposes which of your columns feeds each Shopify field (SKU, inventory, price, cost, and more). Every proposed match is tagged Suggested so you confirm it or pick a different column from a dropdown before anything imports.

What if my column names don’t match Shopify’s, like qty or stock_no?

That’s the normal case and it’s handled. The matcher knows common aliases: qty, quantity, on hand, and stock all map to inventory; item, part number, ref, and code map to SKU; UPC, EAN, and GTIN map to barcode. It also catches near-miss spellings. Anything it can’t place by name, you map yourself from a dropdown, and you confirm every match before importing.

Which fields can I update from a CSV?

Inventory quantity, SKU, barcode, price, compare-at price, cost, weight, tags, tracked, and inventory policy. It updates existing variants matched by SKU or barcode. It doesn’t map product title, description, or images, and it doesn’t create new products, that’s the native Shopify product CSV import’s job.

Can I save a column mapping and reuse it for the same supplier?

Yes. Save the mapping once and name it. The next time you import a file with that same layout, Simple Inventory recognizes it and offers to apply the saved mapping, so a supplier whose columns never change is a one-click confirm after the first setup.

What if a column maps to the wrong field?

Nothing imports on a guess. Each Shopify field has a dropdown listing every column in your file, so you change any match yourself. Exact name matches come through untagged; anything the matcher inferred is tagged Suggested specifically so you review it first.

How do I know I picked the right match column, SKU or barcode?

Before you activate, Simple Inventory samples your chosen match column and tests it against your live catalog, then reports what share of rows it found. It checks the values against both SKU and barcode, so if you picked SKU but the column actually holds barcodes, the mismatch shows up as a low match rate before the first sync runs.

Can mapping columns create new products in Shopify?

No. A mapped import updates variants that already exist in your store, matched by SKU or barcode. A row whose identifier it can’t find is skipped and counted, not turned into a new product. To create products in bulk, use Shopify’s native product CSV import first, then keep them stocked with a mapped feed.

Bottom line

Mapping is the step that makes a supplier’s file usable without rewriting it. Simple Inventory reads your headers, suggests the matches, and shows you exactly what it inferred so you confirm it in a click. It checks the result against your catalog before anything syncs, and it remembers the layout so the same supplier is one-click next week. Map your first file and let the column names stop being your problem.