WooCommerce Subscriptions

Subscription risk you can see before it costs you.Subscription Health Check for WooCommerce Subscriptions

Subscription Health Check is a WordPress plugin for WooCommerce Subscriptions that scans active subscriptions daily, detects failed payments, grace periods and expiring cards, scores each by severity, and emails your team or the customer before the renewal fails — without storing any card data.

3
risk engines
187
tests passing
0
card details stored
Subscription #4821● Expiring card

The card on file won't survive the next renewal.

This subscription renews in 6 days. The saved card expires at the end of this month — four days before that renewal date.

Payment retries have run out.

Retried three times and it kept failing. WooCommerce marked it on-hold, so this one needs an admin to step in.

Nine days into its grace period.

Passed the grace warning threshold two days ago and is two days from critical, based on this store's settings.

/ Not hypothetical

The problem isn't rare. It's measured.

Independently documented by the payments industry — and a standard, named failure mode in WooCommerce Subscriptions' own documentation.

20–40%

of all subscription churn is involuntary

A payment failed — the customer didn't choose to leave. Most of it is recoverable if someone catches it in time.

Source: Recurly, State of Subscriptions
0.9%

average involuntary churn rate

Measured across 2,200+ subscription merchants and 67M+ subscribers. Small per month, compounding every renewal cycle it goes unnoticed.

Source: Recurly, State of Subscriptions
70%

of that revenue is recoverable

But only with retries, dunning emails and a card updater working together — not any one of them alone.

Source: Recurly, State of Subscriptions

It shows up in this exact ecosystem, too. WooCommerce's own documentation confirms renewal payments fail for reasons that have nothing to do with a customer wanting to leave — an expired card, a bank decline, a gateway error — and that its automatic retry system ships off by default. Unless a store owner finds that setting and turns it on, a declined renewal just fails, silently, with no one notified. Source: WooCommerce Subscriptions documentation.

/ Field reports

Real reports. Anonymized.

Public, anonymized posts from WooCommerce Subscriptions store owners — not Subscription Health Check customers, just evidence of the exact failure pattern each risk type is built to catch.

Failed payment, no visibility
"I had a number of subscriptions try to renew last month but none of the payments went through for any of them. They all had a WooCommerce order created but they are showing as having been put on hold — but no reason given."
Source: WooCommerce Subscriptions support forum, wordpress.org
How Subscription Health Check addresses this

Subscription Health Check scores every failed renewal by reason and severity the day it happens — not just "on hold," but which of the three risk types it is and how urgent it is — and routes an email immediately instead of waiting for someone to go looking.

Grace period, discovered at scale
"Renewal orders are getting failed for lots of subscription customers — the payment method token field was empty despite customers having purchased through checkout normally."
Source: WooCommerce Subscriptions support forum, wordpress.org
How Subscription Health Check addresses this

The daily scan tracks every subscription's grace-period status and severity as it ages, so a pattern affecting many customers at once shows up as a growing, sorted list on day one — not something you discover after enough customers have already noticed and complained.

Card / payment-method changes
"Renewal fails after a customer switches their card on file, with the error: "A source must be attached to a customer to be used as a payment_method.""
Source: WooCommerce Subscriptions support forum, wordpress.org
How Subscription Health Check addresses this

Expiring-card detection reads a saved card's expiry directly from WooCommerce's own token API and flags it ahead of the next renewal date — so a payment-method problem surfaces before it breaks a renewal, not after.

/ 00 · Platform

Built for WooCommerce Subscriptions. Not bolted on.

Retry counts, grace flags and saved card tokens already live in your WooCommerce Subscriptions data. Subscription Health Check reads them every day and turns them into a prioritised action list.

Core support

The signals Woo already stores, finally surfaced.

Retry counts, grace flags and saved card tokens live in your database the whole time. The scan reads them every day and turns them into a prioritised action list — no exports, no order-by-order digging.

  • +Retry-exhausted failed payments detected the moment Woo gives up
  • +Grace period tracking with independent warning and critical thresholds
  • +HPOS (High-Performance Order Storage) compatible
  • +Card expiry read via the WooCommerce token API, never stored
/ 02 · The dashboard

One screen for what needs attention.

KPI analytics up top, plus a tabbed, sortable risk table you can filter by type or status.

wp-admin › Subscription HealthRun scan now
Flagged subscriptions
29
+4 since last scan
MRR at risk
$4,180
ARR $50,160
Top risk category
Expiring card
14 of 29
Resolved this month
63
auto-healed 41
SubCustomerPlanDetailLevelMRR
#4821M. OkonkwoPro AnnualCard expires 31 Jul · renews 04 AugWarning$49
#4790L. FernándezStudio MonthlyCard expired 12 JulCritical$29
#4712Bright Path LtdTeam PlanCard expires 18 Aug · renews 22 AugInfo$180
#4655R. HaddadPro MonthlyCard expires 02 Aug · renews 02 AugCritical$49
Schedule: managed by system cronFilter: active / resolved / cancelled● Last scan 04:00 · 1,284 subscriptions
/ 01 · Features

What it actually checks.

Tap any card to open the detail. Every feature ties back to a signal your subscription platform already tracks but never puts in front of you.

/ 03 · Method

How the scan works.

Five steps, every day, across every subscription in the store — batched so one bad record can't halt the run.

01 · Fetch

Pull today's subscriptions.

Every active, on-hold and pending-cancel subscription is pulled straight from WooCommerce Subscriptions when the scan runs.

Source: WooCommerce Subscriptions
02 · Score

Check it against your settings.

Retry count, days in grace and the saved card's expiry against the next renewal decide whether a subscription gets flagged, and at what severity.

Risk types: failed payment, grace period, expiring card
03 · Store

Save the result, not the card.

Only the classification is written. Card expiry values are held in memory long enough to run the comparison and then discarded.

Card data stored: never
04 · Notify

Send the emails you've turned on.

Alerts route to the admin, the customer, or both — per risk type and per severity, with dedupe and cooldown so nothing gets spammed.

Recipient modes: admin, customer, both
05 · Recover

Resolve or drop off, automatically.

No manual close-out. A row disappears from the active list the moment WooCommerce shows the payment succeeded, and the audit trail keeps a record either way.

Lifecycle: active → resolved / cancelled
/ 04 · Who it's for

Built for the people keeping subscriptions healthy.

Whether you run the store yourself or split renewal work across a team, everyone works from the same prioritised view.

01

Store owners

You log in Monday and find out 12 subscriptions quietly stopped paying over the weekend. With Subscription Health Check, the dashboard already shows you the dollar amount behind every one of them, so you know what's actually worth chasing before you chase anything.

02

Support teams

A customer emails asking why they were charged twice — or why they weren't charged at all. Subscription Health Check flags the problem the day it happens, so your team already has the answer before that email arrives.

03

Operations managers

Instead of opening subscriptions one at a time to see who's behind on payment, you get one sortable, filterable table that shows every at-risk subscription in the store at once.

04

Agencies

You manage subscriptions across a dozen client stores and can't check each one by hand. Install it once per store and every site reports back through the same dashboard, thresholds and email routing.

/ 05 · Tech

Honest spec sheet.

What it needs to run, and exactly how it handles the data it touches.

Platform
WordPress 6.0+ · WooCommerce 7.0+ · PHP 8.0+
Subscriptions
WooCommerce Subscriptions. Read directly via wcs_get_subscriptions() — no adapter layer.
Scheduling
Managed by your server's system cron via WP-CLI (wp shc run-scan), plus a manual Run Scan Now button in the dashboard.
Storage
Dedicated tables for scan results and the outbound email audit log, created on activation.
Compatibility
WooCommerce HPOS declared. Developer hooks: shc_loaded, shc_scan_started, shc_scan_completed, shc_settings_saved.
Card data
Read from the WooCommerce token API for the expiry check only. Never stored, never emailed, never logged.

Built to stay out of PCI scope.

Card numbers never pass through the plugin. Expiry dates are compared in memory during the scan and then discarded. Only the risk classification gets saved — "expiring in 5 days", not the card itself.

  • ReadsRetry counts, grace status and card expiry straight from the platform APIs
  • StoresRisk type, severity, days-until-event and the email audit trail
  • Never storesCard numbers, expiry dates, or any other payment detail
/ 06 · Compare

Most stores find out after the renewal fails.

The difference between checking manually, exporting reports by hand, and having it scanned every day.

Comparison of Subscription Health Check against checking WooCommerce subscriptions manually or via spreadsheet exports, across 7 capabilities
What mattersChecking manuallySpreadsheet exportsSubscription Health Check
Runs without anyone remembering to check○○●
Flags an expiring card before renewal daySometimesSometimes●
Distinguishes grace period from failed payment automatically○○●
Emails the customer automatically○○●
Locks out duplicate alerts with a 35-day cooldown○Manual●
Keeps a full email + status audit trail○Manual●
Shows MRR / ARR at risk at a glance○Sometimes●

This table compares Subscription Health Check against checking WooCommerce manually or exporting spreadsheets. It doesn't cover other plugins — WooCommerce Subscriptions' built-in retry system (free, included) will retry a failed charge automatically, and Workfern Subscriptions Recovery is a free WordPress.org alternative. Neither distinguishes grace periods from failed payments, flags expiring cards ahead of renewal, or shows MRR at risk the way this plugin does — but they're worth knowing about before you buy anything. Read the full comparison →

/ 07 · Data & control

It watches. It doesn't guess.

The plugin reads subscription and payment data to classify risk. Anything that changes a subscription is an action you take, deliberately, from the dashboard.

Read-only by design

Risk is classified from subscription and token data. The plugin never modifies a subscription — status changes come from WooCommerce itself.

You choose who gets emailed

Every risk type and severity has its own toggle and recipient setting. Nothing goes out until you turn it on.

Card data stays out of it

Expiry values are compared in memory and never written to plugin tables, emails or logs.

Capability-gated everywhere

Dashboard, settings and manual scan all require manage_woocommerce, with a nonce on every action.

Reliability safeguards

A 45-minute scan lock stops overlapping runs, and every failure is timestamped and logged for you to see.

Clean uninstall

Deleting the plugin removes its tables, settings and scheduled hooks. Nothing lingers in your database.

/ 08 · FAQ

Questions worth answering before you buy.

The things store owners ask before installing anything new.

How is Subscription Health Check different from WooCommerce's built-in retry system?

WooCommerce's built-in retry system retries a payment after it has already failed. Subscription Health Check scans proactively — it flags expiring cards before the renewal date, tracks how long a subscription has been in its grace period, and scores failed payments, grace periods and expiring cards as three distinct risk types instead of one undifferentiated 'payment issue.'

Does it work with WooCommerce HPOS?

Yes. HPOS (High-Performance Order Storage) compatibility is declared, and the plugin reads subscriptions directly via wcs_get_subscriptions() with no adapter layer.

What are the minimum requirements?

WordPress 6.0+, WooCommerce 7.0+, WooCommerce Subscriptions, and PHP 8.0+.

What payment gateways are compatible?

Failed-payment and grace-period detection work with any gateway WooCommerce Subscriptions supports, since neither depends on card data. Expiring-card detection specifically requires a gateway that stores a card token with an expiry date — gateways without that (like PayPal) are covered by the other two risk types but not evaluated for expiring cards.

Does this store credit card numbers?

No. The plugin reads a saved card's expiry month and year from WooCommerce's own payment-token API to compare against the next renewal date, then discards that value. Only the resulting risk classification is stored — never the card number, and never the expiry date itself.

How does scanning get scheduled?

Scans run on your server's system cron via WP-CLI (wp shc run-scan), with a manual "Run Scan Now" button in the dashboard for on-demand checks.

Will this slow down my store?

The scan runs on your own schedule, outside the request path your customers hit. A 45-minute scan lock prevents overlapping runs, and the plugin is read-only — it classifies risk from subscription and token data but never modifies a subscription itself.

What happens if I uninstall it?

A clean uninstall removes the plugin's tables, settings and scheduled hooks. Nothing lingers in your database.

Built by

WisdmLabs — a WordPress Core Contributor.

Subscription Health Check is built by WisdmLabs, a WordPress and WooCommerce development agency that also works across LearnDash, Shopify and Webflow. Subscription Health Check is one of several WooCommerce plugins WisdmLabs maintains.

wisdmlabs.com
14+
years in business
2,000+
projects delivered
900+
clients served
27+
countries
/ 09 · Pricing

One plan. Nothing gated.

No feature tiers, no upsells inside the plugin. Every store that buys it gets the full scan, dashboard and email setup for WooCommerce Subscriptions.

Example: a store with 100 subscribers at $50/mo losing just 3 renewals a year to a missed grace period or an expired card is $1,800/yr in recoverable revenue — Subscription Health Check pays for itself well under that.

Single license

Subscription Health Check

Per site · billed annually
$129/ yearBilled annually, per site. Cancel anytime.
  • +WooCommerce Subscriptions support, HPOS compatible
  • +Scans on your own schedule via system cron, plus manual runs
  • +Expiring card, failed payment and grace period detection
  • +Per-risk, per-severity email routing to admin, customer or both
  • +35-day email cooldown so nobody gets spammed twice
  • +Full email log and risk status history
  • +Clean uninstall, no leftover data
Buy now — $129/yr

Redirects to secure checkout at plugins.wisdmlabs.com

  • No card data stored
  • Doesn't increase PCI DSS scope
  • Clean, complete uninstall

Want the full breakdown vs. checking manually or a free plugin? See the full comparison or view this as its own page at /pricing.

/ 09 · Learn

How the scoring actually works.

Five short reads pulled straight from how the plugin scores, emails and stores subscription risk — not marketing copy.

· Ready when you are ·

Know before the renewal fails, not after.

Install the plugin, point it at WooCommerce Subscriptions, and run your first scan. The results come from your own subscription data, not a demo.