
You need to import products from Excel to WooCommerce, fast. Maybe it’s an inventory export from your old platform, a catalog from your supplier, or a master product list of 500+ items you’ve been building in Excel for months. Either way, the thought of entering them one by one makes you want to close your laptop and walk away.
The good news is that you don’t need to buy anything. WooCommerce has a product importer built in, and it handles simple products, variable products, categories, and images. The one thing it won’t do is read your Excel file directly, so there’s a conversion step first.
In this article, we’ll cover the complete path to import products from Excel to WooCommerce, including the XLSX-to-CSV conversion, variable product handling, image imports, and the troubleshooting checklist to run through whenever an import misbehaves. So, let’s get started!
Table of Contents
Before You Start: Preparing Your Excel File
Clean your spreadsheet before you touch the importer. We’ve seen more imports fail because of bad source data than because of anything the import tool did, and ten minutes of file prep saves an hour of troubleshooting.
Check your data quality
Open your Excel file and scan the rows. Look for empty rows mixed into the data (delete them), inconsistent category naming (T-Shirts versus Tshirts versus T Shirts), merged cells (unmerge everything), and hidden columns that might have stale data.
Price columns are a common trap. If prices are stored as currency-formatted text like “$29.99” instead of the number 29.99, the import will either fail or create products with zero prices. Strip currency symbols and save prices as plain numbers.
One product per row
Each row should represent a single product. The only exception is variable products, which use one row for the parent and additional rows for each variation, covered in a later section.
Column headers
Use clear, descriptive headers in row 1: Product Name, SKU, Price, Short Description, Long Description, Category, and so on. Your column names don’t need to match WooCommerce’s internal field names, because you’ll map them during import. They just need to be unambiguous enough that you know what each column contains.
What you actually need
Less than most guides claim. A product row genuinely needs only a name, and a product type for anything that isn’t a simple product.
SKU is still strongly recommended, because it’s how you’ll match products for future updates, and WooCommerce generates one for you if it’s missing. Price, stock, and categories are all optional, though a short description is worth including so products don’t look bare on the frontend.
Images
If your spreadsheet references product images, make sure the image URLs are absolute (starting with https://) and publicly accessible. If you plan to upload image files separately, have the files ready alongside the spreadsheet.
Save a backup
Before you convert or edit anything, save a copy of your original Excel file somewhere safe. You’ll thank yourself the first time an accidental Find-and-Replace scrambles a column.
What We’ve Seen: The most common import failure we see has nothing to do with the import tool. It’s the source file. Merged cells in Excel, hidden columns, inconsistent category naming, and price fields formatted as currency text all cause problems downstream. Spending 10 to 15 minutes cleaning your Excel file before the import starts saves hours of diagnosing errors that are difficult to trace back to their cause after the fact.
Understanding WooCommerce Product Fields
Before the mapping step, it helps to know what WooCommerce expects on its side. Your spreadsheet columns will map to these field groups, and knowing the shape of each one tells you what to put in your Excel file.
- Essential fields: Product name, SKU, regular price, short description, long description, product type (simple, variable, variation, external, grouped).
- Common fields: Categories, tags, weight, dimensions (length, width, height), stock quantity, stock status, tax class.
- Image fields: One Images column holding full URLs, comma-separated inside quotes. The first URL becomes the featured image and the rest become the gallery.
- Custom attributes: Size, color, material. These become the basis for variable products, and they can also live on simple products as informational attributes.
- Custom meta fields: Any third-party plugin field, imported by prefixing the column header with
meta:, as inmeta:brand_code.
Your Excel columns don’t need to match these names exactly, because the importer’s Column Mapping screen lets you assign each one by hand. For a full field reference, see our guide on importing WooCommerce products.
Step 1: Convert Your Excel File To CSV
WooCommerce’s importer reads CSV files, not XLS or XLSX. So the first real step to import products from Excel to WooCommerce is a Save As, which takes about 30 seconds and needs no extra software.
How to convert in Excel
Open your Excel file and go to File → Save As. In the format dropdown, choose “CSV UTF-8 (Comma delimited) (*.csv)” and save. Microsoft’s official Excel CSV documentation walks through the dialog if you get stuck.
How to convert in Google Sheets
Open the sheet and go to File → Download → Comma-separated values (.csv). Google Sheets exports UTF-8 by default, so there’s nothing else to set.
Encoding matters
Pick the UTF-8 option, not plain “CSV (Comma delimited)”. Older Excel versions default to Windows-1252 or MacRoman, and any accented letter, currency symbol, or smart quote gets scrambled on import. This is the single most common cause of garbled product names.
Common gotcha 1: feature loss warning
Excel warns you that saving to CSV will lose features like formulas, formatting, and multiple sheets. This is expected. Only the active sheet is exported, and formulas are replaced by their computed values. Accept the warning and save.
Common gotcha 2: commas and quotes
If your product descriptions contain commas, those commas would confuse a CSV parser. Excel handles this automatically by wrapping values in double quotes ("description, with comma"). Open the saved CSV in a text editor and check that quoted fields look consistent. It usually works without intervention, but it’s worth the spot check.
Watch for line breaks inside cells
A pattern we see often with large catalogs: a description column containing line breaks inside individual cells. Excel preserves those breaks in the CSV output, and they can confuse the parser and truncate descriptions mid-sentence.
If your descriptions are rich text with paragraph breaks, replace the line breaks with <br> tags in Excel before converting. Plan a cleanup pass for it rather than discovering it after the import.

For the full column reference and formatting rules, see our WooCommerce CSV import guide.
Step 2: Upload And Map Your Columns
Go to Products → All Products and click Import to open the product CSV importer. Choose the file you just saved, then WooCommerce reads your header row and takes you to the Column Mapping screen.
Upload your CSV
If your file is too large to upload through the browser, open Advanced options and enter a server file path instead. Move the CSV over FTP first, then point the importer at it and the upload limit stops applying.
The Column Mapping screen
Your CSV headers appear on the left and WooCommerce fields on the right. Standard headers like Name, SKU, and Regular price are detected and mapped for you, leaving you to confirm or override the rest.
This is why your Excel headers never needed renaming. A column called “Product Name” or “Item Code” maps fine from the dropdown.
Map each column
Go through every column and either map it to a WooCommerce field or leave it as “Do not import”. Internal notes and supplier codes are usually worth skipping, though you can send them to a custom field instead by mapping them to a meta: key.
Read this screen properly rather than clicking through it. Anything WooCommerce doesn’t recognize defaults to “Do not import” and is silently skipped.
Step 3: Run The Import
Click Run the importer and WooCommerce processes the file row by row, creating or updating products as it goes. A progress bar shows how far along it is. Large catalogs take several minutes, especially when rows include image URLs that need downloading.
Duplicate handling
The Update existing products checkbox on the upload screen decides what happens when a row matches something already in your catalog.
- Unchecked (the default): only new products are created. Rows matching an existing product ID or SKU are skipped, so your catalog stays untouched.
- Checked: matching products are updated in place with the values in your file, and rows with no match are skipped.
Decide which one you want before you run it, because an update pass applies to your live catalog immediately with no undo.
Step 4: Verify Your Products
When the import finishes, WooCommerce shows a summary with counts of what was imported, updated, and skipped, plus any rows that failed. Don’t stop at that screen, because a “success” message only means the rows were processed, not that the data landed the way you intended.
- Read the failed rows. Note the row numbers of anything flagged so you can fix those rows and re-import just them.
- Spot-check in WooCommerce. Open Products → All Products and click into a handful of imported products. Verify name, price, description, categories, and images.
- Check categories. Confirm products landed in the right categories and that any new ones were created correctly.
- Check images. Verify featured and gallery images loaded. Missing images usually mean the URLs weren’t reachable during the import.
- Check the frontend. View a couple of products on your live store. Confirm they display correctly, add-to-cart works, and pricing matches your CSV.
Handling Variable Products
Variable products need a parent row plus one row per variation. A t-shirt in 3 sizes and 4 colors is 12 variations plus 1 parent, so 13 rows in your spreadsheet. This is where most first imports break, and it’s worth structuring carefully before converting.
What variable products are
A variable product is a single listing on the frontend containing multiple variations the customer picks between. Each variation has its own SKU, price, and stock level, while the parent carries the name, description, and attributes.
Excel structure for variable products
- Parent row: product type
variable, plus name, descriptions, categories, tags, and every attribute value the variations use. - Variation rows: product type
variation, the single attribute value that applies, its own price and stock, and a Parent column pointing at the parent’s SKU.
On the parent row, list the attribute values comma-separated inside quotes, like "Red, Blue, Green". Separating them with a pipe character is a habit from other import tools and it will not work here.
Attribute columns
You need a paired set of columns per attribute: Attribute 1 name and Attribute 1 value(s), then Attribute 2 and so on. Each variation row fills in the specific value, so Size = Small and Color = Red.
Common mistake
The mistake we see most often is variations importing as separate simple products, giving you 12 standalone listings instead of one configurable t-shirt. That almost always means the Parent column is missing or its value doesn’t match the parent’s SKU.
For a full walkthrough, see our variable products import guide.

Handling Product Images
Images come in by URL. Put full image URLs in an Images column and WooCommerce downloads each one into your Media Library during the import, attaching the first as the featured image and the rest as the gallery.
Method 1: URL references in your CSV
Include the full URL for each product, for example https://example.com/images/product-1.jpg. For multiple images, separate the URLs with commas and wrap the whole field in double quotes so the CSV parser keeps them in one cell.
Method 2: upload images separately, then reference
Upload your product images to the Media Library first, through Media → Add New or an FTP upload to the uploads folder. Then reference each image in your CSV by its full Media Library URL.
This route is useful when your images aren’t hosted anywhere public yet, since the importer can only fetch URLs it can actually reach.
Format and optimization
- Full URLs are the safest format. They remove any ambiguity about which image belongs to which product.
- Public access is required. Paste a URL into an incognito window. If it doesn’t load without a login, the importer can’t load it either.
- Optimize before importing. Large uncompressed images slow the import and bloat your store. Run them through TinyPNG, Squoosh, or a similar tool first.
- Alt text isn’t imported. The importer attaches images but won’t set alt text, so plan to add it afterward if it matters for your SEO.
Troubleshooting: When You Can’t Import Products From Excel To WooCommerce
If your attempt to import products from Excel to WooCommerce didn’t work, work through this checklist before trying again. The first two causes account for most failures.
- Nothing imported: usually encoding or a delimiter mismatch. Open the CSV in a text editor and confirm it’s UTF-8 and comma-delimited. European Excel installs often default to semicolons.
- Products imported but fields are wrong or empty: a mapping issue. Go back to Step 2 and check nothing you needed was left on “Do not import”.
- Categories not created: check the formatting. Nested categories use the full path with
>, as inClothing > T-Shirts. - Images not loading: paste a URL into an incognito window. Anything behind authentication, hot-link protection, or a redirect will fail silently.
- Special characters broken: re-save the file as CSV UTF-8 and import again.
- Import times out: PHP’s max_execution_time defaults to 30 seconds through a web server. Split the file into batches of 1,000 to 2,000 rows, or raise the limit in your PHP configuration.
- Variable products imported as simple: check that variation rows use type
variationand that the Parent column matches the parent’s SKU exactly, with no trailing spaces.
💡 For more detailed troubleshooting guidance, see our product import troubleshooting guide.
Start Importing Products From Excel To WooCommerce
Once the file is prepared correctly, you can import products from Excel to WooCommerce routinely. Preparation is most of the work: clean the spreadsheet, save it as UTF-8 CSV, and the built-in importer handles the rest at no cost.
Here’s a quick recap of what we covered:
- Prepare and clean the Excel file before converting anything.
- Convert the file to UTF-8 CSV to avoid encoding problems.
- Upload and map your columns on the Column Mapping screen.
- Verify results after the import and spot-check the frontend.
- Handle variable products with the parent-plus-variation row structure.
- Work through the troubleshooting checklist if anything misbehaves.
If you’re ready to keep managing your catalog in a spreadsheet, the easiest way to start is from your real data rather than a blank file. Store Exporter Deluxe exports your products straight to XLS or XLSX, so you can edit them in Excel and bring the file back in through the same import steps above.
Frequently Asked Questions
Can I import products directly from an Excel file?
No, WooCommerce reads CSV files rather than XLS or XLSX, so you need to save your Excel file as CSV first. It takes about 30 seconds through File → Save As in Excel, and Step 1 of this guide walks through it, including the UTF-8 option for special characters.
Do I need a plugin to import products from Excel to WooCommerce?
No, the importer is built into WooCommerce at Products → All Products → Import, and it handles simple products, variable products, categories, images, and custom fields. A paid import plugin only becomes useful if you need scheduled imports or supplier feeds pulled automatically from a URL or FTP server.
Will importing overwrite my existing products?
Only if you tick Update existing products on the upload screen. Left unchecked, which is the default, the importer creates new products and skips any row matching an existing product ID or SKU, so your catalog stays untouched.
How many products can I import at once?
There’s no product-count limit in WooCommerce itself. The real constraints are your server’s upload size and PHP execution time, so for very large catalogs split the file into batches of 1,000 to 2,000 rows, or place it on the server and use the file path option under Advanced options.
Can I import custom fields from my Excel file?
Yes, prefix the column header with meta: and the value is saved to that meta key, so meta:brand_code populates a brand_code custom field. You can also map any unrecognized column to a custom field by hand on the Column Mapping screen.
What if I make a mistake during import?
Fix the source spreadsheet and run the import again with Update existing products ticked, which corrects the affected products in place instead of duplicating them. Matching happens on product ID or SKU, so keep that column stable between runs.










