Tackling Subscriptions While Leveraging WooCommerce

There are many options for running a recurring-based business. In the WordPress ecosystem, using WooCommerce with WooCommerce Subscriptions is a very popular and versatile combination. It’s how I’ve been handling payments from customers at Anchor Hosting for the last 4 years. It works out pretty well, however, it could be better.

I’ve thought about building my own billing system many times, however have held myself back.

Billing is complex. I don’t want to create something super elaborate which takes a bunch of my time to maintain. That said, at my scale I really want my subscriptions to be friction-less and currently it’s not.

I started brainstorming what a CaptainCore subscription add-on could look like. This is something I would immediately use. At the same time, I’m also looking to transition my paying hosting customers over to automatic usage pricing. Here is a rough outline of the features I want to have.

  • Create subscriptions based on a fixed renewal dates. With WooCommerce Subscriptions, paying late will move the next renewal forward based on the day the payment was made. I don’t like that. If someone pays late I want their future renewals to happen when they were originally supposed to happen.
  • Handle automatic renewals and regular old invoices for folks that wish to pay by check.
  • Renewal should have automatic price adjustments based on their number of WordPress sites, storage, and visits. Currently, I need to manually adjust subscriptions which is a waste of time and not very accurate.
  • When usage needs change it should automatically generate a pending charge or provide credits which are applied at the next renewal. WooCommerce doesn’t have a built-in method for handling this.

Most of my pain-points are due to my reliance on WooCommerce Subscriptions, not WooCommerce itself. Rather than roll my own billing system, I’ve decided on a comprise. I plan to build CaptainCore Subscriptions as a replacement for WooCommerce Subscriptions. That will allow me to leverage the entire WooCommerce ecosystem for things like payment gateways and email notifications while focusing on solving some of my more specific needs around the subscriptions.

Sounds easy enough, let the development begin!

Before adding new features there are always two questions going through my mind. Where do I store the data, and how do I display it? Most of the new UI will be for administrators to manage subscriptions. In order to leverage WooCommerce, CaptainCore will need to know which WooCommerce products it can use to generate WooCommerce invoices.

I expanded my configuration section to select 3 different products, which will be used for the main hosting plan, add-ons, and usage pricing. Also added sections for handling pricing which will be used for pricing calculations. This is highly tailored for how I plan on handling billing at Anchor Hosting. My pricing is based on a selected plan and also a per usage system as shown in my hosting plan calculator.

New CaptainCore configurations to support accounts with plans.
CaptainCore WooCommerce production selection

Expanding CaptainCore Accounts to handle new subscription features.

CaptainCore accounts are used to assign permissions. Think of them as organizational units that can have users, sites and domains. Each account can have a plan which tracks usage and determines plan limits. All of these plan details are crudely stored with a single database column for the accounts. This will be good enough for my purposes. I’m thinking I should be able to use the new_renewal to track active subscriptions and handle all of the renewal logic. We will see. More development to come.

Why work on CaptainCore Subscriptions?

With everything I could be working on for CaptainCore you might be wondering why I decided to focus on this feature. Well the truth is I much rather be working on, well anything else. This isn’t something that will directly allow more folks to experience CaptainCore. However indirectly it totally is.

The reality is my current invoices and subscriptions is a bit of a mess. Every time my customers usage changes, it needs to be manually accounted for and prices adjusted. Solving this would be a huge time saver for me which translates directly to me having more time to work on other things.

At the same point I’m currently juggling 2 invoicing systems. I use WooCommerce for the majority of my customers. For large agencies which have dozens or hundreds of sites, I’m manually adjusting a repeating invoice coming directly from my accounting software, Xero. By building a CaptainCore Subscription I also plan to move everyone to a single invoicing solution, which is going to be way easy to manage. At least I hope so. 😅