← All audits

Audit #32 Benign

83 affected plugins · 202k+ combined active installs · 83 closed on wp.org · baseline 4.6.0 → head 4.6.2 · closed 6d ago

Actor: wpcodefactory (WPFactory / Algoritmika Ltd. — also operates extendWP, taz_bambu, and algoritmika legacy accounts. Commercial WooCommerce-extensions vendor at wpfactory.com)
Show full summary

Verdict: benign — portfolio-wide guideline violation, not malware. On 2026-04-27 WordPress.org closed 83 plugins from WPFactory's family of author accounts (wpcodefactory, algoritmika, and woobewoo) in a single one-hour wave. The trigger was a public report alleging a backdoor in WPFactory's paid (non-wp.org) "EU/UK VAT for WooCommerce Pro" plugin — a file class-alg-wc-eu-vat-customer.php that allegedly downloaded an external ZIP, modified WordPress directories, and transmitted data to a remote server.

We audited all 83 closed plugins. None contain the named backdoor file. None contain malware. A 16-category IOC regex sweep returned zero hits, and a follow-up file-by-file LLM review of every PHP file in every plugin's HEAD release found no third-party uploaders, no hidden persistence, no update-channel hijacking, no auth backdoors, and no phone-home + RCE pairings.

51 of 83 bundle one or both of these vendor libraries: vendor/wpfactory/wpfactory-cross-selling and vendor/wpfactory/wpfactory-promoting-notice. Both are admin-promo-banner libraries that phone home to wpfactory.com to fetch banner content and render it in the WordPress admin UI. Neither has user-facing opt-in. WordPress.org's plugin guidelines require informed user consent for phone-home behavior. This is the actual reason WordPress.org closed the portfolio.

The other 32 plugins don't bundle either library. Several are legacy extendWP / taz_bambu / webdeveloping.gr plugins acquired by WPFactory and dormant for years. They were closed by author-association in the portfolio-wide action, not by per-plugin code review.

Three days after closure WPFactory pushed releases (eu-vat-for-woocommerce v4.6.2 on 2026-04-30, product-quantity-for-woocommerce v5.3.0 on 2026-04-30) that still contain the violating libraries. The boundary diffs are routine feature work. The library that triggered the closure is unchanged.

Sites running any of these plugins are not compromised. The libraries are noisy admin-banner phone-homes, not malware. But your "closed pending review" plugin's vendor has not removed the code that triggered the closure.

Investigated — no compromise found.

Audit retained for the record. No action required.

Affected plugins (83)

All plugins covered by this incident report. Combined exposure: 202k+ active installs across 83 slugs.

Plugin Active installs Trunk version wp.org status
Product Filter for WooCommerce by WBW 60k+ 3.1.7 Closed on wp.org
Download Plugins and Themes in ZIP from Dashboard 30k+ 1.9.9 Closed on wp.org
Cost of Goods: Product Cost & Profit Calculator for WooCommerce 10k+ 4.1.0 Closed on wp.org
EAN Barcode Generator for WooCommerce: UPC, ISBN & GTIN Inventory 10k+ 5.5.3 Closed on wp.org
Rename Media Files: Improve Your WordPress SEO 10k+ 2.6.7 Closed on wp.org
Order Minimum/Maximum Amount Limits for WooCommerce 10k+ 4.7.2 Closed on wp.org
Customer Email Verification for WooCommerce 9k+ 3.2.3 Closed on wp.org
EU/UK VAT Validation Manager for WooCommerce 7k+ 4.6.1 Closed on wp.org
Back Button Widget 5k+ 1.7.1 Closed on wp.org
Payment Methods by Product & Country for WooCommerce 5k+ 1.8.4 Closed on wp.org
Min Max Step Quantity Limits Manager for WooCommerce 4k+ 5.2.9 Closed on wp.org
Slugs Manager: Delete Old Permalinks from WordPress Database 4k+ 2.8.1 Closed on wp.org
Currency Switcher for WooCommerce by WBW 4k+ 2.3.0 Closed on wp.org
Export Products, Orders & Customers for WooCommerce 3k+ 2.3.3 Closed on wp.org
Free Shipping Bar: Amount Left for Free Shipping for WooCommerce 2k+ 2.5.3 Closed on wp.org
Additional Custom Emails & Recipients for WooCommerce 2k+ 3.7.0 Closed on wp.org
Scheduled & Automatic Order Status Controller for WooCommerce 2k+ 3.9.1 Closed on wp.org
Popups for WooCommerce: Add to Cart, Checkout & More 2k+ 1.5.3 Closed on wp.org
Coupons & Add to Cart by URL Links for WooCommerce 2k+ 1.8.0 Closed on wp.org
Wishlist for WooCommerce: Multi Wishlists Per Customer 2k+ 3.4.3 Closed on wp.org
Product Table for WooCommerce by WBW 2k+ 2.2.9 Closed on wp.org
Change Add to Cart Button Text for WooCommerce 1k+ 2.2.5 Closed on wp.org
Price Update: Bulk Pricing Editor for WooCommerce 1k+ 2.0.3 Closed on wp.org
Maximum Products per User for WooCommerce 1k+ 4.4.7 Closed on wp.org
Product Notes Tab & Private Admin Notes for WooCommerce 1k+ 3.1.2 Closed on wp.org
Product XML Feed Manager for WooCommerce – Google Shopping, Social Sites, Skroutz & More 1k+ 3.0.0 Closed on wp.org
Number of Products per Page – Pagination Manager for WooCommerce 1k+ 2.5.3 Closed on wp.org
Price by Quantity & Bulk Quantity Discounts for WooCommerce 1k+ 4.0.5 Closed on wp.org
Product Excel Import & Export for WooCommerce 1k+ 7.0.4 Closed on wp.org
Additional Custom Order Status for WooCommerce 800 1.9.3 Closed on wp.org
Sitewide Discount for WooCommerce: Apply Discount to All Products 700 2.2.4 Closed on wp.org
Variation Swatches for WooCommerce – Color & Image Swatches 600 1.2.1 Closed on wp.org
Import Content in WordPress & WooCommerce with Excel 600 5.0.3 Closed on wp.org
Custom Checkout Fields for WooCommerce 600 1.9.4 Closed on wp.org
Payment Gateway Currency for WooCommerce 500 4.1.4 Closed on wp.org
Payment Gateways by Shipping for WooCommerce 500 1.5.1 Closed on wp.org
Additional Custom Product Tabs for WooCommerce 500 1.7.4 Closed on wp.org
Custom CSS, JS & PHP 400 2.4.3 Closed on wp.org
Name Your Price: Make Your Own Offer for WooCommerce 400 3.4.5 Closed on wp.org
Advanced Reporting & Statistics for WooCommerce – Orders, Products & Customers Reporting 400 4.1.5 Closed on wp.org
Conditional Shipping for WooCommerce: Restrict Shipping Options by Anything 400 2.1.2 Closed on wp.org
Guest Order Tracking for WooCommerce 300 2.1.8 Closed on wp.org
MSRP (RRP) Pricing for WooCommerce 300 2.0.1 Closed on wp.org
Conditional Payment Gateways for WooCommerce 200 2.5.4 Closed on wp.org
Payment Gateways by Customer Location for WooCommerce 200 1.7.2 Closed on wp.org
Helpdesk Support Ticket System for WooCommerce 200 2.1.5 Closed on wp.org
Cart & Checkout Notices/Messages for WooCommerce 100 2.0.1 Closed on wp.org
PDF Invoices & Packing Slips Generator for WooCommerce 100 2.4.7 Closed on wp.org
Stock History & Reports Manager for WooCommerce 100 2.2.3 Closed on wp.org
Migrate Import Export WooCommerce Store with Excel 100 3.0.3 Closed on wp.org
Import Users & Customers | Export Users with Excel for WordPress & WooCommerce 100 1.6 Closed on wp.org
Product Excel Import Export & Bulk Edit for WooCommerce 100 4.7 Closed on wp.org
Custom Cart and Checkout Info for WooCommerce 90 2.0.1 Closed on wp.org
Add Custom Messages Anywhere in WooCommerce 80 2.0.2 Closed on wp.org
Products Stock Manager with Excel for WooCommerce Inventory 80 3.0.3 Closed on wp.org
Remove Special Characters From Permalinks 80 1.1.0 Closed on wp.org
Automated Stock Update Triggers for WooCommerce 80 1.8.2 Closed on wp.org
Coupon by User Role for WooCommerce 70 2.2.1 Closed on wp.org
CRM ERP Business Solution | freelancers & SME | for WordPress & WooCommerce 70 1.13 Closed on wp.org
Multiple External Products URLs & Currencies for WooCommerce 70 2.5.2 Closed on wp.org
Related Categories for WooCommerce 70 2.0.1 Closed on wp.org
World Population Counter 70 1.4.1 Closed on wp.org
Multiple Email Recipients for WooCommerce 60 2.0.0 Closed on wp.org
My Account Customizer for WooCommerce 50 2.0.0 Closed on wp.org
Product Virtual Try On Showroom for WooCommerce – Sunglasses, Furniture 50 2.6 Closed on wp.org
Customer Recent Orders History for WooCommerce 40 2.0.0 Closed on wp.org
Admin Bar Addition for WooCommerce 30 1.4.2 Closed on wp.org
Discussions Tab for WooCommerce Products 30 1.5.9 Closed on wp.org
Marketplace for WooCommerce 30 1.5.9 Closed on wp.org
Awesome Shortcodes 20 1.7.4 Closed on wp.org
Instant Checkout for ChatGPT: OpenAI Readiness for WooCommerce 20 1.0.4 Closed on wp.org
Compare Products for WooCommerce 10 2.1.1 Closed on wp.org
Checkout Field Editor and Customizer for WooCommerce 10 2.0.0 Closed on wp.org
Ajax Side Cart Button for WooCommerce eshop 10 1.3 Closed on wp.org
Advanced Conditional Pricing for WooCommerce 10 2.0.0 Closed on wp.org
Sale Flash Customizer for WooCommerce 10 2.0.0 Closed on wp.org
Shipping Calculator Customizer for WooCommerce 10 2.0.1 Closed on wp.org
WholeSale Products Dynamic Pricing Management WooCommerce 10 1.3.0 Closed on wp.org
WP Currency Exchange Rates 10 1.3.1 Closed on wp.org
Live Search for WooCommerce 2.1.2 Closed on wp.org
ZILI Breadcrumbs Customizer for WooCommerce 2.0.0 Closed on wp.org
ZILI Coupon Code Generator for WooCommerce 2.0.3 Closed on wp.org
ZILI User Products for WooCommerce 2.0.2 Closed on wp.org

Plugin version history

Every release on wp.org for this plugin. The plugin was closed by wp.org pending review, but this audit found no malicious code in any version. Sites already running it are not exposed to a security incident — see the cleanup section below for non-emergency guidance.

  1. Earlier 167 earlier releases
    • 1.0.0
    • 1.0.1
    • 1.1.0
    • 1.2.0
    • 1.2.1
    • 1.3.0
    • 1.4.0
    • 1.4.1
    • 1.5.0
    • 1.6.0
    • 1.6.1
    • 1.7.0
    • 1.7.1
    • 1.7.2
    • 1.8.0
    • 1.8.1
    • 1.8.2
    • 1.9
    • 2.0
    • 2.0.1
    • 2.1
    • 2.2
    • 2.2.1
    • 2.2.2
    • 2.2.3
    • 2.2.4
    • 2.2.5
    • 2.3
    • 2.3.1
    • 2.3.2
    • 2.3.3
    • 2.4
    • 2.4.1
    • 2.4.2
    • 2.4.3
    • 2.4.4
    • 2.4.5
    • 2.5
    • 2.5.1
    • 2.5.2
    • 2.5.3
    • 2.5.4
    • 2.6
    • 2.6.1
    • 2.6.2
    • 2.6.3
    • 2.7
    • 2.7.1
    • 2.7.2
    • 2.7.3
    • 2.7.4
    • 2.8
    • 2.8.1
    • 2.8.2
    • 2.8.3
    • 2.8.4
    • 2.8.5
    • 2.9
    • 2.9.1
    • 2.9.2
    • 2.9.3
    • 2.9.4
    • 2.9.5
    • 2.9.6
    • 2.9.7
    • 2.9.8
    • 2.9.9
    • 2.9.10
    • 2.9.11
    • 2.9.12
    • 2.9.13
    • 2.9.14
    • 2.9.15
    • 2.9.16
    • 2.9.17
    • 2.9.18
    • 2.9.19
    • 2.9.20
    • 2.9.21
    • 2.10.0
    • 2.10.1
    • 2.10.2
    • 2.10.3
    • 2.11.0
    • 2.11.1
    • 2.11.2
    • 2.11.3
    • 2.11.4
    • 2.11.5
    • 2.11.6
    • 2.11.7
    • 2.11.8
    • 2.11.9
    • 2.11.10
    • 2.11.11
    • 2.11.12
    • 2.12.0
    • 2.12.1
    • 2.12.2
    • 2.12.3
    • 2.12.4
    • 2.12.5
    • 2.12.6
    • 2.12.7
    • 2.12.8
    • 2.12.9
    • 2.12.10
    • 2.12.11
    • 2.12.12
    • 2.12.13
    • 2.12.14
    • 3.0.0
    • 3.0.1
    • 3.1.0
    • 3.1.1
    • 3.1.2
    • 3.1.3
    • 3.1.4
    • 3.1.5
    • 3.1.6
    • 3.2.0
    • 3.2.1
    • 3.2.2
    • 3.2.3
    • 3.2.4
    • 4.0.0
    • 4.1.0
    • 4.2.0
    • 4.2.1
    • 4.2.2
    • 4.2.3
    • 4.2.4
    • 4.2.5
    • 4.2.6
    • 4.2.7
    • 4.2.8
    • 4.2.9
    • 4.3.0
    • 4.3.1
    • 4.3.2
    • 4.3.3
    • 4.3.4
    • 4.3.5
    • 4.3.6
    • 4.3.7
    • 4.3.8
    • 4.3.9
    • 4.4.0
    • 4.4.1
    • 4.4.2
    • 4.4.3
    • 4.4.4
    • 4.4.5
    • 4.4.6
    • 4.4.7
    • 4.4.8
    • 4.4.9
    • 4.5.0
    • 4.5.1
    • 4.5.2
    • 4.5.3
    • 4.5.4
    • 4.5.5
    • 4.5.6
    • 4.5.7
    • 4.5.8
    • 4.5.9
  2. 4.6.0 Audit baseline Last clean release before incident
  3. 4.6.1 Released Clean (post-cleanup)
  4. Closure

    wp.org closed this plugin pending review. No malicious code was found in any release; the closure reflects a policy decision (commonly: guideline compliance, vendor commercial-content rules, or extended unmaintenance). Releases below remain installed on existing sites and are not a security exposure.

  5. 4.6.2 Audit head First malicious release (head of audit)

The closure event

2026-04-27, ~10am UTC: WordPress.org closes 83 plugins in approximately one hour across the WPFactory family of author accounts (wpcodefactory, algoritmika, woobewoo). Public closure notice on each plugin's wp.org page reads: "This plugin has been closed as of April 27, 2026 and is not available for download. This closure is temporary, pending a full review."

Trigger: a wp-content.co article reported a suspected backdoor in WPFactory's paid (commercial-only, non-wp.org) plugin "EU/UK VAT for WooCommerce Pro". File class-alg-wc-eu-vat-customer.php allegedly:

1. Downloaded an external ZIP archive. 2. Modified WordPress directories. 3. Transmitted data to a remote server.

WPFactory initially disputed: "the file does not exist in the official plugin package." Later acknowledged the issue was from "a cached or outdated plugin package." The PRO plugin is not on wp.org and is not in our mirror.

Audit scope

We audited every free plugin closed in the 2026-04-27 wave. 83 plugins total: 65 from wpcodefactory, 15 from algoritmika, 3 from woobewoo. All mirrored as full git repos with per-version tags + real committer attribution at https://plugin-repo.wpbeacon.io/wporg/<slug>.

Plugins on those same author accounts that were closed before the 04-27 wave for other reasons are not included in this audit. They were closed by wp.org for unrelated, individual issues at earlier dates.

Methodology

This audit went deeper than our normal closure triage. The first pass was a 16-pattern regex IOC sweep across all 83 plugins (eval/base64, gzinflate, eval-of-superglobals, shell_exec, create_function, assert-of-superglobals, preg_replace /e, file-write persistence, known campaign C2 domains). It returned zero hits.

A regex sweep can miss anything obfuscated, renamed, or split across files. So the second pass was a file-by-file semantic review run by Claude Code agents in parallel batches. Each agent read every PHP file in the plugin's HEAD tag and looked for:

  • Third-party uploaders: any code that fetches an external archive (ZIP, tar, phar) and extracts it into the WordPress filesystem.
  • Hidden persistence: writes to wp-config.php, .htaccess, mu-plugins/, theme functions, or *.php files inside uploads/.
  • Update-channel hijacking: PUC (plugin-update-checker) library variants, custom pre_set_site_transient_update_plugins filters that route to non-wp.org endpoints, or "self-hosted update" checks that pull from a vendor domain.
  • Auth backdoors: hardcoded user creation, role escalation, magic-key authentication, password-reset shortcuts.
  • Phone-home + RCE pairings: any HTTP call where the response is then eval'd, unserialize'd, include'd, or written to a .php file.
  • Disguise: random-named files, base64-encoded payloads, bytewise-constructed function names, deliberate string fragmentation.
  • Telemetry / analytics inside the free plugin that runs before user opt-in, or that bypasses opt-in toggles.
  • Article-pattern signature: the specific combination from the wp-content.co report — ZIP download + WP-dir-modify + remote-POST in the same code path.

The article's named filename class-alg-wc-eu-vat-customer.php was searched across every tag in every plugin's full git history, not just HEAD.

Results

VerdictCountMeaning
MALICIOUS0Confirmed backdoor with intent
SUSPICIOUS0Behavior worth flagging publicly even without proven intent
GUIDELINE51Bundles the cross-selling/promoting-notice library OR ships hardcoded "Buy Now" / "Go Premium" admin upsells. Compliance issue, not malware
CLEAN32No vendor library, no upsell strings, no IOCs

The article's named backdoor file does not exist

class-alg-wc-eu-vat-customer.php has never appeared in any version of any of the 83 free plugins. Git history goes back 11 years on the oldest plugin in the closure-wave corpus. No version of eu-vat-for-woocommerce (the free companion to the paid plugin) has ever shipped that file.

The file that DOES exist in eu-vat-for-woocommerce is a sibling: includes/class-alg-wc-eu-vat-customer-meta-field.php. It's an admin profile field implementation. No HTTP calls. No file writes. No exec primitives. Different code, different purpose.

WPFactory's denial about the file's existence in the free package was technically true.

The actual closure trigger

51 of the 83 plugins bundle one or both of these vendor libraries:

  • vendor/wpfactory/wpfactory-cross-selling/ — fetches admin banner JSON from wpfactory.com/wp-json/advanced-ads/v1/groups.
  • vendor/wpfactory/wpfactory-promoting-notice/ — sibling library, similar admin-banner mechanism.

Both load automatically on plugin install. Both call out to wpfactory.com without user opt-in. Both render promotional content for other WPFactory products in the admin UI on the user's site. WordPress.org's plugin guidelines require informed consent for phone-home behavior; these libraries don't have it.

This is class-consistent with prior wp.org guideline-enforcement waves against bplugins, the legacy algoritmika portfolio, and woobewoo noted in our 2026-04-30 triage memory.

Other notable findings (not verdict-changing)

Live Mixpanel SDK pre-opt-in

Three plugins ship the Mixpanel JS SDK and load it in the WordPress admin before any user-facing opt-in toggle is checked: woo-currency, woo-product-filter, woo-product-tables. The SDK fires page-view events to api.mixpanel.com from the wp-admin context. There is later code in each plugin that reads an opt-in setting, but the SDK has already initialized and pinged Mixpanel by the time that code runs. wp.org guidelines require informed consent before any third-party tracker fires.

wpcodefactory-helper self-hosted update channel

Several in-scope plugins reference a separate companion plugin called wpcodefactory-helper that, when installed, routes update checks for the WPFactory portfolio through wpfactory.com instead of wp.org. The helper itself is not part of this audit (it was closed by wp.org in October 2024 and has been distributed only from wpfactory.com since). Sites that install it are taking plugin updates from WPFactory's infrastructure, not from wp.org's. This is the same architectural concern as the audit-29 greenshift pattern: a free plugin with a self-hosted update channel that can deliver code without wp.org review. Not malicious in itself, but a design choice site admins should be aware of.

Mis-attribution

Several of the 83 plugins are labeled in wp.org as wpcodefactory-owned but originated with prior authors:

  • awesome-shortcodestaz_bambu legacy.
  • crm-erp-business-solution, my-woocommerce-product-virtual-showroom, users-import-export-with-excel-for-wp, webd-woocommerce-product-excel-importer-bulk-editextendWP acquisition.
  • webd-woocommerce-advanced-reporting-statisticswebdeveloping.gr acquisition.

These plugins largely don't contain modern WPFactory code. They were swept up in the portfolio-wide closure because the wp.org account moved with the acquisition.

Post-closure releases still ship the violating code

WordPress.org closed the plugins on 2026-04-27. WPFactory continued pushing releases to SVN.

PluginVersionDateDays post-closureLibrary still bundled
eu-vat-for-woocommercev4.6.22026-04-30+3yes (cross-selling)
product-quantity-for-woocommercev5.3.02026-04-30+3yes (cross-selling)

Boundary diff eu-vat-for-woocommerce v4.6.1 → v4.6.2: 21 files changed, +937/−186 lines. Bulk of change is the cross-selling banner refresh + WC Blocks checkout integration. No new HTTP/file/exec primitives. No removal of the violating library.

Boundary diff product-quantity-for-woocommerce v5.2.9 → v5.3.0: 11 files, +963/−278. Adds buy-all-stock-button class + JS quantity-step refactor + locale updates. Library unchanged.

Per-plugin verdicts

51 GUIDELINE — bundles vendor library or ships admin upsells

These plugins contain vendor/wpfactory/wpfactory-cross-selling/, vendor/wpfactory/wpfactory-promoting-notice/, or hardcoded "Buy Now" / "Go Premium" / "Upgrade to Pro" admin notices:

add-to-cart-button-labels-for-woocommerce, ajax-product-search-woocommerce, amount-left-free-shipping-woocommerce, back-button-widget, bulk-price-converter-for-woocommerce, color-or-image-variation-swatches-for-woocommerce, compare-products-for-woocommerce, conditional-payment-gateways-for-woocommerce, content-excel-importer, cost-of-goods-for-woocommerce, coupon-by-user-role-for-woocommerce, custom-checkout-fields-for-woocommerce, custom-emails-for-woocommerce, download-plugins-dashboard, ean-for-woocommerce, emails-verification-for-woocommerce, eu-vat-for-woocommerce, export-woocommerce, external-products-currency-for-woocommerce, file-renaming-on-upload, global-shop-discount-for-woocommerce, instant-checkout-for-chatgpt-openai-readiness-for-woocommerce, maximum-products-per-user-for-woocommerce, msrp-for-woocommerce, order-minimum-amount-for-woocommerce, order-status-for-woocommerce, order-status-rules-for-woocommerce, payment-gateways-by-currency-for-woocommerce, payment-gateways-by-customer-location-for-woocommerce, payment-gateways-by-shipping-for-woocommerce, payment-gateways-per-product-categories-for-woocommerce, pdf-invoicing-for-woocommerce, popup-notices-for-woocommerce, price-offerings-for-woocommerce, product-notes-for-woocommerce, product-quantity-for-woocommerce, product-tabs-for-woocommerce, product-xml-feeds-for-woocommerce, products-per-page-for-woocommerce, products-stock-manager-with-excel, related-categories-for-woocommerce, remove-old-slugspermalinks, remove-special-characters-from-permalinks, stock-snapshot-for-woocommerce, stock-triggers-for-woocommerce, store-migration-products-orders-import-export-with-excel, support-ticket-system-for-woocommerce, url-coupons-for-woocommerce-by-algoritmika, webd-woocommerce-advanced-reporting-statistics, wholesale-pricing-woocommerce, wish-list-for-woocommerce, wp-currency-exchange-rates, wpfactory-conditional-shipping-for-woocommerce

32 CLEAN — no vendor library, no upsells

These plugins were closed alongside the rest of the family but contain no violating code on their own. Many are legacy acquisitions that have been dormant for years and don't carry modern WPFactory code at all.

Hijack-indicator matrix (across all 83)

IndicatorResult
Sole / consistent committer over years?Yes (wpcodefactory, with historical extendWP / taz_bambu / algoritmika for older entries). No sudden new committer pre-closure.
Author profile drift?No. wpcodefactory is the well-known WPFactory commercial vendor.
Code-level malware patterns?No. All 16 IOC categories returned 0 hits across the entire 83-plugin corpus.
Outbound C2 / known bad domains?No. Call-home destinations are vendor-owned (wpfactory.com).
Suspicious obfuscation?No.
New SVN credentials before closure?No.
Article's PRO-plugin backdoor signature in any free plugin?No. The named filename has never existed in any version of any of the 83 plugins; the article's behavioral combination (ZIP download + WP-dir-modify + remote-POST in same code path) does not occur in any free plugin.

Every classic supply-chain-attack indicator is absent.

Comparable cases

Same closure pattern as several other late-2026 wp.org guideline-enforcement waves:

  • bplugins / legacy algoritmika / woobewoo portfolios (April 2026) — same admin-promo library wave (memory: project_2026-04-30_full_triage_zero_open.md).
  • greenshift-animation-and-page-builder-blocks (audit #29) — paid-license activation + commercial upsells inside the free plugin.
  • wp-product-feed-manager (audit #31) — EDD license code + Go Premium upsell, lifted paid product-cap to satisfy review.

All ended up with the same outcome: portfolio-wide guideline closure, no malware, vendor pushes a compliance fix.

What's different about WPFactory

In the comparable cases above the vendors removed (greenshift) or significantly cleaned up (wpcodefactory, wp-product-feed-manager) the violating code in their post-closure releases. WPFactory has not. The post-closure v4.6.2 of eu-vat-for-woocommerce and v5.3.0 of product-quantity-for-woocommerce ship the same admin-promo libraries that triggered the closure. As of this audit's publication WPFactory has not removed the code that wp.org closed them for.

Reproducibility

Every claim in this audit is browseable at https://plugin-repo.wpbeacon.io/wporg/<slug> — full per-version git history with real committer attribution, released to plugin-repo when WP Beacon's mirror picked up each plugin. Every PHP file in every plugin's HEAD tag was read by an LLM agent during the deep-review pass, not just regex-scanned.