WordPress Plugin · WooCommerce Subscriptions · v1.0.0 · Coming soon
Renewal Rescue
Every failed subscription renewal in one cockpit — and the retry schedule, finally editable without code.
- WordPress 6.2+
- PHP 7.4+
- GPLv2+
- Woo Subscriptions
- Documented filters
Free core coming to the WordPress.org plugin directory. This page is the plugin’s official home.
Your subscription store has a retry system. Have you ever seen it?
When a renewal payment fails, WooCommerce Subscriptions quietly schedules retries — on a timetable hard-coded in 2016, editable only through a PHP filter, with no screen showing you what it is doing or what it saved. Failed renewals are where subscription revenue actually dies: cards expire, banks decline, and every exhausted retry is a customer who slips away unnoticed. Renewal Rescue is the cockpit for that system — the failures, the schedule, the at-risk customers, the recovered money — built on the documented filters, replacing nothing.
How it works
See the failures. Steer the retries.
Job one · The cockpit
Every failed renewal, what happens next, and what it is worth
WooCommerce Subscriptions retries failed payments on a schedule it has shipped, hard-coded, since 2016 — and gives you no screen to watch it. Renewal Rescue is that screen: every failed renewal, the retry that is coming and when, the subscriptions that exhausted every attempt, and the revenue you actually got back.
- Upcoming retries with the customer, amount and timing — before they run.
- At-risk subscriptions: every retry spent, human intervention required. Named, not buried.
- Recovered-revenue tracking: what the retry system saved this month, in currency.
2 subscriptions exhausted every retry — needs a human
7 failed renewals this week · 5 recovered by retries · $412.00 recovered. Counted from real orders, not projected.
Upcoming retries
| #5121 · dan••@… | Retry 2 of 5 · in 9 hours $29.00 · card declined | |
| #5087 · mia••@… | Retry 4 of 5 · tomorrow 09:10 $119.00 · insufficient funds | |
| #4998 · joe••@… | All retries exhausted $59.00 · card expired — call them | |
| #5140 · ana••@… | Recovered on retry 1 $29.00 back |
Job two · The schedule editor
Reshape the retry schedule from a screen, not a code snippet
The retry rules — how many attempts, how far apart, which emails, which order status — have always been editable only through a PHP filter. Renewal Rescue puts the documented filter behind a validated editor: rows you add and drag, timings you set in hours or days, guardrails that stop a schedule that would misbehave. No custom schedule? WooCommerce’s exact defaults pass through untouched.
- The stock 12h / 12h / 24h / 48h / 72h schedule shown honestly — and passed through byte-identical until you change it.
- Custom rows validated hard: sub-hour gaps, 14-day-plus gaps and broken statuses are refused with reasons.
- Built on the documented WooCommerce Subscriptions retry filters — not a fork, not a patch.
Retry schedule LIVE
| Attempt 1 · T+12h | No emails · order status: pending |
| Attempt 2 · T+24h | Customer email · order status: pending |
| Attempt 3 · T+48h | Customer + admin email · order status: on-hold |
| Attempt 4 · T+96h | custom was 72h — moved to give the bank two extra business days |
Stock until you say otherwise
No custom schedule means WooCommerce Subscriptions’ shipped defaults pass through untouched — verified byte-identical, not assumed.
It steers, never replaces
Renewal Rescue drives WooCommerce Subscriptions’ own retry system through its documented filters. Retries still run exactly where they always ran — there is no second billing engine, and turning the plugin off restores stock behaviour instantly.
Verified against the real thing
The schedule contract was verified against the actual GPL retry classes and exercised end-to-end on a real WooCommerce install — including proof that with no custom schedule, the shipped defaults pass through untouched.
Money math you can audit
Recovered revenue counts one thing: renewal orders that failed, were retried, and then paid. No projections, no “estimated saved churn” — a number you could recompute from the orders screen by hand.
In the free build
Complete for running one store’s dunning.
Nothing below is limited, metered, or unlocked by payment.
-
Failed-renewal cockpit
Every failed renewal with its retry position, customer, amount and next attempt — live, in one screen.
-
Retry schedule editor
The full schedule as editable rows — count, spacing, emails, statuses — with hard validation and one-click return to stock.
-
At-risk list
Subscriptions that exhausted every retry, flagged for a human, deduplicated so you are never told twice.
-
Recovered-revenue tracking
What the retry system actually got back, counted from real orders.
-
Daily digest
The failures, recoveries and at-risk subscriptions that need a human — named, with order links.
-
Site Health integration
Retry-system health — including a stuck retry queue — surfaced in WordPress’s own screen.
-
WP-CLI with JSON
The cockpit as data, for your fleet tooling.
-
Schedule passthrough proof
No custom schedule means WooCommerce’s exact defaults — verified, not implied.
Free vs Pro
Pro is for squeezing the last failures back.
The free build gives you the cockpit and the editor. Pro adds the recovery levers: per-gateway schedules, business-hours timing, pre-dunning before cards expire, recovery emails, and the alert channels an agency needs.
| Capability | Free | Pro |
|---|---|---|
| Failed-renewal cockpit with upcoming retries and at-risk list | ✓ | ✓ |
| Retry schedule editor with validation and stock passthrough | ✓ | ✓ |
| Recovered-revenue tracking + daily digest | ✓ | ✓ |
| Site Health integration, WP-CLI with JSON | ✓ | ✓ |
| Sites your licence covers | One, complete | 5 · unlimited on Agency |
| Per-gateway retry schedules | — | ✓ |
| Retry timing window — attempts land inside business hours | — | ✓ |
| Pre-dunning: card-expiry email before the renewal even runs | — | ✓ |
| Second-attempt recovery email with a pay-now link | — | ✓ |
| Slack & webhook alerts with high-value flags | — | ✓ |
| REST endpoint + CSV export · 90-day retention | — | ✓ |
Pro · founder pricing
Pro
$99/yr
Agency
$249/yr
14-day trial, no card required. Annual, in US dollars. Pro is sold and licensed through Freemius, the merchant of record.
Questions people ask.
Doesn’t WooCommerce Subscriptions already retry failed payments?
Yes — that is exactly the point. It ships a competent retry system with no cockpit, no editor and, on many stores, not even switched on. The schedule has been hard-coded since 2016, changeable only through a PHP filter. Renewal Rescue is the missing UI for the system you already own.
Does it replace the WooCommerce Subscriptions retry system?
No, and deliberately so. It configures the existing system through its documented filters. Retries run exactly where they always ran; deactivate Renewal Rescue and stock behaviour returns instantly.
What happens if I never touch the schedule?
Nothing changes. Without a custom schedule, WooCommerce Subscriptions’ shipped defaults pass through untouched — this passthrough is explicitly tested, not assumed.
Can a bad schedule break my billing?
The editor refuses schedules that would misbehave: sub-hour spacing, gaps beyond 14 days, unknown order statuses, more rows than the retry system handles. Invalid rows are named with reasons, not silently corrected.
Do I need WooCommerce Subscriptions?
Yes — Renewal Rescue is a companion to WooCommerce Subscriptions (the official extension), which owns billing and retries. Renewal Rescue gives that system its missing screens.
What does uninstalling remove?
Its events table, options and schedules — and your retry schedule returns to WooCommerce Subscriptions’ shipped defaults.
How much did failed renewals cost you last quarter?
You probably can’t answer — that is the problem. Renewal Rescue puts a number on it, shows you every save the retry system made, and hands you the schedule that decides the rest.