Export a CSV from Excel, Sheets or Numbers
ImportKit accepts .csv files only. Every spreadsheet application can produce
one, but a couple of them have a default that quietly mangles accented characters — so
here's the exact route through each.
A comma-delimited .csv saved as UTF-8, with your header
row as the very first row. That's the whole specification.
Google Sheets
The easiest of the four, because it always exports UTF-8 with commas.
- File → Download → Comma-separated values (.csv)
One thing to watch: it exports the active sheet only. If your data is spread across tabs, export each tab separately, or consolidate first.
Microsoft Excel
Excel offers several CSV options and they are not equivalent. Pick the UTF-8 one.
- File → Save As (on Mac, File → Save a Copy)
- In the format dropdown choose CSV UTF-8 (Comma delimited) (.csv) — not plain “CSV (Comma delimited)” and not “CSV (Macintosh)”.
- Save. Accept the warning that only the active sheet will be saved.
If your Windows regional list separator is a semicolon, plain “CSV (Comma delimited)” will actually use semicolons. The file uploads, but you'll see one giant column instead of several on the mapping step.
Fixes, in order of preference: use CSV UTF-8 (Comma delimited); or change the list separator in Windows Settings → Time & language → Region → Additional settings; or open the file in a text editor and replace the semicolons.
Apple Numbers
- File → Export To → CSV…
- Open Advanced Options and set Text Encoding to Unicode (UTF-8).
- Export.
Numbers exports one file per table, so a sheet with several tables produces several files. Keep one table per sheet to avoid surprises.
LibreOffice Calc
- File → Save As, format Text CSV (.csv).
- Tick Edit filter settings, then save.
- In the dialog: character set Unicode (UTF-8), field delimiter ,, string delimiter ".
- Tick Quote all text cells if your data contains HTML or commas — harmless either way.
Before you export
Five minutes here saves a round of failed rows.
-
Put the header row first
Delete any title row, logo row or blank row above your headers. ImportKit reads row 1 as the header row, whatever is in it.
-
Format ID and SKU columns as Text
Select the column, then Format → Cells → Text (Sheets: Format → Number → Plain text). Without this, spreadsheets turn
8123456789012into8.12346E+12and lose digits, and strip leading zeros from SKUs like0042-BLK.Do this before pasting the values, not after — the damage happens on paste.
-
Unmerge any merged cells
Merges don't survive a CSV export. Unmerge and repeat the value on every row.
-
Delete trailing rows and columns
Truly empty rows are skipped automatically, but a row containing a single stray space isn't empty. Select the rows below your data and delete them outright.
-
Turn off autocorrect for JSON cells
If you're typing
moneyorratingvalues, autocorrect will turn"into curly quotes and break the JSON. Disable smart quotes, or build those cells in a plain text editor. -
Check your list cells
For a
list.*field, one cell holds all the items:Waterproof, Lightweight, Recycled. If an item itself contains a comma, use line breaks within the cell instead —Alt+Enteron Windows,Ctrl+Option+Enterin Sheets — and newlines become the separator. Value formats →
Check the export actually worked
Open the saved .csv in a plain text editor — TextEdit, Notepad, VS Code — not
back in Excel. You should see something recognisable as CSV:
name,key,type,ownerType
Care guide,care_guide,multi_line_text_field,PRODUCT
"Highlights, key",highlights,list.single_line_text_field,PRODUCT
| If you see | The problem |
|---|---|
| Semicolons between values | Wrong delimiter — re-export as CSV UTF-8 |
Café instead of Café | Not UTF-8 — re-export with UTF-8 encoding |
| Tabs between values | You saved a TSV. Re-export as CSV |
| Binary gibberish | Still an .xlsx with a renamed extension. Renaming isn't converting |
Values wrapped in = or @ | Formulas were exported literally. Copy → Paste Special → Values only, then re-export |
Then upload it
Head to Import, choose your content type, and drop the file in. Anything
that isn't a .csv is rejected with “Please upload a .csv file” before
it's read.
Then run the pre-import check. It's free, and it's where any remaining export problem shows up as a specific message on a specific row.
Columns detected after upload
The upload step after a successful file selection, showing the detected column list with sample values — proof the delimiter was read correctly.
assets/screenshots/columns-detected.png
Getting data out of Shopify to start with
Often you need a list of product handles before you can build a values file. Shopify's own
product export (Products → Export) gives you a CSV including the
Handle column, which is exactly what
metafield values want in
owner_reference.
Export it, delete the columns you don't need, add your owner_type,
key and value columns, and you have an import file built from your
real catalogue rather than typed by hand.