Most likely cause: a raw Etsy export stores photos in separate columns such as IMAGE1, IMAGE2, and IMAGE3. WooCommerce expects all product image references in one Images column. Combine them into one comma-separated field—or let CraftPorter do that conversion—before importing.
Why Etsy’s image columns do not map directly
Etsy and WooCommerce describe product photos differently in CSV files. An Etsy listing export can place each photo URL in its own numbered column. WooCommerce’s core importer accepts one Images field per product row, with the first image used as the featured image and later images added to the gallery.
WooCommerce’s own Etsy migration documentation warns that listings with multiple images will not import correctly from the untouched Etsy CSV because those photos occupy separate headers. Its recommended structure combines those URLs into one column.
https://example.com/photo-1.jpg, https://example.com/photo-2.jpg, https://example.com/photo-3.jpg
Because that value contains commas, a CSV parser must quote and escape the field correctly. Avoid pasting URLs into a spreadsheet and manually joining cells unless you are confident the resulting CSV remains valid.
Diagnose the failure in order
- Check which CSV you imported
If the header row still contains
IMAGE1,IMAGE2, and similar columns, it is the raw Etsy export—not a WooCommerce-ready file. - Find the WooCommerce
ImagesfieldOpen the converted CSV and confirm each product has one Images cell containing its photo URLs. In CraftPorter output, up to ten non-empty Etsy image URLs are combined in their original order.
- Review the import mapping
On WooCommerce’s Column mapping screen, the CSV header
Imagesshould map to the product Images field. If it says “Do not import,” stop and correct the mapping. - Open one image URL directly
Use a private browser window. The URL must return the image without a login, permission screen, or interactive redirect. A picture visible only inside an account cannot be fetched by your WordPress server.
- Inspect the import result and Media Library
Confirm whether the product row succeeded, failed, or skipped. Then check Media → Library. WooCommerce downloads remote images into WordPress; it does not leave the featured image hosted externally.
- Retry with one draft product
Back up the store and test a single affected row on staging. A small sample separates a URL problem from a server timeout or large-batch limit.
The image URL rules WooCommerce applies
According to the current WooCommerce core importer documentation:
- Images may already exist in the Media Library or be available online.
- External URLs must be directly accessible.
- URLs behind redirect scripts are not supported.
- The first image becomes the featured image.
- The core importer cannot create or update image alt text.
Your WordPress server must also be able to fetch it. Firewalls, hotlink protection, DNS failures, TLS problems, hosting restrictions, or expired remote URLs can block the server even when the address works from your computer.
How CraftPorter prevents the column problem
CraftPorter reads Etsy’s numbered image columns, removes empty values, preserves their order, and writes one WooCommerce-compatible Images field. It also shows the detected image count in the preview and warns when a listing has no image URL.
The converter does not download, alter, or rehost your photos. WooCommerce performs that download during the product import. Your original Etsy file stays unchanged.
If images are still missing after conversion
The product imported, but it shows a placeholder
Check Media Library first. If no new file appeared, try its first image URL in a private window, then test one row on staging. If the file did download, open the product and confirm the imported attachment is assigned as the featured image.
Only the first image imported
Open the CSV with a plain-text-aware editor and verify all URLs remain inside the same Images cell. A spreadsheet resave can split a comma-separated image list across columns if the field is not quoted correctly.
The import reports “Unable to use image”
Treat that as a failed remote fetch or invalid reference. Confirm the address is an actual image response rather than a webpage, redirect service, permission screen, or missing file. Then retry one product.
The Etsy URL worked yesterday
Create a fresh Etsy listings export, reconvert it, and test one draft row. For a durable fallback, save the original photos, upload them to your own Media Library, and use those local attachment filenames or URLs.
I am updating products that already exist
Use staging and a backup. WooCommerce matches updates by ID or SKU, so confirm identifiers and export a small destination sample before enabling “Update existing products.” Do not repeatedly import the full file while diagnosing one image.