Case study 06 of 08
WooCommerce Subscription Date Manager Pro
An open-source plugin that moves the next payment date on many WooCommerce subscriptions at once, with filters to skip the ones that should not change.
01The Problem
WooCommerce Subscriptions edits payment dates one subscription at a time. When a store needs to shift its billing cycle, that means hours of manual edits and a real risk of charging someone on the wrong day.
02The Approach
I built an admin tool under the WooCommerce menu that goes through the WooCommerce Subscriptions API instead of writing to the database directly.
That keeps dates, scheduled renewals and order notes consistent with what Subscriptions expects.
03The Solution
Admins set a new payment date, an exclusion date and a list of customer emails to skip, confirm, and run.
- A Date Manager screen under WooCommerce, limited to users with the
manage_woocommercecapability, with every request nonce-checked. - Updates through
$subscription->update_dates(), with an order note on each changed subscription. - Skips subscriptions paid after the exclusion date or owned by an excluded email, matched case-insensitively.
- Configurable batches of 10 to 100 with a short pause between them to ease server load.
- A log of the last 10 runs with who ran them, the dates used and updated, skipped and error counts, plus a
wcsm_subscription_updatedaction for each change.
04The Why
The Subscriptions API is slower than a bulk SQL update, but it keeps renewals scheduled correctly and leaves an audit trail on every subscription.
The exclusion filters exist because bulk changes are only safe when recently paid and special-case customers stay untouched.
The run log answers the first question after any billing change: who changed what, and when.
05The Result
The plugin is public on GitHub under GPLv3, at version 1.0.2. It supports WordPress 5.8+, PHP 7.4+ and WooCommerce 5.0+ with WooCommerce Subscriptions.