Problem
The ugliest subscription bugs are the quiet ones.
The customer still has an active subscription record. The store owner assumes renewals are happening. Support only notices something is off when a customer says access disappeared or accounting notices revenue dipped.
That is why the new WooCommerce Subscriptions Health Check matters. WooCommerce announced it on April 30, 2026, and it solves a real operational gap: it surfaces subscriptions that may not be renewing correctly before you have to discover the problem through lost revenue.
The official product update is here: Review and manage subscription renewal states with the new Subscriptions Health Check. The short version is that the tool lives at WooCommerce → Status → Subscriptions, runs nightly, can be triggered manually, and flags renewal-state problems without making automatic changes.
That “without making automatic changes” part is important. You still need a developer brain on the output.
If the store is also mid-HPOS cleanup, start with my earlier post on WooCommerce 10.7 HPOS Sync on Read Fix, because storage drift and renewal drift often arrive together.
Why It Happens
The new Health Check exposes two categories, and both map to real store failure patterns.
1. Supports auto-renewal
These are subscriptions currently marked manual even though the customer has a saved payment token on a gateway that supports automatic billing.
That does not always mean the state is wrong. WooCommerce explicitly notes that some customers switch to manual renewal on purpose, some payment methods require it, and some stores disable automatic payments deliberately.
So this bucket is not “broken.” It is “worth checking.”
2. Missing renewals
This one is usually the real problem. WooCommerce says the tool flags active or on-hold subscriptions with no next payment date, or with a next payment date already in the past and no matching renewal order.
That points to the usual suspects:
- scheduled actions not running
- migration side effects
- plugin conflicts
- renewal-state bugs from earlier versions
When a store owner says “subscriptions seem fine” but revenue says otherwise, this is the bucket I care about first.
The Fix
I do not use the Health Check as a passive report. I use it as a triage list.
1. Run the tool manually after updates, migrations, and gateway changes
Nightly is fine for steady-state stores. After a gateway migration or a plugin upgrade, I run it immediately so I am not waiting until tomorrow to learn something drifted.
2. Separate legitimate manual renewals from broken ones
The official post is clear that manual renewal is sometimes correct. I cross-check:
- payment method supports tokenized auto-renewal
- store setting allows automatic payments
- the customer did not intentionally switch to manual
3. Inspect renewal data directly
For larger stores, I like a quick audit script instead of clicking through subscriptions one by one.
$subscriptions = wcs_get_subscriptions(
[
'subscriptions_per_page' => 50,
'subscription_status' => ['active', 'on-hold'],
]
);
foreach ( $subscriptions as $subscription ) {
$next_payment = $subscription->get_date( 'next_payment' );
$is_manual = $subscription->is_manual();
$gateway = $subscription->get_payment_method();
if ( empty( $next_payment ) ) {
error_log( 'Missing next payment for subscription #' . $subscription->get_id() );
}
if ( ! $is_manual && empty( $gateway ) ) {
error_log( 'Auto-renewal state without gateway on subscription #' . $subscription->get_id() );
}
}
That is not a replacement for the Health Check. It is how I move faster once the tool has shown me the pattern.
4. Check Action Scheduler before you blame Subscriptions itself
If renewals are missing, I always inspect scheduled actions next. A broken cron setup, a queue backlog, or a fatal in a renewal callback can make subscription state look like a plugin bug when the queue is the real problem.
5. Fix root causes, not just symptoms
If ten subscriptions are missing renewals because a gateway plugin changed behavior last week, patching those ten manually is not the fix. The fix is the gateway/plugin path that broke them.
The Practical Rule
The new Health Check is useful because it stops the “we only noticed when revenue was down” workflow.
Used properly, it gives you a fast answer to three important questions:
- are renewals actually missing?
- are manual renewals legitimate or suspicious?
- do I have a state problem or an action-queue problem?
That is enough to turn subscription debugging from guesswork into a short audit.
CTA
If your WooCommerce store has recurring revenue on the line and you want someone to audit renewals, HPOS, gateway behavior, and scheduled actions properly, see my services. Subscription bugs are expensive precisely because they can stay invisible for too long.
