How to Prepare a Shopify Product CSV
A small flaw in the file can split a product. Or it can set the wrong price live. Clean the file first and the upload just works.
What Shopify expects from the file
Shopify reads a product file row by row. Each row holds part of one product. Some products need more than one row.
A product with sizes needs a row per size. A product with shades needs a row per shade. The rows for one product sit in a group.
That group idea trips up a lot of stores. If you sort rows with no care, you break groups. Then a size may land on the wrong item.
You need to prepare a Shopify product CSV with care. Keep each group whole from start to end. Do not mix rows from two groups at all.
The first row of a group holds most fields. It holds the title and the main text. The next rows hold just the variant facts.
A variant is one form of a product you sell. Size small is one variant of a shirt. Size large is a new variant of it.
Each variant needs its own price and SKU. Each variant needs its own stock count too. If a field is blank, the upload may fail.
Or worse, the upload may pass but be wrong. A wrong price can go live in your store. A wrong stock count can sell stock you lack.
That is why this kind of flaw is quiet. The file looks fine at a quick glance. The harm shows up later, in live sales.
Most import tools work in this same strict way. They match fields by the header name on top. They match rows by their group and order.
If a header name is off, the field is lost. If a comma sits in the wrong place, fields shift. One shift can move a price to a stock field.
The good news is that the rules are plain. Once you learn them, you can check fast. This guide walks you through them in order.
Start with a copy of the file you got. Keep the raw file safe and do not edit it. Do all your work in a fresh copy.
Write down how many products you expect. Write down how many rows the file has. Those two counts help you check the end result.
Do not aim to fix the file in Shopify. Fix the file first, then upload it once. Fixes in the file are fast and clear to track.
Fixes made by hand in the store are slow. They are also hard for a team to check. One clean upload beats ten small hand fixes.
The columns that matter most
Your file may have a lot of columns. Some matter far more than the rest. Get these right and most uploads will pass.
The title names the product for the buyer. It sits on the first row of each group. Keep it short, clear, and free of stray space.
The handle is the web name for the product. It uses lower case and dashes, not gaps. It should be the same for each row in a group.
If handles differ in one group, trouble starts. Shopify may split the group in two. You then get two half products in the store.
Option fields hold the choice the buyer makes. Option1 Value may hold size or shade. Each row in a group needs its own value.
Do not repeat the same value in one group. Two rows both marked small is a flaw. One of them is most likely meant to be large.
The SKU is the code you use for stock. Each variant needs a SKU of its own. No two variants should share one SKU.
The price field holds what the buyer pays. It needs digits and a dot for cents. It must not hold a coin sign or gaps.
Stock counts need whole numbers with no dots. You can not stock half of a shirt. A count with text in it will fail or read as zero.
This table sums up the rules for these fields. Keep it near you as you clean the file. Check each column in the same order.
| Column | Rule | Example |
|---|---|---|
| Title | One product name per group | Blue Cotton Shirt |
| Handle | Lower case, dashes, no spaces | blue-cotton-shirt |
| Option1 Value | Size or color per row | Small, then Large |
| Variant SKU | Unique, keep zeros | 00841-S, 00841-L |
| Variant Price | Digits and a dot, no $ sign | 24.99 |
| Inventory | Whole numbers only | 12, not 12.5 |
RowSift can help you line these fields up. It runs in your web browser as you work. It maps common header forms to one schema.
That means odd supplier headers get one name. You do not have to rename each one by hand. You still check the map with your own eyes.
Look for columns you do not need at all. A supplier may add cost or note fields. If Shopify has no home for them, drop them.
Extra columns add noise and risk to the file. They can hold commas that break a row. Less is more when you prep an upload file.
Count the columns in the top row with care. Each row below should match that count. A row with more or less is a red flag.
Clean titles, SKUs, and prices
Titles are the first thing a buyer sees. They should be short and clear at a glance. Cut words that add no real help.
Trim space at the start and end of each title. Cut double space in the middle of a title. Keep one form for brand names in all titles.
Do not put size or shade in each title. Those facts live in the option fields. If you add them to titles, groups get messy fast.
Watch for commas and quotes in a title. A comma can split one field in two. The tool then reads the rest of the row wrong.
If a title needs a comma, keep the file safe. Make sure the field is wrapped in quotes. Most tools do this when they save the file.
SKUs need even more care than titles do. A SKU is how you track each variant. It must stay the same in each system you use.
Some SKUs start with one or more zeros. Sheet tools may treat them as pure math. Then the zeros at the start just vanish.
This is a known trap, and you can read why leading zeros disappear in files like this. The fix is to treat SKU fields as text. Set that form before you type or paste codes.
Check for SKU rows that repeat by mistake. Sort the file by SKU and scan the list. Rows that sit side by side with one SKU need a look.
RowSift flags rows where key codes repeat. It also flags rows with no key code at all. Use those flags as your fix list for this step.
Prices need a check of their own each time. Strip out coin signs and commas from prices. Keep just the digits and one dot per price.
A price like 1,299.00 will break a row. The comma in it acts like a field split. The price then reads as one, not the full sum.
Check for prices that are zero or blank. Some may be real gifts or free gifts. Most are flaws from the source file, though.
Check sale prices sit in the right field. Do not swap the base price and sale price. That swap can cut your margin on each sale.
Keep the same cents form for each price. Use two digits past the dot each time. That makes the file neat and easy to scan.
When titles, SKUs, and prices look clean, save. Use a new file name with the date on it. You can then move on to stock and pics.
Images, variants, and stock counts
Pics sell the product, so they need care. Each pic field should hold one clear link. That link must work when you click on it.
Test a few pic links in your browser first. Pick links from the start, mid, and end. If one fails, the rest may fail too.
The first row of a group holds the main pic. More rows can hold more pics of that item. Keep the best pic first in the group.
Do not use the same pic link for two items. Buyers get mixed up when pics do not match. Search tools may flag the page as a dupe too.
Check file names in your pic links for gaps. Gaps in a link can break the pic load. Dashes are a safer pick than gaps here.
Variants need the same care as pics do. Each row in a group is one variant for sale. The option value on each row must be unique.
List the values in a set order each time. Small, then medium, then large works well. Buyers see the picks in a clear, calm order.
Do not mix two kinds of choice in one field. Size and shade are two kinds of choice. Each kind needs its own option field.
If a product has no real variants at all, keep it simple. Use one row and one clear default value. Do not add fake rows to fill space.
Stock counts tell the store what you can sell. Each variant row needs its own true count. Do not copy one count to all rows by rote.
Counts must be whole numbers with no text. Words like lots or in stock will fail. Put such notes in a note field, not the count.
Check for counts that look way too high. A count in the tens of thousands stands out. It may be a price that slipped in by mistake.
Check for counts that are less than zero. A count below zero makes no real sense. Set it to zero if the stock is all gone.
Weights need a check if you ship by weight. Use one unit for weight in the whole file. Do not mix grams and pounds in one file.
Tags can help buyers find the right item. Keep tags short and use a set list. Too many tags make search worse, not better.
When pics, variants, and counts look right, save. You are close to a file that will pass. The next step is a full fix pass.
Quick rule to keep: keep each product group whole.
Do not sort or cut rows in a way that splits a group. A split group makes split products in the store.
Fix the file before you upload
Now do one full pass to fix the file. Work from the top row to the last row. Use the same checks in the same order.
First, check that the headers are all right. Each header should match the field below it. No header should be blank or a dupe.
RowSift maps common header forms to one schema. It runs in the browser and exports a clean CSV. That pass can save you a lot of hand work.
Next, hunt for rows that repeat in full. A dupe row can make a dupe variant live. Drop the spare row and keep the best one.
RowSift flags repeated rows and rows with no key. Work through those flags one at a time. Mark each one as fixed when you are done.
Next, look for fields that sit in wrong places. This happens when a comma splits a field. You will see text where a price should be.
You can read more on how to spot columns that shift in a CSV file. That guide shows the signs row by row. It helps you fix the root cause fast.
Fix each split at the source of the split. Wrap text with commas in quote marks. Or cut the comma if the text allows it.
Next, trim space from the start of each cell. Trim space from the end of each cell too. Stray space can break a match on upload.
Check the file in a plain text view too. A sheet view can hide quote marks and splits. Plain text shows you what the tool will read.
Count the fields in a few rows by hand. Each row should have the same field count. If one row has more, it holds a split.
Save the file as a CSV, not as a sheet. Pick the UTF-8 form if you see a choice. That form keeps odd marks in names safe.
Keep the file name short and plain as well. Use lower case and dashes in the name. Add the date so you know which file is new.
Do not open and re-save the file for fun. Each save in a sheet tool can change codes. It can drop zeros or swap date forms back.
Make your last check the final save step. Then leave the file alone till you upload it. That keeps the clean form you worked for.
A pre-upload checklist
Use this short list just before you upload. Read each point and check it off in turn. Do not skip a point when you feel rushed.
- The raw file is saved in a safe place.
- Each header is right and none is blank.
- Each product group is whole and in order.
- Each SKU is unique and keeps its zeros.
- Each price has digits and a dot only.
- Each stock count is a whole number.
- Each pic link opens and shows a pic.
- No row repeats and no key field is blank.
Test with a small file before the big one. Pick two or three products for the test. Upload just those and check the store.
Open each test product in your live store. Check the title, price, and stock count. Check each variant and each pic too.
If a test product looks wrong, stop at once. Go back to the file and find the cause. Fix the file, not just the one live page.
When the test looks good, upload the full file. Use the same file form as the test file. Do not change a thing at this stage.
For one last clean pass, try the RowSift Shopify CSV cleaner on your file. It gives you a clean CSV to upload. Run the list above once more after it.
After the upload, read the result notes in full. Note how many products the tool took in. Note any rows it skipped or flagged too.
Match those counts to the counts you wrote down. If they do not match, find the gap now. A small gap now can hide a big flaw.
Spot check products from the start and end. Check a few from the middle of the file too. Make sure each one is whole and priced right.
Check stock counts on your best sellers first. Those are the rows where a flaw costs most. A wrong count there can stop real sales fast.
Write down what you did for the next upload. Note the map, the rules, and the counts. The next file will then take far less time.
Keep both the raw file and the clean file. Store them with the date in each name. You now have a clear trail of the work.
That is how you prepare a Shopify product CSV. Clean first, test small, then upload in full. Your store gets products that look right day one.
Sources and further reading
- 5 Ways to Start Selling Online — U.S. Small Business Administration (sba.gov): It covers hosted sites like Shopify and adding products.
- CSV, Comma Separated Values (RFC 4180) — Library of Congress: It sets out the rules of the CSV format.
- Working with Data — University of Delaware Library: It shows why to keep backups and match your tool.
- Prepare Data for Publishing — California Open Data Publisher’s Handbook: Before publishing a file, confirm every expected field is present and that each field holds one consistent data type.
- Spreadsheet Data Structure — University of Iowa Libraries: Keep the sheet a single rectangle with one value per cell — the shape that product imports expect to read.