Amazon to Shopify: converting a product CSV export
Amazon’s report describes offers against ASINs, not products you own. Converting it is mostly about recognising which columns are yours to keep.
Where the file comes from
In Seller Central open the menu and go to Inventory → Inventory reports, set Report type to Active Listings Report, click Request report, then download it when it is generated. Shopify names the file AmazonProductDownload.csv in its migrating-from-Amazon guide, which publishes the five-column mapping this preset follows.
Note the report is tab-delimited in its native form even though it is described as a CSV. This tool detects the delimiter from the file rather than from the extension, so a .txt or tab-separated download loads without converting it first.
Pitfall 1: the headers are lowercase and hyphenated
Amazon writes item-name, item-description, seller-sku, quantity and price. Not Item Name, not Seller SKU. A mapping written in title case matches nothing, and because Shopify’s only hard requirement is Title, a file whose title column failed to match imports as rows with no title and is rejected line by line with “did not contain product data”.
The preset uses the hyphenated names exactly as Shopify’s table gives them. If you customised the report columns in Seller Central (“Customize the columns in this report”), check the header row before trusting any preset — your file may not have the default names at all.
Pitfall 2: product-id is usually an ASIN, not a barcode
The report carries product-id and product-id-type. It is tempting to map the first to Shopify’s Variant Barcodes, and it is wrong often enough to matter: for listings you created against an existing Amazon catalogue entry, that column holds an ASIN — an Amazon identifier with no meaning anywhere else — and only sometimes a real EAN or UPC.
An ASIN in the barcode field poisons every later integration that trusts barcodes: scanners, Google Shopping feeds, stock sync. So this preset leaves Variant Barcodes deliberately blank, and Shopify’s own mapping table does not include the column either. If you know your product-id-type values are GTINs, map it by hand in step 3 — that is a decision about your data, not one a preset should make for you.
Pitfall 3: no variation structure, and no images
The Active Listings Report is one row per SKU. Parent/child relationships between an Amazon parent ASIN and its child variations are not expressed as option name and value columns, so there is nothing to map onto Option1/Option2 — every row becomes its own Shopify product with a single default variant.
There are no image columns either. Amazon product images belong to Amazon’s catalogue rather than to your listing, which is exactly why they are not in an export you can take with you. You will be adding images in Shopify, and the preset imports products as draft so an imageless catalogue is not published while you do.
Pitfall 4: item-description is bullet-point copy written for Amazon
Where the description is present it is Amazon product copy — often one long run of keyword-stuffed sentences, sometimes with the bullet points flattened into it. Shopify accepts it as HTML and it will render, which is the trap: it will render looking like Amazon copy on your own shop.
Also check for duplicated SKUs before importing. Sellers routinely list the same item twice — as a single and as a bundle — and if both rows carry one seller-sku the validator reports SKU is used on 2 rows. Shopify will not let one SKU identify two variants cleanly, and inventory sync is the thing that breaks.
Pitfall 5: price is a plain number, and there is no currency column
price is a bare number in the marketplace’s currency. Shopify’s product CSV has no currency column at all — the store’s currency decides — so a report pulled from amazon.de imports its euro prices unchanged into a sterling store, as sterling. The import succeeds and every price is wrong.
Convert the column before you import if the currencies differ. The converter normalises formatting (symbols, thousand separators, decimal commas) but deliberately never applies an exchange rate: a silently converted price is worse than an obviously wrong one.
What the preset maps
item-name → Title, item-description → Description, seller-sku → SKU, quantity → Inventory quantity, and price → Price. Status is draft, Published on online store is FALSE, Fulfillment service is manual.
asin1, listing-id, open-date and item-condition are dropped. The first three are Amazon bookkeeping with no Shopify equivalent; condition is a numeric code in this report (11 for new) rather than the text eBay exports, so mapping it to Google Shopping / Condition would write a number where Google expects a word.
Before you upload to Shopify
- Import into a development store or a draft-status batch first. Set the default status to
draftin the tool and nothing goes live by accident. - Shopify caps a product CSV at 15 MB. Bigger catalogues are split into numbered parts, and a product is never split across two files.
- Overwriting existing products by handle is destructive: a blank cell can erase data that is currently there. Export your live products first if you are updating rather than creating.
Full column contract: the Shopify product CSV format, column by column. Nexum Gate is not affiliated with Shopify Inc.