Eric Mutema

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.

Role
Author and maintainer
Type
Open-source WordPress plugin
Timeline
January to June 2025
Stack
  • PHP
  • WordPress
  • WooCommerce
  • WooCommerce Subscriptions
  • JavaScript
  • AJAX

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_woocommerce capability, 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_updated action 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.

06Stack

  • PHP
  • WordPress
  • WooCommerce
  • WooCommerce Subscriptions
  • JavaScript
  • AJAX

View repo