WooCommerce Subscriptions Not Renewing
WooCommerce Store Fixes
Recurring revenue that quietly stopped recurring.
Renewal orders are not being created, or are created and immediately marked failed. Subscriptions sit as “on hold” or “pending cancellation”, and monthly revenue drops without any obvious event.
What it actually means
A subscription is a scheduled promise: on a given date, create an order and charge a stored payment method. Two things must work for that to happen — something must run on time, and the stored payment credential must still be valid.
In WordPress, the thing that runs on time is cron, and WordPress cron is not a real scheduler. It only fires when someone visits the site. On a quiet store, renewals scheduled for 3am can sit untouched for hours, or be missed entirely.
This failure is unusually costly because it is silent and compounding. Nothing errors on screen. Revenue simply drifts down while everything appears to be working.
What usually causes it
Most likely first.
- 1
WordPress cron not running reliably
Low traffic, a caching layer serving pages without hitting PHP, or cron disabled entirely. The most common cause.
- 2
Expired or updated cards
Cards expire constantly. Without account updater services or dunning emails, each expiry is a silent cancellation.
- 3
The gateway no longer supports the stored token
After a gateway change or migration, stored payment methods can become unusable for future charges.
- 4
A failed renewal with no retry
One decline marks the subscription on hold, and without a retry schedule it stays there permanently.
- 5
Webhooks not reaching the site
The gateway processed the payment but its confirmation never arrived, so the subscription was never marked paid.
How to fix it
Work through these in order. Take a backup before you change anything.
Step 1 — Check scheduled actions
WooCommerce, Status, Scheduled Actions. A long queue of pending or past-due actions means cron is not firing, and that is your answer.
Step 2 — Replace WordPress cron with a real one
Disable WP-Cron in wp-config.php and add a genuine server cron job hitting wp-cron.php every few minutes. This is the durable fix for scheduling.
Step 3 — Verify gateway webhooks
Check the gateway dashboard for failed webhook deliveries, especially after any domain or hosting change.
Step 4 — Set up retries and dunning
Configure automatic retry schedules and customer emails for failed payments, so one decline does not silently end a subscription.
Step 5 — Audit on-hold subscriptions
Go through the ones already stuck and recover them by hand. Every one is revenue that is currently sitting still.
When to stop and call someone
Call someone if scheduled actions are backing up on a store of any size, since it means every timed feature is unreliable, or if you have a queue of on-hold subscriptions — recovering those is time-sensitive, because the longer a customer goes unbilled the less likely they are to reinstate.
Frequently asked
Usually because WordPress cron is not running reliably, so the scheduled renewal never fires. WordPress cron only runs when someone visits the site, so a quiet store can miss scheduled tasks entirely. Replacing it with a real server cron job is the standard fix.
Open WooCommerce, Status, Scheduled Actions and look for pending actions with past-due dates. A growing backlog is clear evidence that scheduled tasks are not firing, and it affects renewals, emails, and every other timed feature.
For any store with subscriptions, yes — disable it in wp-config.php and add a genuine server cron job calling wp-cron.php every few minutes. This makes scheduling independent of visitor traffic and is more efficient under load.
The subscription is typically put on hold. Without a configured retry schedule and dunning emails, it stays there indefinitely and the customer is never billed again. Most lost recurring revenue is a single decline nobody followed up.
Enable your gateway's account updater service where available, so replacement cards are picked up automatically, and set up dunning emails asking customers to update details before expiry. Both are configuration rather than development work.
If you’d rather not
We do this work every week. These are the services that cover it.
- eCommerce DevelopmentBuild a store that makes buying feel simple. We shape product pages, checkout, payments, tracking, and store workflows so customers can act with confidence.
- Workflow AutomationRemove the handoffs that slow the team down. We connect the tools you already use so leads, alerts, tasks, records, and reports move without copy-and-paste work.
- Conversion Tracking & Tag SetupCan you name the channel that produced your last ten customers? We install Google Tag Manager, GA4, and ad-platform conversion tracking so every lead is measured.
See exactly what’s holding your website back.
Get a free audit of your site — speed, SEO, mobile, and security — with the fixes that matter most, delivered as a PDF to your inbox.