Subscription renewals should require zero manual work once configured correctly. This guide covers the complete automation setup in WPSubscription — from billing schedule configuration to renewal orders, payment triggers, and the email sequence that keeps customers informed throughout the renewal cycle.
The goal: a subscription business that runs reliably without daily admin intervention, freeing your time to focus on product, marketing, and growth rather than billing operations.
Why This Matters
Automated renewals are the difference between a subscription business that scales and one that requires constant manual intervention. Without automation, you would need to manually invoice customers, chase payments, send reminders, and reconcile failed transactions — work that doesn't scale past a few dozen subscribers.
With proper automation, the same admin effort supports thousands of subscribers. Every minute of automation work invested pays dividends as your subscription base grows.
The economics: configuring renewal automation takes 2-3 hours, but saves dozens of hours per month at scale.
Before You Start
- WPSubscription installed and activated
- Payment gateway configured with webhooks (critical for automated renewals)
- WordPress cron or Action Scheduler running correctly
- Email setup working (WP Mail SMTP recommended)
- A monitoring plan for the first weeks post-launch
Step-by-Step Instructions
Verify WordPress cron is running
WooCommerce uses WordPress's Action Scheduler to trigger renewal charges on schedule. If cron is not running, renewals will not fire — silently.
Go to WooCommerce → Status → Scheduled Actions and check for pending renewal actions. If actions are stuck or not processing, replace the default WP Cron with a real server cron job (check with your hosting provider) or use the Action Scheduler companion plugin to debug.
This is the most common cause of "renewals not firing" issues.
Configure billing schedule on subscription products
Edit each subscription product and confirm the billing interval and period are set correctly (e.g., $19 per month). The "Subscription length" setting controls whether the subscription is indefinite (blank — recommended) or expires after a set number of billing cycles (specific count for fixed-term subscriptions).
For most recurring products, leave this blank so the subscription renews indefinitely until the customer cancels.
Enable automatic payment triggering
Go to WPSubscription → Settings → Renewals. Ensure "Automatically process renewal payments" is enabled.
When this is on, WPSubscription creates a renewal order at the scheduled time and immediately attempts to charge the gateway. When off, renewals create orders but require manual payment processing — disable manual-only mode for any production subscription business.
Manual mode is only appropriate for businesses requiring approval workflows.
Configure the pre-renewal email sequence
Go to WPSubscription → Settings → Emails. Enable the "Renewal Reminder" email and set it to send 3-5 days before each renewal date.
For annual subscriptions, also enable a 14-day advance reminder. These reminder emails reduce billing disputes, remind customers of the value they are receiving, and give them time to cancel or update payment details if needed.
Keep the copy transactional and brief — no marketing in renewal emails.
Set up failure recovery automation
Configure WPSubscription's dunning settings: retry on day 1, 3, and 7 after failures, send customer notification emails with payment update links, and set a 21-day grace period before final cancellation. Enable Stripe Smart Retries in your gateway dashboard for ML-optimized retry timing.
This recovery infrastructure runs automatically on every failed renewal, recovering 50-75% of failed payments without admin intervention.
Monitor the first automated renewal cycle
After setup, monitor the first batch of renewals closely. Go to WooCommerce → Subscriptions and look for subscriptions with renewal dates in the next 24-48 hours.
After those renewals fire, check WooCommerce → Orders to confirm renewal orders were created, gateway charges succeeded, and renewal emails were sent. Review WooCommerce → Status → Logs if anything did not fire as expected.
The first month is when configuration issues surface; after that, the system runs on its own.
Pro Tips
- Replace default WP Cron with server-level cron — eliminates timing reliability issues
- Monitor WooCommerce → Status → Scheduled Actions weekly — catches stuck actions before they affect MRR
- Set up alerting (Slack, email) for renewal failures above a threshold — early warning system
- Test automation end-to-end before launching with real customers — fix issues before they affect revenue
- Document your automation setup — useful for troubleshooting and team onboarding
Result
WooCommerce subscription renewals now run fully automatically — renewal orders are created on schedule, gateway charges fire without manual intervention, customers receive reminder and receipt emails, and failed payments enter the recovery flow automatically. The subscription business scales without proportional admin growth, freeing your time for higher-leverage work.
Troubleshooting
Problem:Subscriptions are past their renewal date but no renewal order was created
Solution:Check WooCommerce → Status → Scheduled Actions for the renewal action. If it shows as pending but not executing, WP Cron is likely not running. Add a real cron job to your server that calls wp-cron.php every 5 minutes, or install a plugin like WP Crontrol to diagnose the issue. Many managed WordPress hosts have built-in cron settings.
Problem:Renewal orders are created but the payment charge is not firing
Solution:This indicates the payment trigger is not completing after the order is created. Check WooCommerce → Status → Logs for gateway errors. The most common causes are expired API keys, invalid webhook configuration, or the gateway account being in a restricted state. Re-verify your gateway settings and ensure webhooks are correctly configured with current signing secrets.
Problem:Some renewals are firing twice (duplicate charges)
Solution:Webhook retries can cause this if webhook handlers aren't idempotent. Check Stripe Webhooks dashboard for events delivered multiple times due to timeouts on your end. Ensure your webhook responses complete within 5 seconds — long-running handlers cause timeouts and retries. If duplicates happen consistently, file a bug report with WPSubscription support.
Problem:Renewal emails are being sent but charges are failing silently
Solution:Email sending and payment processing happen at different stages. Email confirms the renewal attempt; the charge happens via webhook. If emails fire but no actual charges occur, check the WooCommerce → Subscriptions admin to see actual charge status. Often this indicates webhook signing secret issues — re-copy from gateway dashboard.
Frequently Asked Questions
Why are my subscriptions not renewing automatically?
How do I monitor that my subscription automation is working?
What happens if my server is down when a renewal should fire?
Can I see exactly when each subscription will renew?
Should I use server cron or WP Cron for subscription automation?
Related Glossary Terms
More Guides
How to Set Up Recurring Payments in WooCommerce
6 steps · Connect your payment gateway and configure automatic billing schedules for subscription products.
How to Handle Failed Payments in WooCommerce
6 steps · Configure automatic retry logic and customer notifications to recover failed subscription payments.
How to Send Subscription Renewal Emails in WooCommerce
6 steps · Configure and customize automated renewal reminder and receipt emails for WooCommerce subscriptions.