WooCommerce Subscriptions v9.0.0
Version 9.0.0Released on 2026-06-23
All Products for Subscriptions is now built into WooCommerce Subscriptions — sell any product as a one-time purchase, a subscription, or both, with no separate plugin needed. Existing installations migrate automatically, so you can deactivate the standalone plugin. We've also enhanced it along the way:
Subscription plans now support free trials, sign-up fees, and fixed-amount discounts.
Choose which storewide subscription plans are assigned to a product.
Disable one-time purchases on products that use storewide subscription plans.
Subscription gifting now works with products sold via subscription plans.
Bulk edit now supports updating purchase options, so you can apply storewide plans to specific products in bulk — replacing the deprecated "Limit to categories" option.
Improved billing-date-alignment settings (formerly Synchronization), with clearer first-billing options.
Subscription frequency and expiration are clearer — expiration is now set as a number of payments ("Total payments") rather than a length of time.
The Subscriptions by Product report now includes products sold via subscription plans.
Schedule dates set to the same minute (e.g. trial end and next payment) are now treated as equal, instead of differing by a few seconds and silently reverting the save.
The schedule editor's warning for a next-payment date set before the trial end now reads "Please enter a date after the trial end" instead of incorrectly referring to the start date.
The My Account > Subscriptions page no longer intermittently 404s right after the plugin is activated.
$0 subscription switches made within the renewal-sync grace period are now auto-completed instead of left pending.
Related orders for active subscriptions are no longer swept by the privacy eraser when HPOS is enabled.
When a customer's subscription becomes active or inactive, their user role now switches cleanly per your settings instead of leaving the old role in place.
Paying for the renewal of a gifted subscription with multiple items no longer drops all but the first item.
Guarded `wcs_get_subscription_period_strings()` and `wcs_get_subscription_trial_period_strings()` against PHP 8.1+ "Undefined array key" warnings when an integration uses the `woocommerce_subscription_periods` / `woocommerce_subscription_trial_periods` filter to remove a period.
PHP warning on the Subscriptions by Customer report when a customer account has been deleted or anonymized.
Prevent spurious cancellation emails when never-activated auto-draft subscriptions are deleted.
Don't re-apply the product sign-up fee to renewal, resubscribe or switch order line items when those orders are updated via the Orders REST API, which previously inflated their stored totals.
Prevent the "Limit to one active subscription" setting from being bypassed by paying for an old failed order, which previously let a customer who already had an active subscription end up with a second one.
Email template theme overrides are no longer reported as "out of date" in WooCommerce > Status when the override matches the plugin's template.
Free trials one period long now read "1 week" instead of "week".
Subscription products now show the free trial and sign-up fee on their own lines below the price, instead of appended to the price text.
The `subscription_renewal`, `subscription_switch` and `subscription_resubscribe` query args are now supported when HPOS is enabled.
WooCommerce Subscriptions v8.8.1
Version 8.8.1Released on 2026-06-04
Restore PayPal Standard renewal payments. A regression in 8.8.0 stopped these payments from being recorded, leaving the affected subscriptions stuck in Pending.
Prevent a fatal error that could occur when the new "Dedicated processing" setting is enabled before any subscription background tasks have been scheduled.
Correct remaining class-name casing mistakes exposed by the 8.8.0 classmap autoloader, which could cause fatal errors.
WooCommerce Subscriptions v8.8.0
Version 8.8.0Released on 2026-06-02
Resolve action for the Subscriptions Health Check tool — review a flagged subscription and apply the recommended fix (switch to automatic renewal, or process the renewal now).
Cancel button for in-flight Subscriptions Health Check scans, with partial scan results preserved in the candidates table.
New tools to improve scheduled action reliability, including supporting changes within the Health Check screen.
Subscriptions Health Check tool no longer owns the nightly-scan toggle; manage the schedule from WooCommerce > Settings > Subscriptions.
Subscriptions Health Check status bar — suppress Action Scheduler admin notices on the tab to avoid redundant or divergent past-due counts, keep the past-due actions link inside WC > Status, and refine card typography and spacing per design.
Subscriptions health check no longer reloads the whole page every few seconds while a scan runs; it updates the scan progress in the background and reloads only once the scan finishes or is cancelled.
Subscriptions Health Check candidates table now colours subscription status labels (Active, Expired, Pending Cancellation, etc.) consistently with the main Subscriptions list.
Prevent fatal error in wp-admin from overly narrow argument type.
Lowercase "in" in the relative date display (e.g. "in 2 days") for consistency with the existing "X ago" format.
Subscriptions health check now shows live scan progress while a scan is running.
Subscriptions health check empty-state message now references the correct "Run now" button label.
Prevent cart errors during subscription switching when a prorated upgrade calculation encounters a zero-day billing cycle.
Adding a subscription product to the cart while a Resubscribe or Subscription Switch for the same product is already in progress is now blocked with a clear error, preventing accidental duplicate line items.
"Limit to one active subscription" is now enforced at the cart and checkout level, closing duplicate-subscription bypasses that previously slipped through to the order.
Hide recurring-only coupons from block checkout initial order summary.
When retrying a failed renewal with the same payment gateway, `update_payment_method()` is no longer called. This means `woocommerce_subscriptions_pre_update_payment_method`, `woocommerce_subscription_payment_method_updated`, and `woocommerce_subscription_payment_method_updated_to_{gateway}` no longer fire for same-gateway retries. Extensions needing retry-event notifications should use `woocommerce_subscription_failing_payment_method_updated`, which always fires.
Class autoloading now uses Composer's classmap in place of the bespoke `WCS_Autoloader` / `WCS_Core_Autoloader` implementations. Both classes, and `WC_Subscriptions_Core_Plugin::get_autoloader()`, are retained as deprecated no-op shells under `includes/deprecated/` for back-compat with external integrations.
Improved compatibility with jQuery 4.x, which is expected to roll out in a future WordPress release.
WooCommerce Subscriptions v8.7.0
Version 8.7.0Released on 2026-04-30
Subscriptions Health Check — a new diagnostic tool under WooCommerce > Status that surfaces subscriptions which may need merchant attention. The initial release includes two views:
Supports auto-renewal — subscriptions on manual renewal that have a saved payment token on a gateway capable of automatic renewal.
Missing renewals — subscriptions that should be renewing but aren't, either because the next payment date is in the past or because the expected renewal order is missing (often caused by plugin or custom code conflicts, server or migration issues, or Action Scheduler not running).
Cost of Goods Sold is now calculated on subscriptions and renewal orders when the WooCommerce COGS feature is enabled.
When a customer updates their billing or shipping address from their account page, an order note is created on the subscription.
"Limit to one active subscription" now treats pending-cancel subscriptions as active, preventing duplicate purchases while a subscription is still providing access.
Multi-item subscription switching: corrected a stale total that caused overcharges on renewal, prevented items from being incorrectly split across two new subscriptions, and ensured the original subscription is cancelled when all its items switch away.
Subscription period interval strings now correctly display ordinal labels (e.g. "every 22nd") for custom intervals greater than 6.
Plain text subscription emails no longer display raw HTML markup in price sections.
Deleted or trashed renewal orders could remain attached to a cart after validation and proceed through checkout.
On stores running an object cache, a freshly-created renewal order could return a $0 total in memory while the database row held the correct amount, resulting in the order being incorrectly marked as paid.
WooCommerce Subscriptions v8.6.1
2026-04-22 - version 8.6.1
* Fix: Changing the payment details on a subscription could sometimes override the subscriber's renewal method choice when the 'Display the auto renewal toggle' setting is enabled.
* Fix: Updated the subscription switching flow to respect the renewal method choice on the subscription.
WooCommerce Subscriptions v8.5.0
Version 8.5.0Released on 2026-03-03
Setting to show or hide shared downloadable products in subscription details. Disable to improve performance for subscriptions with many downloads.
Fatal error on the View Subscription page when a subscription contains a deleted product and item removal is enabled.
PHP warnings when HPOS Data Caching is enabled alongside WooCommerce Subscriptions.
Added translation the billing period in the Cart/Checkout Block recurring total label for intervals of 2+. Changes ordinal phrasing ("every 2nd month") to cardinal ("every 2 months").
Refactored how subscription price strings are built internally. No changes to pricing display.
WooCommerce Subscriptions v8.4.0
Version 8.4.0Released on 2026-02-04
New optional notification email to alert merchants when a customer reactivates a subscription they had set to cancelled.
Remove gender-specific language from the tooltip for the "Inactive Subscriber Role" setting.
Prevent fatal error in PayPal Standard IPN handler when processing renewals after initial payment failure and related renewal order is deleted.
When generating plain text emails, avoid outputting HTML within the order details area.
List downloadable files within the 'processing renewal order' email, to better align with the corresponding parent order email.
Resolve a React error across the storefront and other public pages, by preventing the re-initialization of gifting recipient containers.
Allow merchants to activate subscriptions containing private products.
Subscriptions created from carts with multiple products with different billing schedules now correctly calculate shipping eligibility based on their individual cart totals instead of the combined original cart total.
Upgrade/downgrade button now displays correctly on its own line on the View Subscription page.
Makes the "for x intervals" text (ie, "for 6 months") within the cart order summary translatable.
Prevent duplicate subscription fields appearing in subscription product variations on a product edit page when WooCommerce's Cost of Goods Sold (COGS) feature is enabled.