PrestaShop to Shopify product CSV converter

In short: PrestaShop's product list (Catalog, then Products) has an Export action that saves a semicolon-separated CSV with one row per product and 8 columns: product ID, image, name, reference, category, price before tax, price including tax and quantity. It has no descriptions and no combinations. Shopify's product importer wants its own template: exact column names, one row per variant, all rows of a product together, plain-number prices and weights in grams. Drop the PrestaShop file below to get one from the other. It is converted on your device and never uploaded.

Convert PrestaShop to Shopify

PrestaShop to Shopify

Your PrestaShop product export CSV.

Your file stays on this device

It is read and converted by this page, inside your browser. Nothing from the file is uploaded, and the tool keeps working offline once the page has loaded.

No file handy? or download the sample to look at it first.

The products in the sample are invented. It is converted on this device, the same way your own file would be.

Loading the converter...

What moves: products, one price each, stock, SKUs (PrestaShop references), the main category and the cover image. What does not: customers, orders, reviews, gift card balances, blog posts, pages and URL redirects are not in a product export, so CatalogHop does not convert them.

1. Export your products from PrestaShop

  1. In the PrestaShop back office, go to Catalog, then Products.
  2. Set the filters on the product list: the export holds only the products that match them. Clear them to export everything, or filter the Status column to Yes to leave disabled products out.
  3. In PrestaShop 8.1 up to 8.2.1, the export holds only the products on the current page of the list, which shows 20 by default. Show all your products on one page first, or export page by page. PrestaShop 1.7, 8.0 and 8.2.2 or later export every product that matches the filters.
  4. Open the product list's actions menu, the one that also holds "Export to SQL Manager", and click Export. You get a file named product_ followed by the date and time, ending in .csv.
  5. Upload the file as it was downloaded. Its columns are separated by semicolons, which the converter reads.

What to know about the PrestaShop file

  • This is PrestaShop's product list, not a full catalog export. It has no descriptions, summaries, extra images, combinations, weights, EAN13 or other barcodes, brands, tags, features, SEO fields or discounts, so none of those move. Every converted file says so.
  • Combinations are not in the file. A product with combinations becomes one product with no options, its own price and the total stock of all its combinations (PrestaShop keeps that total for the product). Add the options in the new store.
  • The export does not say which products are enabled, and it includes disabled ones unless you filtered the list. So every product is written as a draft (hidden), with a note. Publish the ones you sell after import.
  • PrestaShop exports two prices. The converter uses the price before tax, the price PrestaShop asks you to set (in 8.1 and later this column includes any ecotax). If your new store shows prices including tax, choose "Including tax" under "PrestaShop price to use" before you download. Prices before tax with more than 2 decimals (PrestaShop stores them that way when a price was typed including tax) are rounded to cents and listed.
  • In PrestaShop 1.7 and 8.0, the price including tax is worked out with the default combination's price impact, so for a product with combinations it can differ from the price before tax plus tax. The converter says so when you choose it.
  • In PrestaShop 8.1 and later, the image column links a small version of each product's cover image (a file ending in -small_default.jpg). The converter links the full-size file at the same address instead (12-small_default.jpg becomes 12.jpg); PrestaShop's standard image folder settings let anyone open it. Open one link before importing. Products without a cover image, where PrestaShop links its "no image" picture, get no image.
  • Only the main (default) category is in the file, by name, not as a path. Shopify files get it as the product type (the Type column) and WooCommerce files as the product category. Other categories are not in the export.
  • Column names follow your back office language, except Product ID. The converter recognises the file by Product ID, the number of columns and the semicolons PrestaShop always writes between them, and when the names are not in English it also checks that the first rows hold a plain price and an image link. It reads the columns in the order PrestaShop writes them, so a back office in French, Spanish, Italian, Polish or another language is read the same way. A file opened and saved again with commas instead of semicolons is not recognised; upload the file as PrestaShop saved it.
  • An orders, customers or categories export from the same back office is refused with a message when its column names are in English, so the wrong file is not converted by mistake.
  • Built from PrestaShop's own source code (the product list export in 1.7.8, 8.1.7 and 9.0.0) and its user guide. PrestaShop publishes no sample export and no real export was used. It was not tested by importing into a live store.

What the Shopify file gets

  • The 61 columns of Shopify's current product template, as UTF-8 with no byte order mark.
  • One row per variant, with extra rows for additional images, and all rows of a product kept together.
  • Weights in whole grams, with your display unit kept.
  • Products with no options get the usual "Title" / "Default Title" option.
  • Products Shopify would reject (more than 3 options, more than 2,048 variants, repeated option combinations, a blank or negative price, or anything else the Shopify checker on this site finds) are left out of the file and listed on screen so you can fix them in the source.
  • Image paths that are not full web links are left out with a note, so the product itself still imports.
  • Files over Shopify's 15 MB limit are also offered as smaller parts, each product kept whole.

2. Before and after

Before: the PrestaShop product export CSV

"Product ID";Image;Name;Reference;Category;"Price (tax excl.)";"Price (tax incl.)";Quantity
1;https://shop.example.com/img/p/1/1-small_default.jpg;"Linen Apron";APR-LIN-01;Kitchen;24.000000;€28.80;12
2;https://shop.example.com/img/p/2/3/23-small_default.jpg;"Tasse en grès";TAS-GRES-02;"Arts de la table";20.833333;€25.00;40
3;https://shop.example.com/img/p/en-default-small_default.jpg;"Gift Card Envelope";;Accessories;3.500000;€4.20;0
4;https://shop.example.com/img/p/4/5/45-small_default.jpg;"Oak Serving Board; large";BRD-OAK-L;Kitchen;41.666667;€50.00;-2
5;https://shop.example.com/img/p/6/7/67-small_default.jpg;"Beeswax Wraps (set of 3)";WRP-BEE-3;Kitchen;12.500000;€15.00;7

After: shopify-products.csv

After: first rows of shopify-products.csv
RowTitleURL handleTypePublished on online storeStatusSKUOption1 nameOption1 valuePriceCharge taxInventory tracker
ProductLinen Apronlinen-apronKitchenFALSEdraftAPR-LIN-01TitleDefault Title24.00TRUEshopify
ProductTasse en grèstasse-en-gresArts de la tableFALSEdraftTAS-GRES-02TitleDefault Title20.83TRUEshopify
ProductGift Card Envelopegift-card-envelopeAccessoriesFALSEdraftTitleDefault Title3.50TRUEshopify
ProductOak Serving Board; largeoak-serving-board-largeKitchenFALSEdraftBRD-OAK-LTitleDefault Title41.67TRUEshopify
ProductBeeswax Wraps (set of 3)beeswax-wraps-set-of-3KitchenFALSEdraftWRP-BEE-3TitleDefault Title12.50TRUEshopify

12 of 62 columns shown (empty columns hidden, 7 more with data).

What the converter reported for this sample

5 products read, 5 written.

  • Check this: PrestaShop's product list export does not say which products are enabled, and it includes disabled products unless the list was filtered. So all 5 products were written as drafts (hidden). Publish the ones you sell after import.
  • Check this: PrestaShop's product list export has only 8 columns (ID, image, name, reference, category, two prices, quantity). Not in the file, so not carried over: descriptions, extra images, combinations, weights, EAN13 and other barcodes, brands, tags, features, SEO fields and discounts. A product with combinations becomes one product with no options, its own price and the total stock of all its combinations.
  • Check this: Prices are PrestaShop's price before tax (the "Price (tax excl.)" column, which includes any ecotax). If your new store shows prices including tax, choose "Including tax" for the PrestaShop price and convert again.
  • Check this: 2 prices before tax have more than 2 decimal places (PrestaShop stores the price before tax that way when it was typed including tax) and were rounded to cents: "Tasse en grès" 20.833333 to 20.83, "Oak Serving Board; large" 41.666667 to 41.67.
  • Check this: The export links a small version (small_default) of each cover image. 4 links were changed to the full-size file at the same address (for example 12-small_default.jpg became 12.jpg). Open one in your browser before importing; if it does not load, your server blocks the originals. Only the cover image is in the export.
  • Not carried over: One product has no cover image in PrestaShop (the export links PrestaShop's "no image" picture), so it has no image.
  • Not carried over: Only each product's main (default) category is in the export, by name and not as a path. It was carried over as the product type in Shopify files and as the category in WooCommerce files. Other categories are not in the export.

Sample products made up for this page, laid out exactly like a real PrestaShop export. The "after" file and the notes were produced from it by the same converter this page runs.

3. Import into Shopify

  1. In Shopify admin, go to Products and click Import.
  2. Click Add file and choose shopify-products.csv.
  3. Leave "Publish new products to all sales channels" and the overwrite option as you need them. Overwrite replaces products that have the same URL handle.
  4. Click Upload and preview, look over the first product, then Import products. Shopify emails you when it finishes, including any rows it skipped.

Before you import everything

  • A few of Shopify's rules are our best reading rather than something Shopify states outright: that the 2,048 variant limit also applies to CSV imports, that decimal gram weights should be rounded, and that "Title" is the option name for products without options. Try a small file first.
  • Images are imported by Shopify downloading each link. Links that are private, slow or removed fail on Shopify's side, which no file check can see.
  • Inventory quantity in the file only applies to stores with a single location. With more than one location, set stock after import (or with Shopify's inventory CSV).
  • Import the file as it is. Opening it in Excel or Google Sheets and saving again can change prices, SKUs and accents.
  • Import a handful of products first, open them in your store and check variants, prices, stock and images. Then import the rest.

Already have a Shopify CSV that fails? Use the Shopify CSV checker.

Questions

Why are descriptions and combinations missing after converting my PrestaShop export?
PrestaShop's product export has 8 columns only: ID, image, name, reference, category, two prices and quantity. Descriptions, combinations, weights and barcodes are not in it, so there is nothing to carry over. A product with combinations comes over as one product with its total stock; add the options in Shopify.
Should I use the PrestaShop price before tax or including tax?
Use the one that matches how your Shopify store shows prices. The converter uses the price before tax unless you choose "Including tax" under "PrestaShop price to use". If your Shopify store shows prices with tax included, choose "Including tax".
Why are all my PrestaShop products drafts in Shopify?
The PrestaShop export does not say which products are enabled, so every product is written as a draft and nothing disabled is published by mistake. Select the products you sell in Shopify and set them to active.
Was this tested by importing into a live Shopify store?
No. It follows PrestaShop's own export code and Shopify's documented import rules, and every file is checked against those rules before download. Import a few products first and check them.
Is my file uploaded anywhere?
No. The page reads the file with your browser and converts it there. The only thing the site records is an anonymous count: which converter was used, a rough row count, and whether it worked. The privacy page lists every field.

Sources

Related converters