Super Speedy Imports Lite imports CSV and XML files into WooCommerce products, WordPress posts and pages.
Give it the file you want to import, uploaded from your computer or fetched from a URL or API, and it works out where every column goes. Check the mapping, change anything you like, then run the import from the dashboard or with WP-CLI. Import an updated file and it updates the items already on your site and adds the new ones.
Measured with this exact
WordPress.org build on a 4-vCPU server, through the dashboard: 100,000 simple WooCommerce products imported in 90 seconds, 1,000 products with their images downloaded from a remote image host and resized in 74 seconds, and a price and stock update of 10,000 products in 10 seconds.
Full results and how to reproduce them.
What it imports
- WordPress posts and pages, and simple WooCommerce products
- Post fields: title, content, excerpt, status, dates, slug and more
- WooCommerce fields: SKU, GTIN, regular and sale prices and sale dates, stock, weight and dimensions, tax, shipping class and more
- Categories, tags and brands, including hierarchies such as
Men > T-Shirts, and WooCommerce global attributes such as pa_color
- Custom fields (postmeta)
- Featured images from URLs, each URL downloaded once however many rows use it
- XML files, converted to an import under Migration Tools
- Imports saved in WP All Import on the same site, converted under Migration Tools into imports you review before running
Running your own import
- Give it your file. Click New Import and drop in a CSV, or paste the URL of a CSV file or API. It reads the file and recognises what it holds (screenshots 1 and 2). XML files go through Migration Tools, which converts them and finds the repeating record for you (screenshot 3).
- Check the mapping. The import is already configured: every column it recognises is mapped to its field, and the panel on the right shows the real values from your file, row by row (screenshot 4).
- Make any corrections you want. Map a column somewhere else, add a column, combine columns in a transform, or set the hierarchy and multiple-value separators for a taxonomy (screenshot 5).
- Run it. Preview & Run shows the file, the row count and what happens to items already on your site, then Start Import runs it with every stage and its timing on screen (screenshots 6 to 8).
- Or run it from WP-CLI with
wp ssi <import id>, and add that command to cron to run it on a schedule (screenshot 9).
Every import matches rows to items already on your site with a unique identifier column. By default this is SKU for products and post title for posts, and you can choose another: GTIN / UPC / EAN / ISBN for products, or post title + category for posts. Pro matches on any field or combination of fields.
Three ways to run it
- The dashboard - Preview & Run shows the file, the row count and the matching field, then runs the import with every stage and its timing on screen
- WP-CLI -
wp ssi <import id> runs any import; put it in cron to run it on a schedule
- AI agents - an AI coding agent runs imports with WP-CLI, and 32 WordPress Abilities API tools let it upload files, create and change imports, preview the first item and read the results over the REST API (
/wp-abilities/v1), with no MCP setup needed
Try it in one click
- Install and activate the plugin.
- Open Super Speedy > Imports and go to the Demo Data tab.
- Click Load this sample on one of the samples: 1,000 posts with featured images, 20,000 posts, or 1,000 simple WooCommerce products with categories, brands, colours and images.
- On the Imports tab, press Preview & Run, then Start Import, and watch it import.
Super Speedy Imports Pro
Everything above is included here, with no row limit. Pro, a separate download from
superspeedyplugins.com, adds:
- Variable products - parents and their variations, with per-variation prices, stock and attributes
- Product galleries - several images per product, with alt text and captions
- ACF and SCF fields - scalar, choice, group and repeater fields
- Custom PHP transforms - split, format, look up or calculate a value before it is written
- Custom post types - any registered post type
- Term descriptions and term metadata - for the categories, tags and attributes an import creates
- Image size selection - generate only the image sizes you choose
- Parallel workers from WP-CLI - and per-stage performance tuning
- Built-in scheduled imports
- Match on any field - or any combination of fields
- CSV export - export your catalogue and use the file as the start of the next import
- Direct help from the developer in the Super Speedy Plugins Discord
Comparison and pricing
- In wp-admin, go to Plugins > Add New, search for "Super Speedy Imports", then click Install and Activate.
- Open Super Speedy > Imports and click New Import, or load a sample from the Demo Data tab.
WooCommerce is needed for product imports only. Requirements: WordPress 6.9 or newer and PHP 8.0 or newer.
2.99.21 (29th September 2026)
- Every database query passes table and column names and values as bound parameters, with no values or SQL fragments written into the statement.
- The Abilities API (MCP) tools are named
super-speedy-imports/... instead of ssi/...; refresh the tool list in any AI client that uses them.
- The REST routes moved from
ssi/v1 to superspeedyimports/v1, and script and style handles use the superspeedyimports- prefix.
- The taxonomy export and load/save configuration scripts load only on the Imports screen.
- Uploaded files, CSV file lists, import types, e-mail recipients and custom PHP functions are read field by field through sanitisers, and an address the e-mail sanitiser would change is refused.
- The WordPress.org edition asks you to switch on WooCommerce's "Enable table usage" after a full attribute lookup build instead of switching it on itself.
- The readme documents the local /proc checks used to tell whether an interrupted WP-CLI import has stopped.
2.99.20 (26th September 2026)
- Custom PHP function mappings in a saved or imported configuration are checked before they are stored: they must be valid PHP in editions that run them, and editions that cannot run them refuse them with a message.
- Configuration JSON sent by the admin screens is returned only after it has been sanitised or validated.
- Database queries that named the plugin's own tables, their storage engine and character set, or lists of IDs now pass every one of them as bound parameters.
2.99.19 (22nd September 2026)
- Imports now run on a database server without InnoDB (for example WordPress Playground): the working tables are created as MyISAM, the run uses a single worker, and the Preview screen explains what a crash or a failed force delete can cost.
- Shortened the hierarchy, term-lookup and ACF index prefixes so every index the plugin creates fits MyISAM's 1,000-byte key limit; results are unchanged.
- Activation records a database that refuses the plugin's tables and explains it with a "Check again" link, instead of switching imports off whenever InnoDB is missing.
2.99.18 (22nd September 2026)
- Activation no longer stops with an error on a database without InnoDB (including WordPress Playground's SQLite): the plugin activates, shows an admin notice explaining that imports need MySQL or MariaDB with InnoDB, and offers a "Check again" link.
- Saving an import now refuses malformed
config, additional_options and email settings requests with a clear message instead of saving nothing, and validates custom PHP functions as parseable PHP source before storing them.
- Documented every outbound request the plugin can make under "External services" in this readme, including the editions' update and licence checks.
- Local reads of process and upload-folder files now go through WordPress's filesystem class.
- Removed an unused
$newline global from the fix-attributes stage.
2.99.17 (22nd September 2026)
- Sanitised the Auto match fields checkbox value read when creating an import.
2.99.16 (22nd September 2026)
- Updated WordPress.org code-review annotations for the Only create new row predicate in the attribute stage.
2.99.15 (22nd September 2026)
- Fixed SKU + Title (and other combined) matching timing out on large catalogues: matching a 1,000-row file against 100,000 products now takes under half a second of database time instead of over fifteen seconds.
2.99.14 (22nd September 2026)
- Fixed Only create new imports replacing the categories, tags and other taxonomy terms of products that already exist, and rebuilding their attributes; matched items are now left alone unless they are a variable product receiving new variations in the same file.
2.99.13 (21st September 2026)
- Fixed imports removing a product's featured, hidden or out-of-stock visibility when the file does not map Featured, Catalog Visibility or stock; each of those now changes only when its own source is mapped.
- Fixed a mapped stock quantity overwriting a product's low stock threshold with the store setting when the threshold is not mapped.
2.99.12 (21st September 2026)
- Fixed Preview First Item leaving an unowned draft and a hidden temporary import when the preview request was killed before it finished; Discard, the next preview, the next run and the daily sweep now remove them.
Earlier releases: the full Super Speedy Imports changelog.