There are two reasonable options for importing and exporting WooCommerce products. The WooCommerce Product CSV Importer and Exporter is the free tool that ships with WooCommerce core. WP All Import is the premium plugin with deeper features. The real question is not which plugin is "better," but at what point your store outgrows the built-in tool and what WP All Import actually adds once you cross that line.
In this comparison, we'll walk you through where each tool works well, where each one hits a wall, and what changes when you upgrade.
📑 Table of Contents
Quick Comparison: WP All Import vs WooCommerce Product CSV Importer and Exporter
| Features | WP All Import | WooCommerce built-in |
|---|---|---|
| Price | From $169 per year or $1,299 lifetime | Free |
| File formats | CSV, XML, Excel, Google Sheets | CSV only |
| Variable products | Four linking methods, single import | Supported with strict CSV format |
| Custom fields | ACF, Meta Box, JetEngine, WPML, Yoast, inline PHP | Scalar meta via meta: prefix |
| Scheduling | Cron + paid service | No |
| Update without duplicates | Yes (selective fields) | Partial (combine create/update only) |
| Mapping interface | Drag-and-drop | Dropdown-based |
| WordPress.org rating | 4.7 out of 5 (1,960 reviews) | N/A (built-in feature) |
The built-in tool is a competent option for stores running a single, simple CSV import of standard WooCommerce products. Once your store grows past one-time migrations, you start hitting hard limits that the built-in tool cannot solve.

WP All Import is the upgrade path most stores eventually take, and the gap between the two WooCommerce product import plugins widens significantly as your catalog gets more complex.

Variable Product Handling
| WP All Import | WooCommerce built-in | |
|---|---|---|
| Variable products | Full support | Supported with strict format |
| Linking methods | Parent SKU, parent ID, group ID, XML child elements | Parent SKU or parent ID only |
| Workflow | Single import | Two imports (parent, then variations) |
| "Used for variations" flag | Handled correctly via dedicated field | Set indirectly, easily breaks |
| Variable-specific documentation | Detailed guide with screenshots | Minimal documentation |
Variable products are the single most common point of failure in WooCommerce product imports. The built-in tool handles them, but the experience is fragile enough that even WooCommerce's own GitHub repository has open issues about it going back years.
The core problem is that the built-in importer expects a strict CSV row order: parent row first, then variation rows in sequence, each with the parent SKU or ID filled in correctly. If a row is misordered, or if the parent row is missing, or if the "Used for variations" option does not propagate, variations either import as flat simple products or fail to attach to their parent. The option is set indirectly based on whether an attribute appears in a variation row, which is poorly documented and easy to break by renaming an attribute.
WP All Import handles variable products through four explicit linking methods. You choose parent SKU, parent ID, group ID, or XML child elements, depending on how your file is structured. The plugin has dedicated Attributes and Variations tabs on the mapping screen that handle each relationship explicitly. There are no documented cases of variations flattening into simple products through normal use of the plugin.

For stores with 100+ variable products, this gap alone justifies the upgrade.
File Format Support
| WP All Import | WooCommerce built-in | |
|---|---|---|
| CSV | Yes | Yes |
| XML | Yes (with XPath support) | No |
| Excel | Yes (XLS, XLSX) | No |
| Google Sheets | Yes (paste URL) | No |
| TXT | No | Yes |
The built-in tool reads CSV files in UTF-8 encoding, plus plain TXT files. That is the full list. If your supplier sends XML, you have to convert it before importing. If your team maintains the catalog in Google Sheets, you have to download it as CSV first.
WP All Import reads four formats natively: CSV, XML, Excel, and Google Sheets. The XML support is meaningfully deeper than a parser. You can use XPath expressions to pull data from nested nodes, including XPath from the parent element for variation-level fields. This matters for stores receiving supplier feeds in XML, which is a common format in B2B and industrial catalogs.
Google Sheets support is more useful than it sounds. You can paste the sheet's URL during import setup, and the plugin reads it directly. No download, no re-upload, no version-control problem when the spreadsheet changes. For stores that already maintain their catalog in a shared Google Sheet, this saves a step that the built-in tool cannot skip.

Custom Field Support
| WP All Import | WooCommerce built-in | |
|---|---|---|
| Scalar custom meta | Yes | Yes (via meta: prefix) |
| Custom taxonomies | Yes | Yes |
| ACF fields | Yes (dedicated add-on) | No |
| Meta Box fields | Yes (dedicated add-on) | No |
| JetEngine fields | Yes (dedicated add-on) | No |
| WPML translations | Yes | No |
| Inline PHP transformations | Yes (custom logic per field) | No |
| Serialized/structured data | Yes (via PHP editor) | No (scalar only) |
Custom field support is where the gap between the two plugins widens. The built-in tool handles scalar custom meta through the meta: column prefix, which is enough for plain text fields stored as post meta. The moment your custom data has any structure, like a serialized array, a JSON object, or a plugin-specific data format, the built-in tool cannot reconstruct it from a flat CSV column.

Most modern WooCommerce stores rely on at least one structured custom field system. Advanced Custom Fields (ACF), Meta Box, and JetEngine are the three most common. None of them round-trip cleanly through the built-in importer, because their fields are stored as serialized arrays or structured meta that cannot be expressed in a single CSV cell. WP All Import ships dedicated add-ons for each of these, plus an inline PHP function editor that lets you write custom logic for fields that do not have a dedicated add-on.

The PHP editor is the feature that separates WP All Import from every other import plugin in this category, including the built-in tool. Any field can be passed through a PHP function during import. This is how developers handle wholesale pricing tiers, role-based price tables, and other structured data that no CSV column can express directly.
Product Bulk Update Features
| WP All Import | WooCommerce built-in | |
|---|---|---|
| Match existing products | By SKU or ID | By SKU or ID |
| Update without creating duplicates | Yes (selective fields) | Partial (creates duplicates for unmatched rows) |
| Choose which fields to update | Yes | No (full overwrite) |
| Delete missing records on import | Yes | No |
| Preview before running | Yes | No |
Bulk update is one of the most underrated capabilities in WooCommerce product management. Most stores that have been running for more than a year have a workflow that looks like this: a weekly supplier spreadsheet arrives, the merchant opens the file, edits prices and stock, and re-imports it. The question is what happens when the spreadsheet has a row for a product that is not in the store yet.
The built-in tool combines create and update into a single mode. If a row matches an existing SKU or ID, the row updates that product. If it does not match, the row creates a new product. There is no way to say "update only, skip new rows." A weekly stock refresh that contains a typo in one SKU can silently create a duplicate product alongside the existing one, and the merchant has no warning until they notice the duplicate in their catalog.

WP All Import handles this in three ways. First, the import preview shows exactly which rows will be created, updated, or skipped before any changes hit the database. Second, you can choose which fields to update on existing products, which means a price-only refresh does not overwrite descriptions, images, or stock if your file does not include them. Third, there is an option to delete missing records on import, which is useful for stores that want their catalog to mirror the supplier file exactly.

Scheduling and Automation
| WP All Import | WooCommerce built-in | |
|---|---|---|
| Scheduled imports | Yes (WordPress cron, server cron, or paid service) | No |
| Scheduled exports | Yes (with WP All Export) | No |
| Import from URL, FTP, or SFTP | Yes | No (local upload only) |
| Email reports after each run | Yes | N/A |
| Re-run existing import | Yes (saved templates) | No |
Scheduling is the most clear-cut gap. The built-in tool has no scheduled import capability at all. Every import is triggered manually from the wizard. If you want your catalog to update nightly from a supplier feed, you cannot do it with the built-in tool alone.
WP All Import supports scheduled imports through three mechanisms. WordPress cron is the default and runs on the site's own scheduling. Server cron gives you tighter control over timing and server load. The paid scheduling service ($19 per month) runs unlimited imports across unlimited sites from WP All Import's own infrastructure, which is useful for stores that do not want to leave a cron job running on their own server.

Both directions of automation matter. Importing is the half most stores think about, but exporting is what powers integration with ERPs, fulfillment partners, and reporting tools. WP All Export ships with the same scheduling options, and both plugins can be set to email a report after each scheduled run.
Mapping Interface
| WP All Import | WooCommerce built-in | |
|---|---|---|
| Mapping style | Drag-and-drop | Dropdown-based |
| Visual preview of source data | Yes | No |
| Panels for each data category | Yes (Title & Description, WooCommerce, Images, etc.) | Single column mapping screen |
| Inline PHP functions | Yes (right-click any field) | No |
| Saved templates | Yes (per user, reusable) | Partial (last mapping per user only) |
| Auto-detect known fields | Yes | Yes |
The mapping interface is the part of the import workflow where you spend most of your time. The built-in tool uses a multi-step wizard with a single column-mapping screen. Source columns appear on the left, target fields appear on the right as dropdowns, and you select the right target for each source column. It works, but it is not visual, and there is no preview of how the data will look once mapped.

WP All Import uses a drag-and-drop interface. Source columns, elements, or XPath nodes appear on the right side of the screen. Target WooCommerce fields appear on the left, organized into panels by data category (Title & Description, WooCommerce Add-On, Images, Custom Fields, and so on). You drag an element from the right to a field on the left to map it. A live preview shows exactly how each field will be transformed, including any PHP function you have applied.

The PHP function editor is the part of the interface that turns WP All Import from a mapping tool into a data transformation tool. Right-click any target field, and you can wrap it in a PHP function. This is how stores handle data cleanup on the fly, like normalizing phone numbers, formatting prices, or constructing compound values from multiple source columns.
For a single CSV with default WooCommerce columns, the built-in tool's mapping screen is fast enough. The moment your file has any custom structure or transformation needs, the drag-and-drop interface and PHP editor pay for themselves on the first import.
Third-Party Plugin Compatibility
| WP All Import | WooCommerce built-in | |
|---|---|---|
| WooCommerce Subscriptions | Yes (with add-on) | Variable product support only |
| WooCommerce Bookings | Yes (via PHP transformations) | No |
| WooCommerce Brands | Yes | No |
| Product Vendors | Yes | No |
| ACF / Meta Box / JetEngine | Yes (dedicated add-ons) | No |
| Yoast SEO | Yes | No |
| WPML / Polylang | Yes | No |
Third-party plugin compatibility is where the difference between the two tools becomes a question of what is even possible. The built-in tool was designed for stock WooCommerce products. It handles custom meta and custom taxonomies, which covers simple cases, but it does not have any specific awareness of WooCommerce extensions or third-party field systems.
WP All Import ships dedicated add-ons for ACF, Meta Box, JetEngine, Gravity Forms, Users, and the WooCommerce-specific extensions like Subscriptions, Bookings, Brands, and Product Vendors. Each add-on exposes a dedicated panel on the mapping screen with the fields that the extension adds to your products. Yoast SEO fields are imported automatically through the standard custom meta flow.
For a store that uses any combination of these plugins, the built-in tool is not a realistic option. Custom field round-tripping is a hard requirement for any store that has invested in extensions, and the built-in tool does not address it.
Pricing
| WP All Import | WooCommerce built-in | |
|---|---|---|
| Upfront cost | $169 (WooCommerce Import Package) or $1,299 (Ultimate Lifetime) | Free |
| Site licenses | Unlimited | Unlimited |
| Renewal fees | None on lifetime, optional annual after first year | None |
| Money-back guarantee | 90 days | N/A |
The pricing comparison is straightforward on the surface. The built-in tool is free. WP All Import is paid. For a store running a single one-time CSV import of 50 products, the right answer is to use the built-in tool and not spend any money.
For stores that need ongoing product import or export, the cost equation is different. The Ultimate Lifetime Package at $1,299 covers all current and future add-ons with no renewal fees. For an agency managing multiple stores, the unlimited site activations alone make this dramatically cheaper than per-site alternatives. For a single store running scheduled supplier syncs for two or more years, the lifetime license pays for itself within two years compared to annual subscriptions from competitors.
The 90-day money-back guarantee is longer than the 30 days most competitors offer, which reduces the risk of testing WP All Import on real catalog data before committing.
WP All Import vs WooCommerce Product CSV Importer and Exporter: When to Use Each
The decision is simpler than the feature comparison makes it look.
Use the WooCommerce built-in CSV Importer and Exporter when:
- You are running a single one-time import of simple products
- Your CSV matches WooCommerce's default column headers
- You do not need to schedule recurring imports
- Your catalog does not rely on ACF, Meta Box, JetEngine, WPML, or other third-party field systems
- You do not need to import variable products, or you are comfortable with the strict CSV row ordering
- You are willing to convert XML or Google Sheets files to CSV before importing
Use WP All Import when:
- You import or export products more than once
- Your file format is XML, Excel, or Google Sheets rather than CSV
- Your catalog includes variable products with more than a handful of variations
- You use ACF, Meta Box, JetEngine, WPML, Yoast SEO, or any third-party plugin that adds custom fields
- You need scheduled imports from supplier feeds, FTP/SFTP servers, or remote URLs
- You need to update existing products without creating duplicates
- You need PHP transformations for cleaning up or restructuring data on import
- You are an agency or developer managing multiple WooCommerce stores
For a deeper look at each plugin on its own, see our WP All Import review and our WooCommerce Product CSV Importer and Exporter review. For a side-by-side with the other two plugins in this space, see our best WooCommerce product import plugin article.
Frequently Asked Questions: WP All Import vs WooCommerce Product CSV Importer and Exporter
How do I import products in WooCommerce without a plugin?
To import products in WooCommerce without a plugin, go to Products > All Products in your WordPress admin and click Import at the top of the page. Upload a UTF-8 encoded CSV file that matches the WooCommerce Product CSV Import Schema, map your columns to product fields on the next screen, and click Run the Importer.
How do I export products from WooCommerce?
To export products from WooCommerce, go to Products > All Products and click Export at the top of the page. Choose which columns, product types, and categories to include, decide whether to export custom meta, and click Generate CSV. The exported file follows the same schema the importer expects.
Does WooCommerce have a built-in CSV importer?
Yes. WooCommerce includes a built-in CSV importer and exporter that has been part of the plugin since version 3.1. It is accessed from Products > All Products in your WordPress admin and does not require any additional plugin or purchase.

