Change Logs
Check our changelogs below to see how frequently our plugins are updated! We practice customer-driven development, so if there’s something you want to see in our plugins come tell us about it on our Discord server!
All updates
Every release of every plugin, newest first. Pick a plugin above for its full changelog.
90 releases without an exact date are not listed here; each plugin’s own changelog still has them.
Super Speedy Filters 6.39.2
- Fixed AJAX product filtering doing a full page reload instead of updating the results in place on block themes. On a block theme WooCommerce builds the shop and category archives from its Product Collection blocks rather than the classic product grid, and Super Speedy Filters was only looking for the classic grid, so it could not find anything to update and fell back to reloading the whole page. Product filtering is now instant on block themes as it already was on classic themes. Posts and custom post types were unaffected.
Auto Infinite Scroll 1.68
- Updated super-speedy-settings to the latest version
Delayed Image Import 2.27.1
- Updated super-speedy-settings to the latest version
Delayed Image Import 2.27.0
- Launching as a paid product (unlimited-site yearly/lifetime), free automatically to Super Speedy Imports customers via a licence-term-matched entitlement. No functional changes to the plugin itself in this release.
Delayed Image Import 2.26.1
- Added the shared super-speedy-settings module (its submodule was not populated), so the Super Speedy settings and licence page now appears, with the latest icons.
External Images 3.38
- Updated super-speedy-settings to the latest version
Scalability Pro 6.26.3
- Updated super-speedy-settings to the latest version
Super Speedy Ajax Prices 1.4.3
- Updated super-speedy-settings to the latest version
Super Speedy Chat 1.10.4
- Updated super-speedy-settings to the latest version
Super Speedy Coming Soon 1.6.3
- Updated super-speedy-settings to the latest version
Super Speedy Filters 6.39.1
- Updated super-speedy-settings to the latest version
Super Speedy Filters 6.39
- Posts and custom post types now filter through the same engine as WooCommerce products, so filtering behaves identically everywhere. In particular, same-taxonomy multi-select on the URL base term (selecting two terms of the same taxonomy at once, e.g. two categories) now returns the union of both terms on posts and custom post types, as it already did for products.
- Category Display now shares one tile renderer for products and custom post types, and adds
ssf_catdisplay_tiles_htmlandssf_catdisplay_tile_datafilters so a theme or custom post type can customise the subcategory tile markup.
Super Speedy Filters 6.38
- Fixed nested multi-taxonomy pretty URLs returning a 404 on posts and custom post types. A URL that filters by two taxonomies at once (e.g.
/region/north/genre/rock/) now loads the correctly filtered archive. SSF already built these URLs but could not read them back. - Fixed SEO Overrides ignoring the meta description on filtered post and custom post type archives. The per-URL override applied the H1, browser title and above/below content but silently dropped the meta description; it now applies with the rest.
- Fixed SSF resolving a filtered post or custom post type URL to a different address than the page's own, which is what caused the missed meta-description override above and could also affect exact-match override matching and filter links. The URL a filtered page reads as now matches the page itself. WooCommerce product URLs are unaffected.
Super Speedy Imports 2.74.2
- Updated super-speedy-settings to the latest version
Super Speedy Imports 2.74.0
- New Undo is now a site-wide Beta setting (Settings > Beta features, off by default) rather than a per-import option. When it is on, imports snapshot their target post type first so the whole run can be reverted from the Imports tab or
wp ssi undo <id>. The Preview & Run popover gains a "Take snapshot" toggle (on by default) so you can skip the snapshot for a single run. It adds IO to every run, so test on a staging copy first and keep a backup. - New you can now delete an import from the Imports tab. The row actions are icons – delete, history, config and schedule – each with a tooltip. Deleting shows a confirmation popover that can also drop the import's staging tables and remove any header-compatible CSV files it no longer needs. CSV removal is opt-in and off by default, and each file lists how many other imports share it.
- Improved the mapping screen now loads an import even when its original CSV file has been moved or deleted. The CSV column headers are stored with the import – captured when it is created, on save, and before a shared CSV is deleted – so the source fields still populate from a header-compatible sibling, or from the stored headers alone.
- Fixed listing compatible CSV files no longer fatals on hosts using musl libc (Alpine, many Docker images). The
get_compatible_csvsandget_csv_filesfile listings usedGLOB_BRACE, a glibc-only flag, and now use a portable two-pass glob instead.
Super Speedy Imports 2.73.1
- New the Setup checklist is now an opt-in Beta feature (Settings > Beta features), off by default. When enabled it sits above Import Fields on the mapping screen, styled to match it.
- Fixed dragging a column from the Setup checklist onto a field inserted
{undefined}instead of the column name – the checklist pills were missing their header data. - Improved Import Fields cards now use fixed-width columns with ellipsis, so the ignore button stays visible however long the column name or value.
- Improved the Import Fields hover now shows the full content of the currently-selected preview row (newlines and all, capped), rather than a fixed three-row sample.
Super Speedy Search 5.56.1
- Updated super-speedy-settings to the latest version
Super Speedy Sitemaps 1.10.3
- Updated super-speedy-settings to the latest version
Delayed Image Import 2.26
- Deferring is now ON BY DEFAULT for Super Speedy Imports: while this plugin is active, any SSI import with featured or gallery images writes the URLs to the
delayed_image_url/delayed_gallery_image_urlspost meta instead of downloading inline — even for imports saved before this plugin was activated. Un-tick the "Defer image downloads" checkbox (now in SSI's Additional Options panel) on an import to restore inline downloads for that import; the checkbox stores an explicit off. - SSI's "Only refresh images" import mode is never deferred — that mode's narrowed pipeline runs no postmeta stages, so deferring would have turned the run into a no-op. It downloads inline, which is what "refresh images now" means anyway.
- The background hydration cron is now ON BY DEFAULT (every minute, batch of 100, strict per-domain round-robin) so delayed images load slowly by themselves without anyone visiting the Settings page. Un-tick "Enable cron" to rely on visitor traffic and WP-CLI only.
- The WP-CLI bulk commands (
wp dii load-featured / load-galleries / load-all / retry) now run through the same per-domain round-robin scheduler as the cron, so a CLI drain no longer fires a single supplier's images in series.--dry-runnow prints the image count per supplier host so you can see what the round-robin will do. The--batchflag is gone (it only grouped progress ticks);--limitstill caps the number of posts drawn. - The per-host circuit breaker now has memory. Previously a dead supplier was backed off within one cron tick and then re-attempted 5 times every subsequent tick, forever. Now tripping the breaker records a persistent backoff with an escalating duration — 2 minutes on the first trip, doubling per consecutive trip, capped at 1 hour (filter
dii_host_backoff_max) — and the cron skips backed-off hosts entirely. Any successful download from the host clears it. CLI runs ignore the backoff (you explicitly asked) but still record trips. - Galleries are now hydrated one image at a time instead of as a single unit. The round-robin interleaves a large gallery's images across supplier hosts instead of bursting them at one server, interrupted runs resume exactly where they stopped, positional alt/title/caption/description meta survives until each image individually succeeds, and each failed URL moves to the timed-out list on its own with its own reason. Partially-downloaded galleries now render complete on the front end — local copies first, hot-linked remainder after.
- The hot-link blocklist now also covers featured images and preconnect hints (previously only gallery placeholders): blocked hosts render the SVG placeholder immediately instead of firing a doomed browser request on every product-card view. The "show broken image" diagnostic mode overrides the blocklist so failing URLs stay inspectable in DevTools.
- Fixed the WP-CLI commands were registered with underscores (
wp dii load_all), so the hyphenated forms in all the documentation (wp dii load-featured / load-galleries / load-all / timed-out) never actually worked. They do now. - Changed the two-phase retry (short-timeout attempts, then a separate long-timeout pass, then "permanently failed") is replaced by an escalating-timeout retry ladder. Every image climbs the same ladder: the timeout starts at your download timeout (default 3 s) and doubles on each failure — 3, 6, 12, 24 — up to a configurable ceiling (new "Maximum download timeout" setting, default 30 s, effectively no-timeout for an image). Three failures at the ceiling mark the image FAILED and auto-retry stops. Gallery URLs finally get the same multi-attempt treatment as featured images (previously one real attempt). Retry spacing escalates too: each failure waits attempt-count times the cooldown before the next try, and the cron respects that spacing. Existing timed-out images are migrated automatically on upgrade: they rejoin the queue at the ceiling rung, and previously "permanently failed" images become properly failed with their recorded reasons intact. The Phase 2 timeout and max-attempts settings are gone (subsumed by the ladder).
- New the Timed-Out Images tab is now Failed Images, and it's actionable. Each row shows a live thumbnail of the remote URL (a thumb that renders next to a server-side failure reason means the supplier blocks servers but not browsers — the whole diagnosis at a glance), the post linked to its edit screen, the URL clickable into a new tab, the failure reason, attempt count and when it failed, plus Retry now and Dismiss actions per row and a Retry All Failed button. The Delayed Images tab gets post edit links, clickable URLs and a per-post "Hydrate now" action.
- New the Status tab shows real progress. Image-level counts (a post with 6 gallery URLs now counts as 6 — previously counts were per post, under-reporting the backlog), a progress bar with percentage, downloads-per-hour throughput and an ETA at the current rate, and a cron heartbeat line that goes red with advice when WP-Cron has stalled with a backlog. The counts auto-refresh every 10 seconds while images are pending, so you can watch the backlog drain.
- New one-click controls. "Process a batch now" runs a batch synchronously from the Status tab or the new dashboard widget — it works even where WP-Cron is broken, which is exactly when you need a button. "Pause hydration / Resume hydration" is a prominent toggle with the paused state shown everywhere (Status, dashboard widget, admin-bar badge). A per-supplier-host table shows pending / failed / last-hour stats per host with its backoff state, plus one-click "add to hot-link blocklist" and "retry this host's failures".
- New ambient visibility. A dashboard widget (pending / failed / loaded, Process-now button), an admin-bar badge with the pending count while a backlog exists (can be disabled in Settings), two Site Health checks (stalled cron with a backlog; failed images awaiting review), a success notice when the backlog fully drains, and a warning notice when recent downloads are failing heavily, naming the worst host.
- New WP-CLI commands
wp dii status(one-line health summary,--watchto poll),wp dii failed(the failed list with reasons/attempts,--host=filter) andwp dii retry-failed(re-queue failed URLs with fresh ladders,--host=to target one supplier).wp dii pendingnow reports image-level counts.wp dii timed-outandwp dii retryremain as deprecated aliases;--phase-twois gone. - Fixed un-ticking Diagnostic logging in Settings never saved (the unchecked box wasn't coerced to off).
Super Speedy Imports 2.73.0
- Fixed re-importing trashed items now restores them from the trash. Deleting products – through the WordPress trash or the plugin's delete-all – and then re-running the import used to match the trashed items, update every field and report a clean run while the store stayed empty, because nothing set
post_statusback. Theupdate-postsstage now lifts matched posts out of the trash as part of the same update, so a re-import brings a trashed catalogue back. Verified at 500,000 rows. - Improved the
process-variable-productsstage is dramatically faster on large catalogues. A 500,000-row import could sit in this stage for 40 minutes or more; the columns its self-joins use are now indexed before the joins run. Applies to variable-product imports (Pro). - New after a run that moves items to the trash, the import shows how many of its items are in the Trash with a "Delete trashed items permanently" link, and the product count is split live versus trashed so a delete-to-trash run no longer looks like it did nothing. The permanent delete runs through the normal runner as a
process-deletespass rather than the WordPress trash screen, which is per-item and unusable at scale. A new--trashed-onlyflag does the same from WP CLI. - Fixed a long-running stage made of many quick statements is no longer misreported as a dead or timed-out run. The stage-status check now treats a heartbeat from the last 30 seconds as still running, so polling or re-opening a live import –
process-variable-productsin particular, now that its joins are indexed – shows "running" instead of falsely offering to recover it.
Super Speedy Imports 2.72.0
- New email alerts. The Schedule tab now has an Email alerts panel with two checkboxes – an email after every import completes (browser, CLI or scheduled) with the run's counters and any row issues, and a daily summary at a time you choose listing every run from the last 24 hours, which also emails when nothing ran so a broken schedule cannot fail silently. You choose the address alerts go to (defaults to the site admin email). All editions.
- New
ssi_import_run_completeaction for developers – fires exactly once for every completed run on all three runners (browser, CLI and scheduled), passing the import id, the history row id and the run's summary counters. The panel also documents the existingssi_scheduled_import_completehook and links to a worked example in the knowledge base. - New (shipped quietly in 2.71, announced now): automatic column mapping for CSVs from anywhere – Shopify exports, supplier feeds, spreadsheets you made yourself. The auto-mapper reads your column names against a large alias list and then reads the first rows of actual data to work out what each column really is – prices, GTINs and EANs, stock statuses, image URLs, weights, slugs, category paths and their separators – and only maps a column when name and data agree. It also picks the best match key (SKU over slug over GTIN over title), detects whether your file contains variations and sets the parent linkage up, and reports everything it could not decide as suggestions you accept or dismiss on the mapping screen. Previously only CSVs exported by Super Speedy Imports itself were configured automatically. Pro feature.
- Changed the field mapping screen has been rebuilt. Every mapping is now one row – a drag handle, the destination field, an arrow, then the CSV columns as pills you can add, remove or drag onto – so the whole import reads top to bottom in one list. Typing in the source box searches your columns and never creates text. Anything more than plain columns (merge templates like
{title} by {brand}, the rich editor for Description, custom PHP) lives behind the row's cogwheel, which shows a blue dot when a row is more than pills. The mapping is saved in exactly the same shapes as before, so existing imports load, save and run unchanged. - Changed the mapping has two views of the same list. Ungrouped is the new default – one flat list you can reorder by dragging, with your order saved on the import. Group fields shows the identical rows under group headings (Main, Inventory, Taxonomies, Attributes, Images, Post Meta and so on), reorderable within their group. The old Advanced view is gone and Drag & Drop is now Grouped; imports reopen in whichever view you saved them in.
- New attributes, gallery images and ACF/SCF custom fields are now rows in the same list instead of separate panels. Attribute rows keep their Used for variations / Is visible / Is taxonomy checkboxes and separator underneath; Featured Image and each gallery image carry their alt text, title, caption and description underneath as label plus source. Type an attribute name and it is matched to a registered
pa_taxonomy where one exists, otherwise it is created as a custom attribute – no need to know about thepa_prefix. - New required fields are enforced. The match field (plus the parent linkage fields when your file structure needs them) and at least one field to import are marked REQUIRED, pinned to the top of the destination picker, and listed in the checklist. Preview and Run stay disabled until they are mapped, so an import that cannot do anything can no longer be started.
- New ghost suggestion rows. Columns the auto-mapper nearly matched appear as dashed rows ("Colour -> Product colour?") with Accept and Dismiss, so near misses are one click rather than a hunt.
- Changed the CSV Preview sidebar is now Import Fields – a wider column of chip cards, one line each: the column name and its first sample value, with the full name and first three rows on hover. A card fills green as soon as a mapping uses that column, so unmapped columns stand out, and each card can be ignored in place.
- Changed the set-up checklist is now a collapsed card under Import Fields with its progress on the header ("15 of 20 columns handled"), so it is there when you want it and out of the way when you don't. The match-key confirmation moved to the match-field selector, which is now the one place matching is chosen and reviewed.
- Changed the New Import dialog is down to what it needs: a name (filled in from your filename), a drop zone for your CSV, and the receipt. The import type is guessed from your file ("Looks like WooCommerce products") and the two behaviour questions moved to the Ready to import popover, where they were already editable. Import type, behaviour, separator and decimal point all sit behind a cog on the dialog, pre-filled by detection – nothing is asked, everything is correctable.
- New import from URL. Paste a link to a CSV and Super Speedy Imports downloads it server-side (with the same checks as an upload) and sets the import up from it. No size cap of ours – your server's PHP limits apply, same as an upload.
- Changed the WordPress image sizes to create moved into Additional Options, and the Images panel is gone now that featured and gallery images are rows in the list.
- Changed the configuration file (JSON) tools are always visible and are now just Export and Import – Import opens the file browser and applies the JSON you pick, instead of a separate Browse step.
- Changed changing a row's destination keeps the row where it is in your list instead of moving it to the bottom, and converts the row properly in both directions – move a mapping onto an attribute and its checkboxes appear, move it off and they go.
- Removed the technical-details toggle. The configuration JSON tools are simply always shown, file paths are on hover, and the WP CLI command moved to the Schedule tab.
- Changed the Scheduled tab is now Schedule, and shows the WP CLI command for the selected import plus a ready-made crontab line for the cadence you chose – so if you would rather run it from a real server cron than the built-in scheduler, the line is written for you.
- Improved the config screen is quicker. Closing a cogwheel now keeps its editor alive so reopening is instant, the PHP editor only loads when you click into it, the mapping list reuses rows instead of rebuilding them, and around 100 hidden dropdowns are no longer initialised behind the scenes. On a 60 column import on a mid-range laptop, loading an import went from about 1.0s to 0.7s, reopening the Description editor from 140ms to 22ms, and opening the PHP tab from 99ms to 16ms.
- Fixed the undo snapshot now runs on browser and scheduled imports. With Enable undo (BETA) on, only WP CLI runs were recording a snapshot, so undoing a GUI or scheduled run had nothing to restore.
- Fixed browser imports now honour the import mode. Choosing "Only update prices" (or any preset) and pressing Run Now ran the full pipeline anyway; the browser runner ignored the mode presets and the
ssi_filter_stages_to_runfilter that CLI runs used. Browser and scheduled runs now also apply the unique-identifier pre-run guards that were CLI-only. - New running the same import twice at once is refused across all three runners. WP CLI and scheduled runs now claim, heartbeat and release the same run slot the browser uses, and the scheduled tick lock is atomic, so a cron tick can no longer start a second copy of a run that is already going.
- Fixed "Only create new items" now links variations to parents that already exist. The preset was missing the parent and variation stages, so a top-up file of new variations imported them as unlinked simple products.
- Improved Preview first item now previews the whole first item including all of its variations, straight from the real pipeline, and publishes the variations under the draft parent so the preview shows real dropdowns and prices instead of "out of stock". If the first item already exists it says so plainly and links to it, rather than reporting a configuration error. Preview drafts are isolated from your real data and discarded automatically before the next real run.
- Fixed a race between browser workers could randomly fail four-worker runs by dropping and recreating the gallery images table underneath each other.
- Fixed WP CLI worker failures now abort the run instead of warning and carrying on with the remaining rows.
- Improved
enable_db_tuningnow applies per stage to scheduled runs (as it already did on the command line; deliberately never for browser runs). - Improved the imports lists, selectors and Export tab refresh in place after a demo-data load, a finished run or a beta-features save, instead of reloading the page and throwing away unsaved Config edits.
Super Speedy Imports 2.71.0
- Changed Undo (BETA) has been rebuilt from the ground up as a per-table raw snapshot with an exact-ID restore, replacing the old export-then-reimport approach. Before an import runs it now dumps one file per table (posts, postmeta, term relationships, terms, term taxonomy, attribute definitions) at one consistent instant. Undo then deletes the post type's rows and loads the snapshot back with their original IDs, all inside a single database transaction, so it is byte-identical, keeps every ID and link intact, and either fully applies or does nothing. It is far faster than the old re-import, cannot mangle serialized data or emoji, and correctly rolls back categories, attributes and product images the import created. Still BETA – test in staging and keep a database backup.
- Changed the "Enable undo (BETA)" option is available again in Additional Options now that the new engine is in.
- Improved the completion screen now leads with the outcome: "Import complete – 20,000 products imported in 13.8s", large tiles for items created, updated, removed and rows with issues, and an import-details strip (import name, file, match key, duration, finished time). The stage table, velocity stats and raw debug output moved under a collapsed "Technical performance details" section. A run with row problems says "Import completed with N issues" in amber and skips the confetti.
- Improved a details-only run (prices, stock, categories) now reports how many products it actually updated instead of "0 posts updated". The engine counts the distinct items each run touched and the completion screen and import history carry it as
items_affected. - New rows with problems are now recorded individually and reported. Rows skipped for a blank unique identifier and rows dropped because another row uses the same identifier (previously dropped silently) appear on the completion screen as issue classes with counts, and a "Download error report" button gives a CSV of row number, column and reason for the latest run.
- Improved the failure screen leads with the plain-language error and a suggested next step; the full log and stack trace sit under a collapsed "Engine details" section. Mid-run fatals get the same calm treatment.
- Improved the progress screen headline now shows real rows ("5,177 of 16,713 rows – 31%") with plain stage names ("Reading your file", "Finding existing products"), a live error count chip, and an honest "keep this tab open" note. The Live Engine Console starts collapsed under "Engine details" and remembers if you open it.
- New a technical-details toggle (terminal icon in the top bar) reveals the WP CLI command, configuration JSON, full file paths, import IDs and the run screen's System Configuration panel. Off by default, remembered per browser, and nothing is removed from the page – support can always ask for it.
- Improved the identity section now asks "How should existing products be matched?" in plain words, states the consequence ("rows with the same SKU update the existing product"), and surfaces the blank-identifier Stop/Skip choice inline instead of burying it in Additional Options.
- New a "Ready to import?" review popover between Run Now and the run: file, row count, what the import will do in plain words, the match key, how many columns are mapped or ignored, warnings for important unmapped fields, and a red flag when delete-missing is on.
- New a set-up checklist in the Config sidebar turns unmapped columns into a triage list: progress bar ("15 of 20 columns handled"), a one-click confirm for the match key, one-click Accept for near-miss auto-map suggestions, a searchable "Map…" destination picker (including a new custom field), per-column Ignore with a bulk ignore, and jump links that scroll to the real control. Ignores persist in the config and the auto-mapper respects them everywhere it runs.
- New the New Import dialog asks the two behaviour questions up front: "What should this import do?" and "If an item is missing from your file…" (destructive choice flagged red), and shows an upload receipt after you pick a file: row count, column count and how many columns will be mapped automatically.
- Improved pointing an import at a different CSV now refreshes its auto-map report against the new file, so the set-up checklist describes the columns you actually have.
Auto Infinite Scroll 1.67
- Auto Infinite Scroll has prep work for MCP compatibility once the MCP Adapter from wp.org is stable and doesn't break wp-admin with their WP_CLI stub (controller/abilities code was going in super-speedy-settings, reverted for now)
Super Speedy Imports 2.70.0
- Security exported CSVs now neutralise spreadsheet formula injection (OWASP CSV injection). Any cell starting with
=,+,-,@, tab or carriage return is prefixed with an apostrophe so Excel, LibreOffice and Google Sheets treat it as text instead of running it as a formula. Applies to the Export tab download,wp ssi exportand the diagnostic exporter; plain numbers (like a -5 stock adjustment) and the undo snapshot are left untouched so restores stay byte-accurate. The importer strips the escape apostrophe again on load (the same convention Excel and the WooCommerce importer use), so an export from one site re-imports on another byte-identical. - Security image captions and descriptions coming from a CSV are now sanitised with
wp_kses_postbefore being written to the attachment. Previously a<script>tag in a feed cell was stored verbatim (admins haveunfiltered_html, so WordPress did not filter it) and could fire as stored XSS on any theme that renders attachment captions. - Security a batch of smaller hardening fixes from the security audit – an external/affiliate product's
_product_urlis now run throughesc_url_rawso ajavascript:value from a feed can't be stored verbatim; the CSV filename and per-stage metric values in Import History are now HTML-escaped before being rendered; the "products from this import" admin filter now casts the import ID withintvalinstead of accepting a raw string; the config-import JSON decode has a depth limit; a hard-error's full file-path stack trace is only included in the AJAX/REST response whenWP_DEBUGis on (still logged in full either way); and the taxonomy JSON upload now checksis_uploaded_file, caps the file size and limits JSON nesting depth. - New the Demo Data tab can download larger sample imports on demand from GitHub. Browse demo data from GitHub lists a 100,000-post demo, a 100,000 simple-product demo and a 500,000-row variable-product demo (Pro); picking one downloads its CSV and config, checksum-verifies them and sets the import up ready for Run Now. Each also carries direct-download links so you can set it up by hand on shared hosting where a large server-side download would time out. The small demos stay bundled in the plugin.
- New uploading or selecting a CSV that was made by the Export to CSV panel (or
wp ssi export) now configures the whole import automatically – post fields, postmeta, taxonomies with the right hierarchy separators, featured image and gallery with their alt/title/caption/description text, and variation parent linkage. Export products on one site, create a new import on another site, choose the file and everything is mapped for you, with a banner confirming the auto-configuration. Works from the CLI too:wp ssi create mysite product export.csvwith no config file. - Fixed undoing or re-importing an exported variable product no longer loses the "Used for variations" flag on its attributes. The config generated from a snapshot marked every attribute non-variable, so
fix-attributesrewrote_product_attributeswithis_variationoff. - Fixed undoing or re-importing an exported variable product no longer blanks the variations' attribute selections (the "Any colour / Any size" symptom). Flat taxonomies such as
pa_*attributes were being routed down the hierarchical import path, soprocess-variable-productscould not rebuild theattribute_*selector postmeta. - Fixed re-importing an exported catalogue no longer doubles variation titles ("Shirt – Red, Small – Red, Small"). The attribute engine now leaves a title alone when it already ends with that variation's attribute names.
- Changed Undo is now clearly marked as a BETA feature in the option, the Undo last run link and the confirmation dialog – test it in staging and do not rely on it until it is out of beta.
- New scheduled imports now recover from crashes the same way browser runs do. A run whose PHP process dies (host
max_execution_time, out-of-memory) is detected by the due scanner, diagnosed via the sameSHOW PROCESSLISTfingerprint + stage-status logic as browser recovery, and continued: finished-but-unrecorded stages advance, idempotent stages re-run,insert-postsresumes from its checkpoint. Two failures with no progress abort with the real error in the schedule's last-result; recurring schedules stay armed for their next occurrence. - New scheduled imports run at a chosen time. Once takes a date and time, hourly a minutes-past-the-hour, daily a time plus day-of-week checkboxes, weekly a day and time – all in server time, with the current server clock shown live in the tab. A precise cron wake-up fires the run at the chosen time rather than up to an hour late on the hourly scanner.
- Improved the Scheduled Imports tab has its own import selector (like the Config tab) instead of relying on the Config tab's selection, and drops the collapsible wrapper and heading.
- Improved when a stage dies server-side, the failure banner and log now show the actual PHP fatal (for example "Allowed memory size exhausted" with file and line) instead of a generic "died server-side" message. A shutdown handler records the fatal against the run's history row and the recovery poll reads it back.
- New browser imports now recover from bulk-stage timeouts instead of failing. If
insert-posts,update-postmeta,insert-postmeta,match-existing,upsert-relationshipsorprocess-variable-productsoutlives the request, the runner polls the database every 15 seconds until the SQL settles, then continues: a stage that finished server-side is detected and skipped, idempotent stages re-run safely, andinsert-postsresumes from immediately after its atomicINSERTwhen that committed – or retries it once if it rolled back. Every stage's statements are auto-stamped with anssi:{import}:{stage}comment, so in-flight work is identifiable in plainSHOW PROCESSLIST. - Fixed re-importing variable products no longer adds a duplicate
_default_attributespostmeta row per parent on every run. The stage now deletes-and-rewrites that key for the parents in the import (the same idiom as the variation-selector postmeta), so sites that accumulated duplicates from earlier versions self-heal on their next import. Values were never wrong – the old update path refreshed all copies – but postmeta bloated invisibly. - New a "DB Rows Processed" metric – the sum of inserted, updated and deleted rows on real WordPress tables across every stage (CSV staging excluded). Shown as a per-stage rows-per-second badge in the Run Now screen, a DB Rows figure and count breakdown on the completion screen, a DB Rows column in Import History (older runs show a dash), and a monthly total in the Imports tab stats. The existing Rows Processed remains and is labelled CSV Rows.
- Improved browser imports now batch
load-csvadaptively – each worker grows its rows-per-request while calls return quickly and backs off as they approach the PHP time limit, settling in a 20-25s band. On a 500,000-row CSV this cut theload-csvstage from around an hour to about a minute, since small fixed batches were dominated by HTTP round-trip overhead. - New the admin tabs are hash-routed –
#imports,#config,#scheduled,#history,#settingsopen that tab directly, refresh keeps your tab, and with no hash the new Imports tab is the landing view. The Imports tab also shows live stats panels: rows processed this month, average import velocity with a per-run sparkline, and the engine version. - Fixed clicking the X on the "Import failed" banner now closes the Run Now dialog.
- Improved the Imports tab's compatible-files count now includes the import's own CSV, so a healthy import always shows at least 1; zero only appears as the red "CSV missing" state. Actions are now Configure / Schedule / Run Now with a small Import History link underneath.
- New browser runs support alternative CSV files without re-pointing the import – choosing a compatible file via Change File sets a per-run override, shown in the WP CLI command as
--file=other.csv(the REST runner now honours afileparameter exactly like the CLI flag). The import's reference CSV is only permanently changed when recovering from a missing file. - Improved each row in the Taxonomies and Post Meta panels shows its X delete button in Drag & Drop mode (previously only visible in Advanced), and the Import History Reset button is now a small text link under Apply Filters.
- New an Imports tab lists every import as a card – post-type icon, ID and created date, compatible-CSV count, last-run performance and total runs – with View History, Schedule and Run Now buttons wired to the existing flows.
- New a "+ NEW IMPORT" button opens the Create New Import form in a popover (same blurred backdrop as the Run Now screen). It merges the old Create Import and Upload CSV panels – "Upload New" browses for a CSV and uploads it in one step, then selects it, so there's no separate Browse and Upload.
- Changed the admin screen is organised into tabs – Import configuration, Scheduled imports, Import History and Settings. Import History now has its own tab (loading when opened) and Performance Options moved into a Settings tab.
- New a Drag & Drop mapping mode for product imports, now the default view. The product-data fields are reorganised into a "Product Info" panel with vertical tabs in the standard WooCommerce order (General/Prices, Inventory, Shipping, Attributes & Taxonomies, Downloadable, External/Affiliate, Advanced), with Title/Description/Short description lifted into a Main section and Images, Taxonomies, Custom Fields and Post Meta as their own panels. Map a field by dragging a CSV column onto it, or type an Editor value mixing
{Column}tokens and literal text – custom product attributes, Featured Image and Gallery included. Switch back to the flat Advanced layout at any time; the chosen view is saved with the import. - New an "Export to CSV" panel in the right-hand sidebar exports any post type to a CSV you can download and re-import – full taxonomy paths and hierarchy, all post meta, image URLs and dates. Also on the command line as
wp ssi export <post_type>. - New scheduled imports. A "Scheduled imports" tab lets you set an import to run automatically on a cadence, in the background on a resumable, timeout-proof runner that records the same import history as a manual run. Chunkable stages (
load-csvand the image stages) run in bounded batches so a run survives a host'smax_execution_time; bulk-SQL stages run whole. - New a Pause button on the Run Now screen pauses an in-progress import and resumes it from where it left off.
- Improved importing a product attribute (
pa_*) that doesn't exist yet now creates it as a proper global WooCommerce attribute viawc_create_attribute, so it persists and appears under Products > Attributes. Previously the on-the-fly path only registered the taxonomy for the duration of the import, leaving orphaned terms. - New a "Need a taxonomy that isn't listed?" helper in the Taxonomies section generates a
register_taxonomysnippet to paste into your theme'sfunctions.php. Add it, save the import and refresh, and the custom taxonomy appears in the list to map against – so the taxonomy is owned by your own code, not this plugin. Points brands at WooCommerce's built-inproduct_brandwhere available. - Improved the
attach-gallery-imagesstage now runs in parallel across workers.
Super Speedy Search 5.56.0
- Fixed MySQL fulltext syntax errors when a suggestions search contains special characters. Terms like
(N54)orblue|blackbuilt an invalid BOOLEAN MODE expression (+(N54)*) which strict MySQL servers rejected and logged. Operator characters are now stripped from suggestion searches before the expression is built, so(N54)searches asN54. Hyphenated terms likeABC-123keep their exact-phrase matching. - Fixed a PageSpeed Insights render-delay warning caused by the icon font. The
wpi-sss-icons.woff2file is under 1KB but was a third chained request (page, then CSS, then font), so PSI flagged the discovery delay. The font is now inlined as a base64 data URI insidesuper-speedy-search.cssso it arrives with the stylesheet – no extra request, no delay, and no need for manual preload workarounds in your theme.
Changelog summary by plugin
Scalability Pro
Speed up your whole site – big catalogues, big databases, no re-architecture
- Latest version6.29.24 (15th August 2026)
- Last 30 days0 updates
- Last 90 days33 updates
Super Speedy Coming Soon
Build a launch waitlist – countdown and email capture on any product
- Latest version1.7.6 (12th August 2026)
- Last 30 days0 updates
- Last 90 days3 updates
Delayed Image Import
Stop image servers throttling your imports – download them later
- Latest version2.28.6 (12th August 2026)
- Last 30 days0 updates
- Last 90 days3 updates
Super Speedy Performance Analysis
Find which plugin is actually making your site slow, with proof
- Latest version0.18.0 (12th August 2026)
- Last 30 days0 updates
- Last 90 days77 updates
Super Speedy Ajax Prices
Fully cache your shop – correct prices, stock and dynamic pricing for every visitor
- Latest version1.13.13 (11th August 2026)
- Last 30 days0 updates
- Last 90 days4 updates
Super Speedy Chat
Own your live chat – real-time, self-hosted, fast, reply straight from Discord/WhatsApp
- Latest version1.14.1 (11th August 2026)
- Last 30 days0 updates
- Last 90 days11 updates
Country Based Prices
Show every visitor prices in their own currency, correct on a fully cached store
- Latest version1.13.2 (11th August 2026)
- Last 30 days0 updates
- Last 90 days1 updates
Super Speedy Filters
Fast product filters and pretty, indexable permalinks on every archive
- Latest version6.44.0 (6th August 2026)
- Last 30 days0 updates
- Last 90 days0 updates
Super Speedy Imports
Easy to use. Built for speed.
- Latest version2.85 (6th August 2026)
- Last 30 days0 updates
- Last 90 days0 updates
External Images
Keep your images off your server – on a CDN, S3, anywhere
- Latest version3.43 (3rd August 2026)
- Last 30 days0 updates
- Last 90 days0 updates
Fullscreen Typeform
Put a Typeform full screen on your own domain, with your own branding
- Latest version2.0.0 (27th July 2026)
- Last 30 days0 updates
- Last 90 days0 updates
Super Speedy Search
Speeds up front-end and wp-admin search
- Latest version5.57.1 (22nd July 2026)
- Last 30 days0 updates
- Last 90 days0 updates
Auto Infinite Scroll
SEO-friendly infinite scroll that keeps your place on the back button
- Latest version1.70 (22nd July 2026)
- Last 30 days0 updates
- Last 90 days0 updates
Super Speedy Sitemaps
All other sitemaps were so slow, we built our own
- Latest version1.10.4 (20th July 2026)
- Last 30 days0 updates
- Last 90 days0 updates
Super Speedy Archives
Category, tag, brand and author archives that stay fast as the catalogue grows
- Latest version3.1.2
- Last 30 days0 updates
- Last 90 days0 updates
