Overview
QuixWP Renewal Scheduler is an extension for the official WooCommerce Subscriptions plugin. WooCommerce Subscriptions is mandatory and must be installed and active. Renewal Scheduler is not a standalone subscription plugin and does not replace WooCommerce Subscriptions.
Renewal Scheduler changes how selected WooCommerce Subscriptions products determine their next recurring payment date. Instead of every subscription renewing only from its own signup anniversary, products can follow a reusable annual calendar containing one or more fixed renewal dates.
The official WooCommerce Subscriptions extension remains the subscription and payment engine. It continues to manage subscription records, payment methods, renewal orders, recurring payments, and subscription statuses. Renewal Scheduler adds calendar calculation, assignment, propagation, migration/conversion tools, simulation, and renewal-health inspection.
- Reusable annual calendars with one or more renewal dates.
- Exact store-local renewal hour and minute.
- Immediate or deferred first recurring payment.
- Simple and variable subscription product assignment.
- Existing active subscription adoption.
- Migration from WooCommerce Subscriptions Schedule by Shop Plugins.
- Conversion from WooCommerce Subscriptions Billing Date Alignment into QuixWP calendars.
- Individual active-subscription timing overrides.
- Interactive schedule simulator.
- Renewal Monitor with payment-action health information.
- Cursor-based background propagation through Action Scheduler.
Requirements
| Requirement | Minimum |
|---|---|
| PHP | 7.4 |
| WordPress | 6.0 |
| WooCommerce | 7.0 |
| Official WooCommerce Subscriptions | 4.0 — mandatory |
Important: installing Renewal Scheduler without the official WooCommerce Subscriptions extension does not provide subscription products, recurring billing, renewal orders, or subscription management.
High-Performance Order Storage compatibility is declared by the plugin. Stores using large subscription populations should also have a healthy Action Scheduler queue and reliable WordPress or server cron.
Quick start
- Install and activate WooCommerce.
- Install and activate the official WooCommerce Subscriptions extension.
- Install and activate QuixWP Renewal Scheduler.
- Open WooCommerce → Renewal Schedules.
- Create a schedule and add the required annual renewal dates.
- Choose the renewal hour and minute in the store timezone.
- Choose the signup billing mode.
- Assign the schedule to the required subscription product or variation.
- Use the simulator to test signup dates around each renewal occurrence.
- Complete a test checkout using the production payment gateway in its safe/test mode.
- For an existing store, review the adoption or migration sections before changing any current next-payment dates.
Calendar model
A schedule is a reusable annual calendar. Each occurrence contains a month and day, while the schedule also stores a shared local renewal time.
Example:
- July 1 at 12:00.
- September 1 at 12:00.
The next eligible occurrence is calculated in the store timezone. Calendar calculations preserve local wall-clock time across daylight-saving changes.
Same-day behaviour
The configured renewal time matters. A signup before the same-day cutoff can resolve differently from one after the cutoff. Use the schedule simulator before saving changes to confirm the expected next occurrence.
Processing time versus scheduled time
The stored next-payment date is a target timestamp. It is not a guarantee that the payment gateway will complete the charge at that exact second. Action Scheduler availability, WP-Cron or server cron, gateway response time, queue load, and store performance can all affect when processing actually starts or finishes.
Signup billing modes
Charge immediately
The recurring amount is charged at signup and the next recurring payment is the next calendar occurrence.
- Signup on June 30 → charged June 30 → next renewal July 1.
- Signup on July 5 → charged July 5 → next renewal September 1.
This can intentionally result in two charges close together. The plugin does not silently skip the next calendar occurrence because the signup happened shortly before it.
Defer the first recurring payment
The first recurring amount is not collected at signup. It is due on the next configured calendar occurrence. WooCommerce Subscriptions sign-up fees remain separate and may still be charged immediately.
Product and variation assignment
Schedules can be assigned to products created by the official WooCommerce Subscriptions extension and to individual subscription variations. The schedule travels with the recurring cart and is used when the subscription is created.
When a recurring cart contains products that resolve to incompatible schedules, Renewal Scheduler rejects the conflict rather than silently choosing one calendar.
Changing a product assignment
Changing a product assignment affects future subscription resolution. Existing subscriptions should not be assumed to have moved automatically. Use the schedule's existing-subscription tools to preview and intentionally adopt or realign eligible active subscriptions.
Schedule simulator
The simulator uses the same date-calculation logic as the production schedule flow. It can evaluate unsaved schedule form changes so you can test behaviour before committing the configuration.
Use it to preview immediate and deferred signup billing, signups immediately before and after renewal dates, same-day cutoffs, upcoming occurrences, and processing-window behaviour.
Existing subscriptions
Existing subscriptions created by the official WooCommerce Subscriptions extension can be adopted from products and variations assigned to a QuixWP schedule. This is useful even when no legacy scheduler metadata exists.
Preview candidates first
The adoption preview separates assigned products, matching unassigned active subscriptions, and subscriptions already controlled by the schedule. Review the candidate count before starting a live operation.
Preserve current next-payment dates
Use this mode when you want QuixWP to take ownership of matching subscriptions without changing their current next-payment timestamps. This is the safer first step for many migrations.
Reschedule immediately
Use this only when you intentionally want eligible active subscriptions to move onto the configured calendar now. Renewal Scheduler updates the WooCommerce subscription date so the legitimate scheduled payment action is replaced rather than simply adding another action.
Important: preserving a date and aligning a date are different operations. A preserved date can remain a valid WooCommerce next-payment timestamp while still differing from the intended QuixWP calendar occurrence.
Migration and conversion
Renewal Scheduler intentionally supports only migration paths that already use the official WooCommerce Subscriptions extension as the underlying subscription engine.
1. WooCommerce Subscriptions Schedule by Shop Plugins
The migration tool can detect WooCommerce Subscriptions Schedule by Shop Plugins and import supported schedule data, product assignments, and subscription assignments.
The import step preserves existing next-payment dates. This means imported subscriptions can retain old dates and times even after their schedule configuration has been recreated in QuixWP.
After import, review the resulting schedule and separately decide whether eligible active subscriptions should be aligned to the QuixWP calendar.
2. Official WooCommerce Subscriptions Billing Date Alignment
The Marketplace version is designed to detect compatible schedules using WooCommerce Subscriptions' own Billing Date Alignment feature and transform that alignment into a QuixWP calendar.
This is a configuration conversion inside the same official WooCommerce Subscriptions system, not a migration from a different subscription engine. After conversion, existing subscription dates still require an explicit review/alignment decision.
Unsupported subscription engines
Renewal Scheduler does not migrate standalone subscription systems such as YITH subscriptions, WebToffee subscriptions, WP Swings subscriptions, or other plugins that maintain their own subscription records instead of the official WooCommerce Subscriptions data model.
Only one scheduler should control live dates
When migrating from Shop Plugins, keep the old plugin available while validating imported data if necessary, but deactivate it before live adoption or realignment gives QuixWP control of the same subscriptions.
Individual subscription timing overrides
An active subscription already assigned to the selected schedule can be moved earlier than the shared calendar without editing the calendar itself.
- Override range: up to 30 local calendar days early.
- The underlying schedule occurrence remains the reference point.
- The effective next renewal becomes the earlier subscription-specific date.
- Entering 0 removes the override and returns the subscription to standard schedule timing.
Renewal Monitor
The Renewal Monitor provides a paginated view of active WooCommerce Subscriptions assigned to calendar schedules.
- Effective next renewal.
- Underlying calendar occurrence.
- Individual early-date difference where an override exists.
- Due-today and overdue state.
- Latest renewal payment result.
- WooCommerce scheduled-payment action integrity.
Action integrity and calendar alignment are separate health checks. An action can correctly match a preserved WooCommerce next-payment date while that date still differs from the intended QuixWP calendar.
Background processing
Propagation and adoption work in cursor-based batches. Action Scheduler can continue queued work outside the immediate browser request, while authenticated AJAX is used for responsive administration and visible batch progress.
A shared lock prevents browser processing, Action Scheduler, and maintenance workers from intentionally taking the same subscription batch at the same time.
Cron matters
WooCommerce and WooCommerce Subscriptions rely heavily on scheduled actions. Large stores should not depend on occasional frontend traffic to trigger WP-Cron. A real server cron that calls WordPress cron on a reliable interval is recommended for production subscription stores.
Operational safety
- Back up the database before a large migration or bulk realignment.
- Test the schedule with staging data and the actual payment gateway integration before production use.
- Treat import/conversion and calendar alignment as separate decisions.
- Do not run two scheduling plugins against the same live subscriptions.
- Review active subscription candidates before bulk adoption.
- Investigate missing, mismatched, or duplicate scheduled-payment actions before forcing further date changes.
- Do not manually edit Action Scheduler rows as a normal repair workflow.
Troubleshooting
Renewal Scheduler says WooCommerce Subscriptions is missing
Install and activate the official WooCommerce Subscriptions extension. Renewal Scheduler cannot create or manage subscriptions without it.
A subscription has the correct next-payment date but renewed later
Check Action Scheduler, WordPress/server cron, gateway response time, queue backlog, and server load. The configured timestamp is the scheduled target; execution is asynchronous.
An imported subscription does not match the new calendar
This can be expected when the import was run in preserve mode. Import ownership and calendar alignment are deliberately separate operations.
The monitor shows a missing or duplicate payment action
Do not create or delete scheduled actions casually. Review the subscription, its stored next-payment date, recent renewal orders, and Action Scheduler state. Use the plugin's supported repair path when available for the specific state.
Need help?
Use Renewal Scheduler support. Include the WordPress, WooCommerce, WooCommerce Subscriptions, and PHP versions; whether HPOS is enabled; cron configuration; the schedule pattern; and a small set of affected subscription IDs. Never send payment credentials or customer payment data.