Why Isn't WooCommerce Creating a Renewal Order?
Why This Happens
A renewal order is generated by a scheduled action (via Action Scheduler, which runs on top of WP-Cron by default) firing at the subscription's next payment date. If that action never fires — because WP-Cron isn't running, the site has very little natural traffic to trigger it, or the action queue itself has stalled — no renewal order gets created at all, which looks different from a payment simply failing (in a failed payment, the order exists but shows a failed status).
Common Causes
- WP-Cron not firing reliably. WordPress's default "cron" only runs when a visitor loads a page, so a very low-traffic site (or one with aggressive full-page caching serving cached pages without triggering PHP at all) can miss scheduled events for long stretches.
- Action Scheduler queue backed up or stalled. A large number of pending scheduled actions from other plugins can delay when WooCommerce's own renewal actions actually get processed.
- The scheduled action itself failed silently. A PHP error thrown during renewal-order creation (often from a conflicting plugin hooked into the same process) can prevent the order from being created without leaving an obvious error for a site owner to notice.
- Subscription's next payment date is incorrect. A subscription with corrupted or manually miscalculated meta data can have a next-payment date in the past or far future, so nothing was actually due when expected.
- The subscription is already in a non-renewing status (on hold, cancelled, expired) and correctly isn't generating a renewal — worth confirming the status before assuming it's a bug.
How to Fix It
- Check WooCommerce → Status → Scheduled Actions for the specific subscription's renewal action — "pending" past its scheduled time confirms a scheduler problem rather than a payment one.
- Set up a real server cron job calling
wp-cron.phpon a fixed interval (every 5–15 minutes is typical) instead of relying on site traffic, and disable WordPress's default pseudo-cron inwp-config.phponce that's in place. - Check for PHP errors in the site's error log around the time the renewal should have run, particularly if other plugins also hook into order creation.
- Verify the subscription's own next-payment date directly on its admin screen — if it looks wrong, it can be corrected manually, though it's worth finding out why it drifted in the first place.
- Manually trigger the renewal from the subscription admin screen once the underlying scheduling issue is fixed, to bring the subscription back on schedule without waiting for the next natural cycle.
A scheduler problem affecting one subscription is usually affecting many others too, quietly — worth a full check across all active subscriptions once one is found. See WooCommerce fixes if this needs a proper audit.