Migrating or bulk updating products in WooCommerce requires a structured import process. The Import Export Suite for WooCommerce plugin allows products to be imported by selecting Product as the post type, choosing an import method, mapping the required fields, and configuring advanced options such as batch processing or scheduling. Product data can be imported using a CSV or XML file, including taxonomies, attributes, meta fields, and SEO data.
This guide explains how to import WooCommerce products step by step.
WooCommerce Mapping Fields
Before running a product import or export, it helps to know how field mapping works.
Every column in your file feeds a specific WooCommerce field — post_title carries the product’s name, while regular_price carries its standard price. The plugin can only process your data correctly when each field is mapped in the right format; a mistake in the input file can cause the import to behave unexpectedly.
The details of WooCommerce mapping fields are given below:
| Column/Tag Header | Explanation | Accepted value or format |
| post_title | Indicates the name of the product. | Text (ex. High Heel Shoe) |
| post_name | Indicates slug name of the product. | Text (ex. high-heel-shoe) |
| post_status | Indicates whether the product is in a draft or published mode. | draft/publish |
| post_excerpt | Indicates a short description of the product. | Text/HTML |
| post_content | Indicates description of the product. | Text/HTML |
| post_parent | Indicates parent of grouped and variable products. | Parent ID |
| post_password | For including a password for a private post. | Text |
| sku | SKU(stock keeping unit) is an identification, usually alphanumeric, of a particular product that allows it to be tracked for inventory purposes. | Alpha-numeric characters |
| menu_order | It decides the order of displaying the products in the shop. Items with menu order = 0 are displayed 1, 2, 3, etc. Products with the same menu order number are then listed alphabetically. When you create a new product it defaults to menu_order = 0. | Numeric characters |
| downloadable | After purchasing the product, whether the product can be downloaded or not. | yes/no |
| virtual | It is not physically existing as such but made by software to appear to do so. | yes/no |
| visibility | Indicates whether a product is available for purchase or not. | visible/hidden |
| stock | Total number of products available in stock. You can use (+) or (-) signs with parenthesis to add or subtract the number of products to the stock. | Numeric characters |
| stock_status | It indicates whether the product is in stock or not. | instock/outofstock/onbackorder |
| backorders | Indicate orders for out-of-stock products that cannot be currently fulfilled or shipped, but is requested nonetheless for when the product becomes available again. | yes/no |
| manage_stock | It indicates whether the stock is managed by a store or not. | yes/no |
| regular_price | Indicates the original price of the product. | Numeric characters |
| sale_price | It is the price of the product that is being offered at a discounted rate. | Numeric characters |
| weight | Indicates the weight of the product. | Numeric characters |
| length | Indicates the length of the product. | Numeric characters |
| width | Indicates the width of the product. | Numeric characters |
| height | Indicates the height of the product. | Numeric characters |
| images | Indicate image URL or image name. Supports multiple image URLs separated by ‘|’. | URL Eg: http://url/filename1.png |
| tax_status | It indicates whether the product is taxable or not. | taxable/none |
| tax_class | It indicates the tax option for the product. | Standard rate/Reduced rate/Zero rate |
| tax:product_type | Indicates the type of product, such as simple, variable etc. | Simple, Variable |
| tax:product_cat | It is used during importing the product which indicates the category of product. Use the pipe symbol to import multiple categories and the greater than symbol (>) to import category hierarchy. | Text |
| tax:product_tag | It is used during importing the product which indicates tag(s) used for the product. Use the pipe symbol to add multiple tags | Text |
| tax:product_brand | It indicates the brand of the product. | Text |
| attribute:Color | It indicates the available color of the product. Ex: red|blue|orange etc | Text |
| meta:attribute_color | Ex: red or blue or orange | Text |
| attribute_data:Color | It indicates the metadata about the attribute color of the product. | position|visible|variation (ex. 0|1|1) |
| attribute:Size | It indicates the available size of the product. | Ex. US7|US8|US9 |
| meta:attribute_size | It specifies the attribute value of each variation. | Ex. US7 or US8 or US9 |
| attribute_data:Size | It indicates the metadata about the attribute size of the product. | position|visible|variation (ex. 1|1|1) |
| attribute:pa_unit | This lists out the unit options. | Ex. 10 kg | 20 kg | 30 kg |
| meta:attribute_pa_unit | It indicates the metadata about the product unit. | Ex. 10 kg |
| attribute_data:pa_unit | It defines the position, visibility and whether used for variation or not. | position|visible|variation (ex. 4|1|1) |
| attribute_default:pa_unit | This is the default value of a unit attribute. | Ex. 10 kg |
Note: Attribute names with pa are global attributes and those without pa are treated as local attributes.
Mapping fields supported by Yoast SEO:
- meta:_yoast_wpseo_focuskw
- meta:_yoast_wpseo_title
- meta:_yoast_wpseo_metadesc
- meta:_yoast_wpseo_metakeywords
Import Products
To import WooCommerce products:
- Click on WebToffee Import/Export(Pro) > Import.
Step 1: Select post type
As a first step, you need to choose the post type as Product.
Step 2: Select import method
Pick one of the following methods to proceed with the import:
- Quick import
- Based on a pre-saved template
- Advanced import
Here is what each method does:
Quick Import
- Brings in the standard fields of the selected post type.
- Best suited when the input file was generated by this same plugin.
- Files can be sourced from: Local, URL, Existing files, FTP
- Select Import to run it right away, or continue to Step 3 for advanced options.
- See Step 4 for details on advanced options, batch imports, and scheduling.
Pre-saved template
- Applies the filter criteria and column settings saved during an earlier run to the chosen file.
- Choosing this option lets you pick an existing template from the Import template drop-down.
- Select Import to finish, or continue to Step 3 to adjust and reorder columns.
- See Step 3 for details on mapping and reordering import columns.
Advanced Import
- This option walks you through the complete set of filtering, column-selection, and advanced settings your import may call for.

Step 3: Map import columns
The import columns can be mapped under five groups:
- Default fields
- Taxonomies
- Meta(Custom fields)
- Attributes
- Hidden meta

Evaluate field
Use this to compute or append a value while the import runs. It takes a column from the input file, applies an expression to it, and writes the calculated result.
- Expression: combine the operators +*/-()&@ or string constants with attributes to shape the resulting value.
- Input: the drop-down column the expression should act on.
- Output: a preview generated from the first record of the input file.

- Click on Step 4 to proceed.
Step 4: Advanced Options/Batch Export/Scheduling
The final step presents the following controls:
- If product exists in the store: choose to skip the entry or update it.
- Match products by their: ID, SKU
- Skip import of new products: Yes limits the run to updating existing products only; No brings new products in from the input file as well.
- If conflict with an existing Post ID: One can either Skip item or Import as new item.
- Link up-sells, cross-sells and grouped products via SKU.
- Delete non-matching products from the store.
- Save the template file for future export (if needed).

- Select Import/Schedule to complete the process.
Products can be brought into the store immediately, or the import can be scheduled through FTP.

To schedule the import:
- Choose the Schedule option; the cron configuration window shown below opens.

Two schedule types are available:
- WordPress Cron: runs pending jobs whenever the site receives a visit — any event whose scheduled time has already passed is fired on that visit. It triggers jobs at the set time but relies on visitor traffic to do so.
- Server Cron: generates a unique URL that can be registered with your own system to trigger the scheduled events — the right choice when a separate scheduler is in place. Large data volumes may require the URL to be triggered as often as every minute.
Schedules can run on a daily, weekly, monthly, or custom basis, with a configurable start time for the import.
To directly import:
- Hit on the Import option
When the run finishes, a status pop-up summarises the outcome, listing how many records were imported successfully and how many failed (if any).

Julien
November 24, 2024
Hello there,
I’m a new user of the pro version. Imports and exports work great except when I try to update my product data with the GTIN. I filled up the datafield meta:_wpm_gtin_code but the values are not imported for all SKUs.
Do you have any idea why?
Thanks for your help
Hema
November 25, 2024
Hello Julien,
Thanks for reaching out. It seems that the technical needs to look into your CSV file to help further. Can you kindly contact customer care for more help.
FREDERIC ASSEMAT
November 23, 2023
Hi, I have a product import with images. What is the behavior of the plugin when the name of the images of a product is the same but the image is different in content?
Matt
November 5, 2023
hi,
When I run this importer to add new products, it is creating new categories instead of placing the products in the existing category. Are you able to tell me what I’m doing wrong please?
thanks.
Vineetha
November 7, 2023
Hi Matt,
Thank you for reaching out to us. Suppose you haven’t used the correct category slug in the CSV, then, the categories will be duplicated. This issue can also occur if you have given a custom slug.