Import products to WooCommerce from a CSV
To import products into WooCommerce from a CSV, open Products → All Products → Import, choose a UTF-8 CSV that uses WooCommerce's column names, map the columns and click Run the importer. Write prices as plain numbers, give every product a unique SKU, and use direct image URLs. Test three rows before the full file.
For WooCommerce store owners loading a new catalogue, a supplier price list or bulk price and stock updates.
knowledge
- Read time
- 6 min
- Sections
- 7
- Updated
- 14 Nov 2026
- Written by
- WebJi® team
Last editorial update: 14 November 2026. Prices follow the dated sources on this page; checkout confirms current charges.
Where the WooCommerce product importer is
WooCommerce has a built-in CSV importer under Products → All Products → Import, so a standard catalogue needs no extra plugin. The Export button beside it writes your current products to a CSV, and that export is also the best template for the column names WooCommerce expects.
- Import: creates new products, or updates existing ones matched by ID or SKU when "Update existing products" is ticked.
- Export first: on a store that already has products, export before every import so you can restore names, prices and SKUs.
- Not a backup: a product CSV does not include orders, customers or the image files themselves.
How to format the product CSV
Save the file as CSV in UTF-8, use WooCommerce's own column headers, write prices as plain numbers, and use 1/0 for yes/no fields. Excel's plain "CSV" option can change the encoding and break Hindi or other non-Latin product names; choose "CSV UTF-8" instead.
Type,SKU,Name,Published,Visibility in catalog,Regular price,Sale price,Categories,Images,Tax class,In stock?,Stock
simple,KURTA-BLU-M,Blue Cotton Kurta,1,visible,1299,999,"Clothing > Women",https://www.example.in/media/kurta-blue.jpg,,1,25
simple,MUG-STEEL-01,Steel Travel Mug,1,visible,549,,"Kitchen, Gifts",https://www.example.in/media/mug-1.jpg,,1,60
| Column | What to enter | Example |
|---|---|---|
| Type | simple, variable, variation, grouped or external | simple |
| SKU | Unique code; used to match rows in later updates | KURTA-BLU-M |
| Published | 1 published, 0 private, -1 draft | 1 |
| Regular price / Sale price | Numbers only, no ₹ sign or thousands separator | 1299 |
| Categories | Parent > Child; separate several with commas | Clothing > Women |
| Images | Full URLs, first is featured, rest become the gallery | https://…/kurta-blue.jpg |
| Visibility in catalog | visible, catalog, search or hidden | visible |
| Tax class | The tax class name you created for a GST rate; blank uses Standard | gst-12 |
Leave the ID column out for new products; WooCommerce assigns IDs. Categories are created automatically if they do not exist. Extra data such as an HSN code can go in a column named Meta: _hsn_code (use the meta key your GST invoice plugin reads); GST invoices in WooCommerce explains which fields matter.
How to run the import and check it worked
Test with three rows first, then import the full file, stay on the screen until the importer finishes, and check one product in the admin and on the shop.
- Export the current products if the store is not empty.
- Open Products → All Products → Import and choose the CSV.
- Tick Update existing products only if the file should change products that already exist.
- Click Continue, check the column mapping, and set unwanted columns to "Do not import".
- Click Run the importer and do not refresh or close the tab.
- Read the summary (imported, updated, skipped, failed), then open one new product and its shop page.
If WordPress rejects the upload as an unsupported file type, upload the CSV to wp-content/uploads with the hosting file manager and use the importer's advanced option to choose a file already on the server.
Getting product images in through the CSV
Each Images URL must be a direct, publicly reachable link to a JPG, PNG or WebP that WooCommerce can download during the import; the first URL becomes the featured image and the rest the gallery.
- Use direct file links, not Google Drive or Dropbox share pages, which return HTML instead of an image.
- Upload images to the Media Library first and use their URLs to avoid timeouts on large catalogues.
- Large images slow the import; resize to a sensible width and compress before uploading, as covered in converting WordPress images to WebP.
- The core importer does not set image alt text; add it afterwards in the Media Library.
Importing variable products and their variations
A variable product is one parent row plus one row per variation: the parent lists all attribute values, and each variation row has Type variation, its own SKU and price, and a Parent column containing the parent's SKU.
Type,SKU,Name,Parent,Regular price,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global
variable,TEE-LOGO,Logo T-shirt,,,Size,"S, M, L",1,1
variation,TEE-LOGO-S,,TEE-LOGO,499,Size,S,,1
variation,TEE-LOGO-M,,TEE-LOGO,499,Size,M,,1
variation,TEE-LOGO-L,,TEE-LOGO,549,Size,L,,1
Keep the parent row above its variations in the file. After importing, open the parent's Variations tab and check each price and stock level. Creating one by hand is covered in creating a variable product.
When the file is too large or the import stops halfway
The maximum upload size and how long one request may run are server limits, so split large catalogues into files of a few hundred to a couple of thousand rows and import them in order.
| Symptom | Likely cause | Fix |
|---|---|---|
| Rows skipped | SKU or ID already exists and "Update existing" was off | Tick the update option, or change the SKUs |
| Garbled characters (é, ???) | File not saved as UTF-8 | Re-save as CSV UTF-8 |
| Prices blank | ₹ sign or commas in the price | Use plain numbers like 1299 |
| Images missing | Share-page links or blocked downloads | Use direct URLs or Media Library files |
| Import stops halfway | Memory or execution time limit | Split the file; ask the host to review limits |
Server sizing for bigger catalogues is in WooCommerce hosting requirements. On WebJi® WooCommerce hosting, email support@webji.services with the error, the file size and the maximum shown on the upload screen; support replies 24/7 in Hindi and English.
Frequently asked questions
Can I update only prices or stock with a CSV?
Yes. Make a CSV with just SKU plus the columns you want to change, such as Regular price or Stock, tick "Update existing products", and map only those columns. Other fields stay as they are. Export first so you can reverse a mistake.
Can I import products from a supplier's Excel sheet?
Yes, after reshaping it. Rename the supplier's headers to WooCommerce's column names, remove currency symbols and merged cells, save as CSV UTF-8, and test three rows. If the supplier's format changes often, a dedicated import plugin with saved mappings can save time.
Does the CSV import duplicate products if I run it twice?
With SKUs present and "Update existing products" ticked, the second run updates the same products. Without SKUs or with the box unticked, rows can be skipped or duplicated, so always give every product a unique SKU.
How do I move all products from another WooCommerce store?
Export products from the old store and import the CSV into the new one; image URLs pointing at the old site must still work during import. For a whole store with orders and customers, migrate the site instead, as described in migrating a WordPress site.
Checked 15 November 2026 against WooCommerce's product CSV importer documentation · Reviewed by the WebJi® team, Jaipur.
Ready to get started with WebJi®?
Join 12,000+ businesses across India and overseas. INR pricing, 18% GST shown before payment and 24/7 email support in Hindi and English — average first reply under 60 minutes.