Short answer: reproduce, look, change one thing, retest
To test or repair a WooCommerce subscription renewal, work on a staging copy, reproduce the renewal, read the order notes, the scheduled actions and the gateway log in that order, change exactly one thing, and run the same renewal again. Write down the result each time. The workflow below is the ordered version, and the book’s categories 2 and 4 carry the prompts for each step. Prepare with the pre-update checklist first if the failure followed an update.
Step 1: describe the symptom exactly
Write one sentence: what did you expect, what happened instead, for how many subscriptions, and since when. “Renewals are broken” is not a symptom. “Twelve monthly subscriptions due on 1 October produced renewal orders in Pending payment and no customer email” is. Count whether the failures are all subscriptions, one gateway, one product or one payment method; that single comparison often narrows the cause more than any setting.
Step 2: understand how a renewal is supposed to work
WooCommerce documents the renewal process. In outline, a scheduled action fires at the renewal date, a renewal order is created, and then either the gateway charges the saved payment method automatically (automatic renewal) or the customer is asked to pay (manual renewal). Which of those applies depends on your gateway and the customer’s payment method. If a gateway does not support automatic renewals for a method, renewals for that method are manual by design, which can look like a bug when it is a configuration fact. Read the renewal-process guide and the gateway guide before you diagnose.
Step 3: reproduce on staging
Use a staging copy with the gateway in test mode. Create a test subscription with a short billing period or trigger the renewal manually from the subscription’s admin screen, and watch what happens. If you cannot reproduce the problem on staging, the difference between staging and live (a live-only plugin, a live gateway credential, a live cache or host cron setting) is itself your lead.
Step 4: look in this order
- Order notes on the subscription and the renewal order. They record the status changes and gateway responses in plain language.
- Scheduled actions (WooCommerce → Status → Scheduled Actions). Look for failed or past-due actions around the renewal time. WooCommerce publishes a guide to scheduled action errors.
- WooCommerce logs, including the gateway’s own log and any Subscriptions log, filtered to the renewal time.
- The gateway dashboard: did the charge reach the provider, and what did the provider answer?
Scheduled actions rely on WordPress cron or a server cron job to run. If your site gets little traffic or the host disables the default behavior, actions can run late. The WordPress developer handbook explains how WP-Cron works; ask your host how cron is run on your plan.
Step 5: classify the cause
Most failed renewals fall into one of five families: the payment was declined by the card issuer; the payment method was missing or expired; the gateway does not support automatic renewal for that method; a scheduled action did not run or ran late; or a code or settings change (often an update) altered behavior. Put the symptom into one family before you change anything. The book’s category 4 covers retries after a decline, and category 18 covers involuntary churn from expired cards.
Step 6: change one thing and retest
Make one change, run the same renewal test, and record the result. If you change three things and it works, you do not know which one fixed it, and you may have added two new risks. If the change is to a payment setting or the retry schedule, remember that it also affects customers on live: apply it to live only after it passes on staging.
Quick reference: symptom to first place to look
| Symptom | Look first |
|---|---|
| No renewal order created | Scheduled actions and cron |
| Renewal order pending payment | Order notes and the gateway’s renewal support |
| Charge failed | Gateway log and the decline reason; retry settings |
| Customer charged twice | Duplicate renewal orders and gateway dashboard |
| Paid but access missing | Subscription status and membership plan link |
Step 7: close the loop
After the fix, check the next real renewals. Compare the number of renewal orders created, paid, failed and awaiting manual payment with the previous cycle. Write what you learned in your log and add the new case to your test sequence so it is checked every time. If customers were affected, the book also includes prompts for writing a clear, honest message.
A worked example
Imagine a store with a monthly membership sold as a subscription. On the first of the month, most subscriptions renew, but about a fifth are left in “pending payment” with no email. Describing the symptom exactly shows the affected subscriptions all use the same payment method. The order notes show the renewal order was created on time, so the scheduled action ran. The gateway log shows no charge attempt for those orders, which points away from card declines and toward how that payment method is handled on renewal. Checking the gateway’s documentation shows that method is not charged automatically on renewal in the installed version, so those renewals were always manual; a recent update changed which customers saw the manual-payment email. The fix is a configuration and communication fix, not a code fix. Without the ordered steps, the store might have spent a day reinstalling plugins.
The example is illustrative, not a prediction; your store’s cause will differ. The method is what carries over.
Automatic and manual renewals: decide deliberately
With automatic renewal the gateway charges a saved method without the customer doing anything. With manual renewal the customer receives an order and must pay it. WooCommerce Subscriptions supports both and documents how to switch a subscription between them, and its Health Check tool can flag manual-renewal subscriptions that could renew automatically. Manual renewals tend to lose more revenue because every renewal needs a customer action, so know how many of your subscribers are on manual renewal, and why.
What to tell customers while you fix it
If customers are affected, say so plainly: what happened, what they need to do (if anything), and when you will update them. Do not blame them, and do not promise an outcome you cannot control. Avoid sending repeated payment demands to customers whose renewal failed because of your own configuration. Pause or hold reminder emails until you know which customers truly owe a payment.
What to gather before asking for help
- Versions of WordPress, WooCommerce, Subscriptions, Memberships and the gateway.
- The exact error text and the time it occurred, with the time zone.
- The subscription and renewal order numbers affected, and how many.
- The relevant order notes, scheduled-action entries and log excerpts (remove personal data and secrets first).
- What changed recently, and what you have already tried.
This list makes a support ticket to the extension vendor or gateway much faster to resolve, and it is exactly the set of facts the workspace asks for once and reuses.
Sources and verification
WooCommerce, its extensions, WordPress and payment gateways change their features, settings and screens from release to release. The statements in this guide reflect what WooCommerce and WordPress published when it was last reviewed on 5 October 2026, against WooCommerce core 11.1.2 (the stable release listed on the WooCommerce developer blog that day), and may change. Subscriptions and Memberships are separate extensions with their own version numbers: check the versions installed on your own site and the current documentation below before you act, and never test changes on a live store without a backup.
Educational guide only. Not legal, tax, security-audit or financial advice. The Prompt Powerhouse is independent of, and not affiliated with or endorsed by, WooCommerce, Automattic or WordPress. No renewal, retention or sales result is guaranteed.