Moving from Shopify to WooCommerce: take your product images with you

When you move from Shopify to WooCommerce, product details usually transfer cleanly. Images are the part people lose. Shopify’s product CSV holds links to your images, not the files, and those links stop working once the products or the store are gone. WooCommerce’s importer can fetch images from links, but only while the links still work, and a product whose image fails to import is easy to miss. So keep your own copy of every image, organized by product, before you switch. Here is the free way, a faster way, and how to check the new store afterwards.

Before you start

  1. Shopify exportProducts → Export, all products
  2. Copy every imageParcel saves the files, a folder per product, plus a list
  3. Import to WooCommerceImage links in the Images column
  4. Check the new storeExport from WooCommerce and compare image counts
A migration where no image goes missing.

The free manual method

This works and costs nothing. The tedious part is the organizing.

  1. In Shopify admin, go to Products, click Export, and export your products as a CSV. Do not delete anything yet.
  2. Open the CSV and find the Image Src column. Each cell is a direct link to one product image on Shopify’s CDN.
  3. Copy the Image Src column into a bulk-download browser extension or a download script, and download every image. The files arrive with CDN-generated names, not product names.
  4. Sort the files into folders per product and rename them so you can match them to products later. For a large catalog this is the step that eats an afternoon.
  5. Upload the images to your WordPress media library, or to any website the importer can reach, and put their links in the Images column of your WooCommerce import CSV, separated by commas, main image first.

The risk in this method is silent loss. If a download fails and you do not notice, that product arrives on WooCommerce with no image, and you find out from a customer.

What the WooCommerce import expects

woocommerce-import.csv
SKU1NameImages2
MUG-01Trail Mughttps://your-store.com/wp-content/uploads/…/MUG-01-1.jpg, https://your-store.com/wp-content/uploads/…/MUG-01-2.jpg
TT-02Tea Towelhttps://your-store.com/wp-content/uploads/…/TT-02-1.jpg

Columns without a note are left out here; your file has them too.

  1. SKU matches the SKU in Parcel’s file names and manifest, so you can find each product’s files quickly.
  2. Images holds links the importer can download, separated by commas. The first link becomes the product’s main image.

Free method

Downloads/

  • products_export.csv

Links to Shopify’s CDN only. They stop working when you close the store, and nothing tells you which import failed.

Parcel

parcel-1a2b3c4d.zip

  • trail-mug/
    • MUG-01-1.jpg
    • MUG-01-2.jpg
  • tea-towel/
    • TT-02-1.jpg
  • manifest.csv

Your own copy of every image, by product and SKU, with a list to check the new store against.

The faster way: Parcel

Parcel (parcelexport.com) does the download and the organizing in one pass. Upload the same Shopify product CSV and get one ZIP file:

Nothing is installed on your Shopify store and Parcel never asks for store access. Images are downloaded as originals with no resizing.

What it costs

Pricing is one-time, not a subscription. Up to 25 products is free. Larger catalogs are $9 (26 to 250 products), $19 (251 to 1,000), or $39 (over 1,000). Files are kept for 24 hours after your export is ready.

One payment per export, no subscription. A free export can carry up to 300 MB of images; a paid one up to 1 GB.
What fits in one Parcel export

Files stay available for 24 hours after the export is ready.

After the move: check WooCommerce

Once your products are imported, export them from WooCommerce (Products → All Products → Export) and compare each product’s Images cell with your Shopify manifest: count the links in the cell against the product’s rows in the manifest. An empty cell means no photos came across; fewer links than rows means some did not. The manifest lists only the images Parcel saved, so also go through failed-downloads.csv. If Parcel counted skipped links on screen, they aren’t listed anywhere: find them in your Shopify CSV (image links that don’t start with https://cdn.shopify.com/) and save those photos by hand before closing the old store. Parcel reads WooCommerce exports too, so you can also download every image from your new store as a backup.

Do it before you close the old store

Run the export before deleting products or closing your Shopify store. Once a product is gone, its image links stop working, and no tool can recover the files from the CSV.

If something goes wrong

A product arrived on WooCommerce without photos
Its Images cell was empty or a link failed during import. Find the product’s files in your Parcel ZIP by SKU, upload them to the media library, and add them to the product.
The import put the wrong photo first
The first link in the Images cell becomes the main image. Reorder the links, or change the main image on the product in WooCommerce.
Some images are in failed-downloads.csv
Those Shopify links didn’t return an image. Open each original_url while the Shopify store is still live, and save any that open by hand.
The old store is already closed
Shopify image links stop working once the store or products are gone, so they can’t be downloaded from the CSV any more. Check whether the images survive anywhere else, such as your own original photo files.

Questions

Does WooCommerce import images from a Shopify CSV?

Not directly. WooCommerce’s importer reads its own CSV format, where the Images column holds image links separated by commas. You can point it at Shopify’s links while they still work, but keep your own copy in case they stop.

Should I keep the Shopify store open during the move?

Yes, until the new store is checked. Shopify image links stop working once the products or the store are gone, and then the images can’t be downloaded from your export.

Are the images resized on the way?

Parcel saves each image exactly as Shopify serves it. WordPress may make extra sizes for your theme when you upload, but your original files stay as they are in the ZIP.

How do I check every product made it?

Export your products from WooCommerce (Products → All Products → Export) and, for each product, count the links in its Images cell against its rows in Parcel’s manifest.csv. Fewer links means some photos didn’t come across. The manifest lists only the images Parcel saved, so also check failed-downloads.csv, and if Parcel counted skipped links on screen, find the image links in your Shopify CSV that don’t start with https://cdn.shopify.com/ and save those by hand.

Pack your first export