WooCommerce · YITH Subscriptions

Subscription risk you can see before it costs you.

WooCommerce Subscriptions and YITH WooCommerce Subscriptions already track retries, grace periods and card expiry. Subscription Health Check scans them daily, ranks what's at risk, and emails your team or the customer before the renewal fails.

3
risk engines
187
tests passing
0
card details stored
Subscription #4821Expiring 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. YITH has suspended access, 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.

/ 00 · Ecosystem

One plugin. Both Woo stacks.

Subscription Health Check speaks WooCommerce Subscriptions and YITH WooCommerce Subscriptions through a shared adapter layer, so the dashboard, thresholds and email routing behave identically whichever stack you run.

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, a tabbed and sortable risk table below, and bulk actions on the same page — including reinstating cancelled subscriptions without leaving the table.

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
Bulk: send alertsBulk: reinstate cancelledFilter: 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, trial, overdue, on-hold, suspended and pending-cancellation subscription is pulled through the source adapter when the scan runs.

Sources: WooCommerce, YITH
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

Act, resolve, reinstate.

Bulk-send alerts, bulk-reinstate cancelled subscriptions with a welcome-back email, and watch rows auto-resolve when a renewal finally lands.

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

MRR and ARR at risk sit next to the subscriptions causing it, so you know what's actually on the line before deciding what to chase.

02

Support teams

Failed payments and grace periods are flagged before the customer emails in asking why they were charged — or why they weren't.

03

Operations managers

One filterable, sortable table instead of opening subscriptions order by order to see who's behind on payment.

04

Agencies

Install it on every subscription store you manage and get the same dashboard, thresholds and routing on each site.

/ 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 or YITH WooCommerce Subscriptions — normalised through one adapter layer.
Scheduling
Daily WP-Cron scan with up to six slots per day, plus manual Run Scan Now.
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.

What mattersChecking manuallySpreadsheet exportsSubscription Health Check
Runs without anyone remembering to check
Flags an expiring card before renewal daySometimesSometimes
Understands YITH's suspended state
Emails the customer automatically
Bulk-reinstates cancelled subscriptions
Keeps a full email + status audit trailManual
Shows MRR / ARR at risk at a glanceSometimes
/ 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. Nothing is modified unless you explicitly reinstate a subscription.

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, manual scan and bulk actions all require manage_woocommerce, with a nonce on every action.

Reliability safeguards

Overlap locks, reschedule locks and self-healing when a scheduled event goes missing.

Clean uninstall

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

/ 08 · Pricing

One plan. Nothing gated.

No paid tier inside the plugin. Every store that installs it gets the full scan, dashboard, recovery workflow and email setup — on both WooCommerce and YITH Subscriptions.

Single license

Subscription Health Check

Per site · billed annually
Pricing coming soonWe're finalizing this ahead of launch. Get early access to be first to know.
  • +WooCommerce and YITH WooCommerce Subscriptions support
  • +Daily scans with up to six slots, plus manual runs
  • +Expiring card, failed payment and grace period detection
  • +Per-risk, per-severity email routing to admin, customer or both
  • +Bulk alerts and one-click reinstatement
  • +Full email log and risk status history
  • +Weekly admin digest
  • +Clean uninstall, no leftover data
Get early access
· Ready when you are ·

Know before the renewal fails, not after.

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