{"id":56400,"date":"2026-07-01T06:32:13","date_gmt":"2026-07-01T10:32:13","guid":{"rendered":"https:\/\/litextension.com\/blog\/?p=56400"},"modified":"2026-09-30T05:57:16","modified_gmt":"2026-09-30T09:57:16","slug":"woocommerce-csv-import","status":"publish","type":"post","link":"https:\/\/litextension.com\/blog\/woocommerce-csv-import\/","title":{"rendered":"WooCommerce CSV Import: Format, Steps &#038; Troubleshooting"},"content":{"rendered":"<p>WooCommerce CSV import is a convenient way to add or update products without entering each item manually. However, even small formatting errors can result in missing images, incorrect variations, or duplicate products.<\/p>\n<p>The good news is that the process is straightforward once you understand the CSV format WooCommerce requires! In this guide, we\u2019ll explain how to structure your product CSV and walk you through importing products, variations, images, and custom metadata.<\/p>\n<hr \/>\n<h2 style=\"text-align: left;\">WooCommerce CSV Import Format: What You Need to Know<\/h2>\n<p>WooCommerce\u2019s built-in product importer expects your CSV file to follow a specific structure. Correct encoding, column names, value formats, and identifiers help reduce import errors, but you should still review the column mapping and import settings before proceeding.<\/p>\n<h3>WooCommerce CSV import file requirements<\/h3>\n<p>Before importing, make sure your CSV follows these basic formatting rules:<\/p>\n<ul>\n<li><strong>Use UTF-8 encoding<\/strong>. WooCommerce recommends saving or exporting the file as a UTF-8 CSV to avoid character and encoding issues.<\/li>\n<li><strong>Use 1 and 0 for Boolean fields.<\/strong> For example, Is featured? uses 1 for true and 0 for false. Published controls product status: 1 = published, 0 = private, -1 = draft, and 2 = pending review.<\/li>\n<li><strong>Separate multiple values with commas.<\/strong> For example, multiple categories or tags can be entered as comma-separated values. If a single value itself contains a comma, enclose it appropriately or escape the comma according to WooCommerce&#8217;s CSV rules.<\/li>\n<li><strong>Use &gt; for taxonomy hierarchies.<\/strong> For example, Clothing &gt; T-Shirts represents a child category under Clothing.<\/li>\n<li><strong>Distinguish product IDs from product references.<\/strong> In the ID column, enter the numeric ID, such as 100. In reference columns such as Parent, use id:100 for an existing product ID or SKU101 for a SKU.<\/li>\n<li><strong>Keep the column headers consistent with WooCommerce&#8217;s schema.<\/strong> WooCommerce automatically maps recognized column names during import; unrecognized columns are not imported by default unless they are mapped appropriately.<\/li>\n<\/ul>\n<div class=\"table3\"><strong>Important: <\/strong>You cannot assign a specific WordPress product ID to a brand-new product through the CSV. If the ID does not already exist, WooCommerce assigns the next available ID.<\/div>\n<h3>Important WooCommerce CSV fields<\/h3>\n<p>You don&#8217;t need every available column for every import. The fields you need depend on the product data you&#8217;re bringing into WooCommerce. Below are some of the most important ones:<\/p>\n<table>\n<thead>\n<tr>\n<th>CSV field<\/th>\n<th>What it controls<\/th>\n<th>Example<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ID<\/code><\/td>\n<td>Identifies an existing product for updates<\/td>\n<td><code>100<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Type<\/code><\/td>\n<td>Defines the product type<\/td>\n<td><code>simple<\/code>, <code>variable<\/code>, <code>variation<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>SKU<\/code><\/td>\n<td>Product&#8217;s unique identifier<\/td>\n<td><code>TSHIRT-001<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Name<\/code><\/td>\n<td>Product name<\/td>\n<td><code>Blue Cotton T-Shirt<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Published<\/code><\/td>\n<td>Product status<\/td>\n<td><code>1<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Regular price<\/code><\/td>\n<td>Regular selling price<\/td>\n<td><code>24.99<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Sale price<\/code><\/td>\n<td>Discounted price<\/td>\n<td><code>19.99<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Categories<\/code><\/td>\n<td>Product categories<\/td>\n<td><code>Clothing, Clothing &gt; T-Shirts<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Tags<\/code><\/td>\n<td>Product tags<\/td>\n<td><code>cotton, summer<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Images<\/code><\/td>\n<td>Product images<\/td>\n<td><code>https:\/\/example.com\/tshirt.jpg<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Parent<\/code><\/td>\n<td>Links a variation to its parent product<\/td>\n<td><code>TSHIRT-001<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Attribute 1 name<\/code><\/td>\n<td>Attribute name<\/td>\n<td><code>Size<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Attribute 1 value(s)<\/code><\/td>\n<td>Available attribute values<\/td>\n<td><code>S, M, L<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Attribute 1 visible<\/code><\/td>\n<td>Whether the attribute is displayed<\/td>\n<td><code>1<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Attribute 1 global<\/code><\/td>\n<td>Whether the attribute is a global attribute<\/td>\n<td><code>1<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>These fields come from WooCommerce&#8217;s current built-in <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/wiki\/Product-CSV-Import-Schema\" target=\"_blank\" rel=\"noopener nofollow\">Product CSV Import Schema<\/a>. The schema also includes fields for descriptions, inventory, shipping, downloads, upsells, cross-sells, external products, and other product properties.<\/p>\n<p>For <strong>variable products,<\/strong> the Parent and Attribute fields are particularly important because WooCommerce uses them to establish the relationship between the parent product and its variations. We&#8217;ll cover this structure in more detail later in the guide.<\/p>\n<h3>Custom fields and metadata<\/h3>\n<p>In addition, WooCommerce also supports importing product metadata through CSV. To import a custom metadata field, add the meta: prefix to the column header. For example:<\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace;\">meta:product_depth<\/span><\/p>\n<p>This tells WooCommerce to treat the column as product metadata rather than a standard product field. Unrecognized columns without the appropriate mapping are not imported by default. The built-in importer supports plain-text custom metadata; serialized data and JSON are not supported by the standard CSV schema.<\/p>\n<hr \/>\n<h2>WooCommerce CSV Import: How to Import Important Fields &amp; Data Using CSV<\/h2>\n<p>Once your CSV follows WooCommerce\u2019s required format, you can use the built-in importer to add or update product data in bulk. The overall workflow is similar for different types of data, but products, variations, images, and custom metadata require different CSV structures.<\/p>\n<p>Follow the relevant steps below based on what you want to import.<\/p>\n<h3>1. Importing products<\/h3>\n<p>For standard products, you can import fields such as product names, SKUs, prices, categories, stock, and descriptions through WooCommerce\u2019s built-in CSV importer.<\/p>\n<h4>Step 1: Prepare your product CSV<\/h4>\n<p>First, create your CSV with the product data you want to import and use WooCommerce\u2019s supported column headers, such as Name, SKU, Regular price, Sale price, Categories, Tags, and Images. Save the file as a UTF-8 CSV. If you are updating existing products, include their product IDs or SKUs so WooCommerce can match the rows to the products in your store.<\/p>\n<h4>Step 2: Upload the CSV and map your columns<\/h4>\n<p>In your WordPress dashboard, go to <strong>Products &gt; All Products<\/strong> and click <strong>Import<\/strong> at the top of the page.<\/p>\n<figure id=\"attachment_94698\" aria-describedby=\"caption-attachment-94698\" style=\"width: 1272px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"size-full wp-image-94698\" src=\"https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products.webp\" alt=\"woocommerce-csv-products\" width=\"1272\" height=\"580\" srcset=\"https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products.webp 1272w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products-300x137.webp 300w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products-1024x467.webp 1024w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products-768x350.webp 768w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products-750x342.webp 750w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woo-products-1140x520.webp 1140w\" sizes=\"(max-width: 1272px) 100vw, 1272px\" \/><figcaption id=\"caption-attachment-94698\" class=\"wp-caption-text\">Click &#8220;Import&#8221; to upload your CSV.<\/figcaption><\/figure>\n<p>On the Upload CSV file screen, click <strong>Choose File,<\/strong> select your CSV, and click <strong>Continue<\/strong>. WooCommerce will take you to the Column mapping screen and automatically match recognized CSV headers to product fields. Review the mappings and use the dropdown beside any column to select the correct field or Do not import if you want to skip it.<\/p>\n<h4>Step 3: Run the import and check your products<\/h4>\n<p>Once the mappings are correct, click<strong> Run the importer<\/strong>. Wait for WooCommerce to finish processing the CSV without refreshing or leaving the page. When the import is complete, open several products and check important fields such as SKUs, prices, categories, stock, and descriptions.<\/p>\n<div class=\"table3\">\n<p><strong>Updating existing products<\/strong><\/p>\n<p>If you want to update rather than create products, select<strong> Update existing products<\/strong> on the upload screen before clicking <strong>Continue.<\/strong> WooCommerce uses the ID or SKU in your CSV to match existing products. Rows that do not match an existing product are skipped.<\/p>\n<\/div>\n<h3>2. Importing variable products and variations<\/h3>\n<p>Unlike simple products, variable products need a different CSV structure because the file must define the parent product and its individual variations.<\/p>\n<h4>Step 1: Set up the parent and variation rows in your CSV<\/h4>\n<p>First, create one row for the parent product and one row for each variation.<\/p>\n<p>Then, set the parent product\u2019s Type to variable and each variation\u2019s Type to variation. Give the parent and each variation a SKU and make sure every variation has a unique SKU. In each variation row, use the <strong>Parent<\/strong> column to connect it to the parent product using the parent SKU or ID.<\/p>\n<h4>Step 2: Add the attributes and variation values<\/h4>\n<p>Now, use columns such as <span style=\"font-family: 'courier new', courier, monospace;\">Attribute 1 name<\/span>, <span style=\"font-family: 'courier new', courier, monospace;\">Attribute 1 value(s)<\/span>, <span style=\"font-family: 'courier new', courier, monospace;\">Attribute 1 visible<\/span>, and <span style=\"font-family: 'courier new', courier, monospace;\">Attribute 1 global<\/span> to define the attributes. The parent row should contain all available values, while each variation row should contain the value assigned to that variation.<\/p>\n<p>For example, a T-shirt with Small and Medium variations can use this structure:<\/p>\n<table style=\"width: 86.49%;\">\n<tbody>\n<tr>\n<td style=\"text-align: center; width: 12.894%;\"><b>Type<\/b><\/td>\n<td style=\"text-align: center; width: 19.014%;\"><b>SKU<\/b><\/td>\n<td style=\"text-align: center; width: 3.62206%;\"><b>Parent<\/b><\/td>\n<td style=\"text-align: center; width: 15.7593%;\"><b>Attribute 1 name<\/b><\/td>\n<td style=\"text-align: center; width: 20.0195%;\"><b>Attribute 1 value(s)<\/b><\/td>\n<td style=\"text-align: center; width: 12.5019%;\"><b>Attribute 1 visible<\/b><\/td>\n<td style=\"text-align: center; width: 16.0458%;\"><b>Attribute 1 global<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center; width: 12.894%;\"><span style=\"font-weight: 400;\">variable<\/span><\/td>\n<td style=\"text-align: center; width: 19.014%;\"><span style=\"font-weight: 400;\">tshirt<\/span><\/td>\n<td style=\"text-align: center; width: 3.62206%;\"><span style=\"font-weight: 400;\">\u2014<\/span><\/td>\n<td style=\"text-align: center; width: 15.7593%;\"><span style=\"font-weight: 400;\">Size<\/span><\/td>\n<td style=\"text-align: center; width: 20.0195%;\"><span style=\"font-weight: 400;\">S, M<\/span><\/td>\n<td style=\"text-align: center; width: 12.5019%;\"><span style=\"font-weight: 400;\">1<\/span><\/td>\n<td style=\"text-align: center; width: 16.0458%;\"><span style=\"font-weight: 400;\">0<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center; width: 12.894%;\"><span style=\"font-weight: 400;\">variation<\/span><\/td>\n<td style=\"text-align: center; width: 19.014%;\"><span style=\"font-weight: 400;\">tshirt-s<\/span><\/td>\n<td style=\"text-align: center; width: 3.62206%;\"><span style=\"font-weight: 400;\">tshirt<\/span><\/td>\n<td style=\"text-align: center; width: 15.7593%;\"><span style=\"font-weight: 400;\">Size<\/span><\/td>\n<td style=\"text-align: center; width: 20.0195%;\"><span style=\"font-weight: 400;\">S<\/span><\/td>\n<td style=\"text-align: center; width: 12.5019%;\"><span style=\"font-weight: 400;\">1<\/span><\/td>\n<td style=\"text-align: center; width: 16.0458%;\"><span style=\"font-weight: 400;\">0<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center; width: 12.894%;\"><span style=\"font-weight: 400;\">variation<\/span><\/td>\n<td style=\"text-align: center; width: 19.014%;\"><span style=\"font-weight: 400;\">tshirt-m<\/span><\/td>\n<td style=\"text-align: center; width: 3.62206%;\"><span style=\"font-weight: 400;\">tshirt<\/span><\/td>\n<td style=\"text-align: center; width: 15.7593%;\"><span style=\"font-weight: 400;\">Size<\/span><\/td>\n<td style=\"text-align: center; width: 20.0195%;\"><span style=\"font-weight: 400;\">M<\/span><\/td>\n<td style=\"text-align: center; width: 12.5019%;\"><span style=\"font-weight: 400;\">1<\/span><\/td>\n<td style=\"text-align: center; width: 16.0458%;\"><span style=\"font-weight: 400;\">0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For a local product attribute, set <span style=\"font-family: 'courier new', courier, monospace;\">Attribute 1 global<\/span> to 0. Use 1 when the attribute is a global attribute already configured in the store.<\/p>\n<h4>Step 3: Import the CSV through the product importer<\/h4>\n<p>Go to<strong> Products &gt; All Products &gt; Import<\/strong>, click <strong>Choose File<\/strong>, select the CSV, and click<strong> Continue.<\/strong> On the Column mapping screen, check that the Type, SKU, Parent, and attribute columns are mapped correctly. Then click R<strong>un the importer<\/strong> and wait for the process to finish.<\/p>\n<h4>Step 4: Verify the variable product<\/h4>\n<p>Last but not least, open the imported product and check that WooCommerce has created the parent as a variable product and attached the expected variations to it. Check the variation attributes, SKUs, prices, and stock individually.<\/p>\n<p>If you are converting an existing simple product: WooCommerce 11.1 introduced a single-import workflow for this case when the parent product row appears before its variation rows. You select <strong>Update existing products<\/strong> during the import, and WooCommerce can update the existing parent and create the new variations in the same import when the required conditions are met.<\/p>\n<p>If you cannot guarantee the row order, or you are using a version earlier than 11.1, WooCommerce recommends using two imports instead.<\/p>\n<h3>3. Importing product images<\/h3>\n<p>Here&#8217;s the great news: You can add product images through <strong>the Images column in the same product CSV!\u00a0<\/strong> WooCommerce supports images that are already in the Media Library as well as directly accessible external image URLs.<\/p>\n<h4>Step 1: Add your image references to the CSV<\/h4>\n<p>In the<strong> Images<\/strong> column, enter the direct URL of an online image or the filename of an image that is already available in your Media Library.<\/p>\n<p>You can list multiple images for one product using the format supported by WooCommerce\u2019s core product CSV schema. The first image is used as the featured image; meanwhile, additional images are added to the product gallery.<\/p>\n<figure id=\"attachment_94701\" aria-describedby=\"caption-attachment-94701\" style=\"width: 1247px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"size-full wp-image-94701\" src=\"https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images.webp\" alt=\"woocommerce-csv-using-external-images\" width=\"1247\" height=\"327\" srcset=\"https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images.webp 1247w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images-300x79.webp 300w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images-1024x269.webp 1024w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images-768x201.webp 768w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images-750x197.webp 750w, https:\/\/litextension.com\/blog\/wp-content\/uploads\/2026\/07\/woocommerce-csv-using-external-images-1140x299.webp 1140w\" sizes=\"(max-width: 1247px) 100vw, 1247px\" \/><figcaption id=\"caption-attachment-94701\" class=\"wp-caption-text\">Enter the direct URL of an online image in the &#8220;Images&#8221; column.<\/figcaption><\/figure>\n<h4>Step 2: Check the image URLs before importing<\/h4>\n<p>For external images, make sure the URL points directly to an accessible image. WooCommerce downloads accessible external images into the Media Library during the import. URLs that work through redirect scripts, including some cloud-storage links, are not supported by the core importer.<\/p>\n<h4>Step 3: Upload and import the CSV<\/h4>\n<p>Go to <strong>Products &gt; All Products &gt; Import,<\/strong> then click <strong>Choose File <\/strong>and select your CSV. On the Column mapping screen, make sure the Images column is mapped to the image field. Then, just like with other import processes, click <strong>Run the importer<\/strong> and wait for the import to finish.<\/p>\n<p>Once done, open several imported products and confirm that the featured image and gallery images appear correctly. Note that WooCommerce\u2019s core CSV importer cannot add, edit, or update product image alt text through the CSV.<\/p>\n<h3>4.\u00a0Importing custom product data<\/h3>\n<p>What if\u00a0 your products contain custom metadata that is not covered by WooCommerce\u2019s standard product fields? In that case, you can import it using the <span style=\"font-family: 'courier new', courier, monospace;\">meta:<\/span> prefix.<\/p>\n<h4>Step 1: Add the custom metadata to your CSV.<\/h4>\n<p>First, identify the metadata key used by your custom product field and add it to the CSV header with <span style=\"font-family: 'courier new', courier, monospace;\">meta:<\/span> in front of it.<\/p>\n<p>For example, if the metadata key is product_depth, use <span style=\"font-family: 'courier new', courier, monospace;\">meta:product_depth<\/span> as the column header. Enter the corresponding value for each product in that column.<\/p>\n<h4>Step 2: Upload the CSV and map the metadata column<\/h4>\n<p>Go to <strong>Products &gt; All Products &gt; Import,<\/strong> click Choose File and upload your CSV. On the Column mapping screen, WooCommerce can recognize meta: columns as product metadata. If the column is not mapped automatically, open its dropdown and select Import as meta.<\/p>\n<p>After checking the mapping, click Run the importer and wait for the process to finish. Then check the affected products to confirm that the custom metadata was imported correctly.<\/p>\n<p>Keep in mind that WooCommerce\u2019s core importer only handles fields supported by its product CSV schema and recognized product metadata. If the data comes from a third-party extension and requires extension-specific fields, check that extension\u2019s import documentation before proceeding.<\/p>\n<hr \/>\n<h2>Need Help With Your WooCommerce CSV Import?<\/h2>\n<p>WooCommerce\u2019s built-in importer works well for product CSVs that follow its required format. But files exported from another platform may use different column names, product relationships, or data structures that need adjusting before import.<\/p>\n<p>LitExtension\u2019s CSV File Migration Service provides expert help with preparing files, mapping fields, and transferring supported data to WooCommerce. Our team reviews your files and requirements, handles the agreed migration, and checks the results before delivery. If you also need to transfer customers, orders, or custom data, we assess what your files contain and confirm the scope and any customization required.<\/p>\n<p>If your source store is still accessible on a supported platform, LitExtension\u2019s <a href=\"https:\/\/app.litextension.com\/\" target=\"_blank\" rel=\"noopener\">Automated Migration Tool<\/a> may let you transfer data directly without preparing CSV files. Share your source platform and migration requirements so our team can recommend a suitable approach.<\/p>\n<div class=\"cta-detail\" style=\"text-align: left;\">\n<div>\n<h2 class=\"title\">Need Help With WooCommerce Import?<\/h2>\n<p>LitExtension provides a well-optimized CSV file migration service for your data transfer.<\/p>\n<p><a class=\"btn-frame\" href=\"https:\/\/litextension.com\/migration-services\/csv-files-migration.html?utm_source=blog&amp;utm_medium=display&amp;utm_campaign=ctabox&amp;utm_term=kristen&amp;utm_content=woocsvimport_bot\" target=\"_blank\" rel=\"noopener\">GET FREE CONSULTATION<\/a><\/p>\n<\/div>\n<div><img decoding=\"async\" class=\"size-medium wp-image-78213\" src=\"https:\/\/litextension.com\/blog\/wp-content\/uploads\/2024\/09\/2-08-1.png\" alt=\"How to perform WooCommerce import CSV with LitExtension\" \/><\/div>\n<\/div>\n<hr \/>\n<h2 style=\"text-align: left;\">Troubleshooting WooCommerce CSV Import Issues<\/h2>\n<p style=\"text-align: left;\">Even a properly formatted file can hit snags once it reaches WooCommerce. Here are the errors that come up most often, and what actually fixes them.<\/p>\n<h3 style=\"text-align: left;\">1. WooCommerce cannot upload or process the CSV<\/h3>\n<p style=\"text-align: left;\">A CSV may fail before the import starts because of an invalid file format, server restrictions, or a file that is too large for the server to process. WooCommerce recommends using a UTF-8 CSV and splitting large files into smaller batches when necessary.<\/p>\n<p style=\"text-align: left;\">How to fix it:<\/p>\n<ul>\n<li style=\"text-align: left;\">Make sure the file is saved as UTF-8 CSV.<\/li>\n<li style=\"text-align: left;\">If WordPress displays \u201cSorry, this file type is not permitted for security reasons,\u201d upload the CSV to the site&#8217;s uploads directory through SFTP or the hosting file manager. Then use Show advanced options in the importer to enter the server file path.<\/li>\n<\/ul>\n<p style=\"text-align: left;\">For large files, split the CSV into smaller batches and import them separately. If the problem continues, ask your hosting provider to check upload, memory, and processing limits.<\/p>\n<h3 style=\"text-align: left;\">2. CSV data is imported into the wrong field or not imported<\/h3>\n<p style=\"text-align: left;\">WooCommerce automatically maps recognized CSV headers, but columns that do not match the product CSV schema are not imported by default. Formatting also affects how values are interpreted: use numeric values in the ID column, and add the id: prefix when referencing a product ID in columns such as Parent.<\/p>\n<p style=\"text-align: left;\">How to fix it:<\/p>\n<ul>\n<li style=\"text-align: left;\">On the Column mapping screen, review the mapping for every column before clicking Run the importer Select <strong>Do not import<\/strong> for columns you do not need.<\/li>\n<li style=\"text-align: left;\">Check that your headers match WooCommerce&#8217;s supported schema.<\/li>\n<li style=\"text-align: left;\">Use the correct format for special values, such as 1\/0 for Boolean fields and id:100 when referencing an existing product ID.<\/li>\n<\/ul>\n<p style=\"text-align: left;\">For custom metadata, use the<span style=\"font-family: 'courier new', courier, monospace;\"> meta:<\/span> prefix, such as meta:product_depth, and map it to Import as meta if necessary.<\/p>\n<h3 style=\"text-align: left;\">3. Variations or their Attributes are not imported correctly<\/h3>\n<p style=\"text-align: left;\">Variation data depends on several CSV fields working together. If the Type, Parent, SKU, or attribute values are inconsistent, WooCommerce may skip the variation or fail to associate it with the correct parent product.<\/p>\n<p style=\"text-align: left;\">How to fix it:<\/p>\n<ul>\n<li style=\"text-align: left;\">Set the parent product&#8217;s Type to variable and each variation&#8217;s Type to variation. Give every variation a unique SKU.<\/li>\n<li style=\"text-align: left;\">Check that Parent contains the correct parent SKU or ID.<\/li>\n<li style=\"text-align: left;\">Make sure the attribute name and values in the variation rows match those defined for the parent.<\/li>\n<\/ul>\n<p style=\"text-align: left;\">When converting an existing simple product using WooCommerce 11.1&#8217;s single-import workflow, make sure the parent row appears before its variation rows.<\/p>\n<h3 style=\"text-align: left;\">4. Images are missing or duplicated after import<\/h3>\n<p style=\"text-align: left;\">As mentioned earlier, WooCommerce can import images from direct external URLs or reference images already available in the Media Library. Still, problems can occur when an image URL is inaccessible, relies on redirects, or the same external image is repeatedly downloaded during imports.<\/p>\n<p style=\"text-align: left;\">How to fix it:<\/p>\n<ul>\n<li style=\"text-align: left;\">Open external image URLs directly in a browser to confirm that they point to the actual image.<\/li>\n<li style=\"text-align: left;\">Check that the Images values are correctly formatted.<\/li>\n<li style=\"text-align: left;\">If an image already exists in the Media Library, use its filename where supported instead of repeatedly downloading it from an external URL.<\/li>\n<li style=\"text-align: left;\">Test a small number of images before importing a large catalog.<\/li>\n<\/ul>\n<p>Again, please keep in mind that the core WooCommerce importer does not add or update image alt text through CSV.<\/p>\n<h3>5. Products are skipped during import<\/h3>\n<p>Check the import log to identify the affected rows and their reported errors.<\/p>\n<ul>\n<li>If a SKU already exists, select Update existing products when you intend to update that product.<\/li>\n<li>For standard product updates, confirm that each row\u2019s ID or SKU matches an existing product.<\/li>\n<li>If products were imported but seem missing, check their Published values and product status.<\/li>\n<\/ul>\n<p>Correct the affected rows and test a small batch before retrying the full file.<\/p>\n<hr \/>\n<h2 style=\"text-align: left;\">Best Practices for WooCommerce CSV Import<\/h2>\n<p style=\"text-align: left;\">Most of the issues above are avoidable, not just fixable after the fact. A few habits go a long way toward making a WooCommerce CSV import predictable instead of a gamble:<\/p>\n<ul>\n<li><strong>Back up your store before importing.<\/strong> Keep a current backup of your database and site files so you can restore the store if needed. A product CSV export is useful for reference, but it does not replace a full backup.<\/li>\n<li><strong>Test with a small batch first<\/strong>. Import 5\u201310 rows before running the full file. This surfaces mapping or formatting issues while they&#8217;re still easy to fix, rather than after thousands of rows have already gone through.<\/li>\n<li><strong>Save your file as UTF-8 before every import.<\/strong> Recheck the saved CSV after editing, as spreadsheet applications can change its encoding or formatting.<\/li>\n<li><strong>Use consistent IDs or SKUs for update imports.<\/strong> Confirm that these identifiers match the existing products and are mapped correctly, then select Update existing products before running the importer.<\/li>\n<li><strong>Review the mapping screen manually<\/strong>, even when the auto-match looks right. A silently wrong mapping produces no error \u2013 just incorrect data sitting in the right-looking place.<\/li>\n<li><strong>Spot-check after every import<\/strong>, not just the first one. Open a handful of products \u2013 ideally including at least one variable product \u2013 and confirm images, pricing, stock, and variations all look correct.<\/li>\n<li><strong>Keep source files organized by import date and entity type<\/strong>. If you ever need to re-run or partially undo an import, having the exact file you used on hand saves significant time.<\/li>\n<li><strong>For recurring imports, standardize your export template once<\/strong>. A consistent column structure in your source system means less remapping each time you run the process.<\/li>\n<\/ul>\n<p style=\"text-align: left;\">None of these steps takes long individually, but skipping them is exactly how a &#8220;successful&#8221; import ends up needing a second pass or a manual cleanup a few days later.<\/p>\n<hr \/>\n<h2>WooCommerce CSV Import \u2013 FAQs<\/h2>\n<div class=\"faq faq-single-post\">\n<details>\n<summary>Can I import a CSV file directly into WooCommerce?<\/summary>\n<div class=\"content\">\n<p>Yes. The built-in Product CSV Importer lets you add or update products through Products &gt; All Products &gt; Import. It does not import customers or orders.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>What format should a WooCommerce CSV file be?<\/summary>\n<div class=\"content\">\n<p>Save your file as UTF-8 CSV using WooCommerce\u2019s supported column headers. Export an existing product to get a compatible starting template. Use numeric IDs in the ID column and the id: prefix for ID references in columns such as Parent.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Can I import product images with a WooCommerce CSV?<\/summary>\n<div class=\"content\">\n<p>Yes. Use the Images column with directly accessible image URLs or filenames from your Media Library. Separate multiple images with commas; the first becomes the featured image.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>How do I update existing WooCommerce products with a CSV?<\/summary>\n<div class=\"content\">\n<p>Include matching product IDs or SKUs, select Update existing products when uploading your CSV, review the column mapping, and run the importer.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Can I import variable products with a CSV?<\/summary>\n<div class=\"content\">\n<p>Yes. Use a variable parent row and separate variation rows, linked through Parent. Give each variation a unique SKU and matching attribute values. If variations are missing, check the import log and parent references before retrying.<\/p>\n<\/div>\n<\/details>\n<\/div>\n<hr \/>\n<h2>Final Words<\/h2>\n<p>A successful WooCommerce CSV import starts with a file that matches your products and the changes you want to make. Use the correct column structure, check IDs or SKUs when updating existing products, and test a small batch before importing your full catalog.<\/p>\n<p>After the import, review your product details, variations, and images, and check the import log for any failed or skipped rows. These checks help you catch problems early and build a reliable CSV workflow for future product updates.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WooCommerce CSV import is a convenient way to add or update products without entering each item manually. However, even small formatting errors can result in missing images, incorrect variations, or duplicate products. The good news is that the process is straightforward once you understand the CSV format WooCommerce requires! In this guide, we\u2019ll explain how [&hellip;]<\/p>\n","protected":false},"author":67,"featured_media":61704,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","jnews-multi-image_gallery":[],"jnews_single_post":{"source_name":"","source_url":"","via_name":"","via_url":"","override_template":"0","override":[{"template":"1","single_blog_custom":"","parallax":"1","fullscreen":"1","layout":"right-sidebar","sidebar":"default-sidebar","second_sidebar":"default-sidebar","sticky_sidebar":"1","share_position":"bottom","share_float_style":"share-monocrhome","show_share_counter":"1","show_view_counter":"1","show_featured":"1","show_post_meta":"1","show_post_author":"1","show_post_author_image":"1","show_post_date":"1","post_date_format":"default","post_date_format_custom":"Y\/m\/d","show_post_category":"1","show_post_reading_time":"0","post_reading_time_wpm":"300","show_zoom_button":"0","zoom_button_out_step":"2","zoom_button_in_step":"3","show_post_tag":"0","show_prev_next_post":"1","show_popup_post":"0","number_popup_post":"1","show_author_box":"0","show_post_related":"1","show_inline_post_related":"0"}],"override_image_size":"0","image_override":[{"single_post_thumbnail_size":"no-crop","single_post_gallery_size":"crop-500"}],"trending_post":"0","trending_post_position":"meta","trending_post_label":"Trending","sponsored_post":"0","sponsored_post_label":"Sponsored by","sponsored_post_name":"","sponsored_post_url":"","sponsored_post_logo_enable":"0","sponsored_post_logo":"","sponsored_post_desc":"","disable_ad":"0","format":"standard"},"jnews_primary_category":{"id":"","hide":""},"footnotes":""},"categories":[16622,16700],"tags":[10218,16741,364],"table_tags":[],"class_list":["post-56400","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-woocommerce","category-platform-tutorials","tag-configure-woocommerce","tag-how-to-import-products-to-woocommerce","tag-woocommerce-migration"],"uagb_featured_image_src":{"full":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02.webp",1618,1067,false],"thumbnail":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-150x150.webp",150,150,true],"medium":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-300x198.webp",300,198,true],"medium_large":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-768x506.webp",768,506,true],"large":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-1024x675.webp",1024,675,true],"1536x1536":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-1536x1013.webp",1536,1013,true],"2048x2048":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02.webp",1618,1067,false],"jnews-360x180":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-360x180.webp",360,180,true],"jnews-750x375":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-750x375.webp",750,375,true],"jnews-1140x570":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-1140x570.webp",1140,570,true],"jnews-120x86":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-120x86.webp",120,86,true],"jnews-350x250":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-350x250.webp",350,250,true],"jnews-750x536":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-750x536.webp",750,536,true],"jnews-1140x815":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-1140x815.webp",1140,815,true],"jnews-360x504":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-360x504.webp",360,504,true],"jnews-75x75":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-75x75.webp",75,75,true],"jnews-350x350":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-350x350.webp",350,350,true],"jnews-featured-750":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-750x495.webp",750,495,true],"jnews-featured-1140":["https:\/\/litextension.com\/blog\/wp-content\/uploads\/2023\/04\/How-to-Import-products-to-WooCommerce-02-1140x752.webp",1140,752,true]},"uagb_author_info":{"display_name":"Kristen Quach","author_link":"https:\/\/litextension.com\/blog\/author\/kristenq\/"},"uagb_comment_info":0,"uagb_excerpt":"WooCommerce CSV import is a convenient way to add or update products without entering each item manually. However, even small formatting errors can result in missing images, incorrect variations, or duplicate products. The good news is that the process is straightforward once you understand the CSV format WooCommerce requires! In this guide, we\u2019ll explain how&hellip;","_links":{"self":[{"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/posts\/56400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/comments?post=56400"}],"version-history":[{"count":71,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/posts\/56400\/revisions"}],"predecessor-version":[{"id":94965,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/posts\/56400\/revisions\/94965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/media\/61704"}],"wp:attachment":[{"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/media?parent=56400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/categories?post=56400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/tags?post=56400"},{"taxonomy":"table_tags","embeddable":true,"href":"https:\/\/litextension.com\/blog\/wp-json\/wp\/v2\/table_tags?post=56400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}