Subscriptions is a hugely popular paid WooCommerce extension. It initially launched three years ago, and some of the concepts in the big 2.0 release have been planned and developed over a period of about 18 months.
Prospress has six full time employees and a freelancer today, when it was just lead developer Brent Shepherd until May of 2014. Brent tells me his company's flagship (and only for now) product has seen steady growth from the beginning.
It's probably one of the larger commercial plugins generally, but since it's built on top of WooCommerce, it flies under the radar of prominent plugins sometimes. And with a starting price of $199 per year, it's not a cheap plugin either.
If a site has Subscriptions enabled — like mine does — then it's likely a foundational piece of the website. That means that new features and changes are more important than those of other plugins. The Subscriptions 2.0 changes are huge, and will affect nearly every store that runs the plugin.
This is a fascinating update and plugin to study, largely because of the underlying architectural changes that occurred. A key change was creating a new Subscriptions object, separate from Orders.
Because WooCommerce Subscriptions v1.0 was designed to simply connect PayPal Standard’s subscription product with WooCommerce, and PayPal manages recurring billing, invoicing and other subscription management tasks, in Subscriptions v1.0, all subscription data was stored on the order created to record the initial purchase of the subscription product.
However, an order is a record of a transaction in the past. A subscription is an agreement for transactions in the future. Therefore, it is counterintuitive to store and manage subscription information on an order. Because of this, and to make working with subscriptions more flexible, the major underlying change in Subscriptions v2.0 is that a subscription’s data is now separated from the order in which it was purchased. In Subscriptions v2.0, a subscription is now a separate object.
This separation also means:
- more than one subscription can be created for each order placed in the store, making it possible to purchase different subscription products in the one transaction;
- subscriptions can have more than one product associated with them, so that a single subscription can provide access to multiple different virtual products or delivery of multiple different physical products, reducing the cost of recurring payments on those products and centralising renewals into a single order;
- you can now create or modify a subscription with an interface designed especially for editing a subscription, rather than editing an order to modify a subscription;
- modifying a subscription no longer modifies the original order, which means modifications to a subscription no longer rewrite history, they only change the agreement between the store and the customer for the future; and
- a subscription has its own unique ID, making it easier to refer to a subscription, regardless of the order or product/s relating to that subscription.
The separation of a subscription from an order is the fundamental change that made it possible to introduce the rest of the new and improved features discussed in the rest of this guide.
Thanks to this change, most of the other new features are possible. An additional huge upgrade in the release is the possibility for editing existing Paypal orders. If you've ever run Paypal orders, you know this is forbidden territory, but with Reference Transaction feature (which must be enabled case by case through Paypal support, sadly) subscriptions can be manipulated.
This update came just in time for me, as I'll surely need to use many of the new features between now and when the first Post Status member renewals happen in late January. Check out the release post and the guide to what's new for more; even if you aren't a Subscriptions user it's a fascinating plugin to observe.