Shopify "Invalid CSV header: missing headers": How to Fix It
Invalid CSV header: missing headers is the error Shopify's product importer shows when the first line of your file doesn't hold the column names it expects. Shopify reads that line to learn which column is the title, which is the price and so on.
Why does Shopify say "Invalid CSV header: missing headers"?
Shopify's CSV guide says the first line of a product CSV "must be the column headers as specified in the product CSV description table". Files usually fail for one of these reasons:
- The file starts with something else. A supplier price list often has a company name, a date or "Price list 2026" above the table, or a blank first row.
- The columns have the supplier's names.
Product Name,RRP,StockorArtikelnummermean something to you, but they aren't Shopify's column names. - The header has extra spaces. Shopify's common import issues page reminds you to check for white space at the end of the first line.
How do I fix "Invalid CSV header: missing headers"?
- Get a correct header line. The quickest way is to export a few products from your own store (Products, then Export): the first line of that file is a header Shopify accepts. You can also download Shopify's sample product CSV from its CSV guide. The header line quoted on the error page itself uses older column names (
Handle,Body (HTML),Variant Price); the current template uses newer ones (URL handle,Description,Price). - Delete anything above the header. Title rows, logos, dates and blank rows above the table all have to go, so the column names are on line 1.
- Rename the supplier's columns. Change each column name to Shopify's name for that field: the supplier's
Product NamebecomesTitle,RRPbecomesPrice, and so on. Delete columns Shopify has no column for. - Trim trailing spaces at the end of the header line and in each column name. Open the file in a text editor to see them.
- Save as a comma-separated, UTF-8 CSV. In Excel, choose CSV UTF-8 (Comma delimited).
If Shopify then shows a Choose column headings window, its help says that means some headers are still wrong. You can pick the right header for each column from the drop-downs there.
You only have to do this once per file layout, but you have to do it again for every new supplier, and again when a supplier changes their sheet.
How does Csvio import a file without Shopify's headers?
Csvio doesn't need Shopify's header line. You upload the supplier's file as it is:
- Your column names stay. Csvio's AI maps each column to a Shopify field from its name, including names in another language and supplier shorthand like
RRPorArtikelnummer. A column it can't place with confidence is set to skip column, and the mapping screen names any skipped column that still has data, so you can map it yourself from a drop-down. See how AI column mapping works. - Rows above the table are skipped. Csvio looks through the first rows for the header and skips a few short rows above it, such as a title, a date or a notice.
- Spaces around names are ignored. Each cell, headers included, is trimmed before it's read.
- Semicolons, tabs and pipes work. Csvio detects the delimiter from the file, so a semicolon-separated export reads the same as a comma one.
- Excel and PDF work too. You can upload the supplier's
.xlsxworkbook or PDF price list directly instead of converting it to CSV first. - The mapping is saved per supplier. The next file with the same columns uses the saved mapping straight away, and you can change it on the mapping screen at any time.
Before anything reaches your store, the mapping screen shows what each column became and how many products are ready, and you can download a preview CSV to check the output.
Can I try Csvio on the file Shopify rejected?
Csvio's free plan imports 30 products a month across up to 3 imports. Upload the supplier file that Shopify rejected, without renaming anything, and see how it maps before you confirm.