WooCommerce Subscriptions version 2.0 has been in development for more than a year. This major new version reinvented the extension to take into account 3 years of feedback from store managers.
As well as introducing new features, version 2.0 changes how subscription data is stored and accessed to make it possible to purchase different subscription products in the one transaction. Subscriptions version 2.0 also improves a number of existing features, such as manually adding or modifying a subscription.
This guide provides information about new and improved features in WooCommerce Subscriptions version 2.0.
If you are a store manager looking for instructions to help ensure you have a smooth upgrade to version 2.0, please refer to the Subscriptions Upgrade Guide.
If you are developer who needs to update custom code to work with Subscriptions v2.0, please refer to the Developer Overview of Subscriptions v2.0 Architectural Changes.
Separate Subscriptions ↑ Back to top
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.
Multiple Subscriptions ↑ Back to top
One issue with linking a subscription to an order was that it made it very difficult to create different subscriptions from a single transaction. By separating subscriptions from orders in Subscriptions v2.0, it was possible to introduce a way for customers to purchase different subscription products in the same transaction.
The multiple subscriptions feature introduced with version 2.0 means:
- customers no longer have to repeat the entire checkout process to buy each subscription product they want to subscribe to;
- payment gateway fees can be reduced by processing the sign-up and renewal of multiple products in the one transaction instead of a transaction for each product (most payment gateways charge a flat per transaction fee); and
- the number of renewal orders created is reduced, thereby streamlining fulfilment – multiple orders are no longer created for what may be a single shipment to a customer.
The multiple subscriptions feature is enabled automatically. You only need to use a payment gateway that supports multiple subscriptions in order to be able to offer this feature to your customers.
Learn more about the way the multiple subscriptions feature works in the guide to Multiple Subscriptions.
New Edit Subscription Interface ↑ Back to top
Because all subscription information was previously linked to the original order used to purchase the subscription, the WooCommerce > Edit Order screen was used to modify a subscription. This was counterintuitive. It also meant an interface for viewing and managing a snapshot of the past needed to be able to modify terms for the future. That’s why Subscriptions v2.0 introduced a new Edit Subscription administration interface.
This new interface is based on the WooCommerce > Edit Order screen, but instead of displaying the details of a transaction from the past, it is used to show the terms for transactions scheduled for the future. Giving a subscription its own interface vastly improves the experience of creating a subscription and modifying an existing subscription’s billing schedule, line items, recurring totals and payment method, as well as the subscriber’s billing and shipping addresses.
Learn more about the new WooCommerce > Edit Subscription interface in the guide to Add or Edit a Subscription.
Change Payment Method Administration Interface
With Subscriptions v1.5, you had to modify data in the database via MySQL to change a subscription from automatic to manual renewal payments (or manual to automatic). Subscriptions v2.0 now provides a way for payment gateways to allow changes to that meta data from the new Edit Subscription screen.
If you have a payment gateway installed that supports administrator payment method changes, a new set of fields for payment gateway specific meta data will be added to the billing details section of the Edit Subscription interface. This set of fields allows you to change the data used to link the subscription in your WooCommerce store with the payment gateway used to process recurring payments. It can be used to make future payments for a subscription using a different credit card with the same payment gateway, or using a different payment gateway altogether; for example, Stripe instead of PayPal.
Learn more about how to use the new Change Payment Method Administration Interface in the section on how to setup recurring payments in the Add or Modify a Subscription guide.
Change Billing Schedule
It was already possible to change a subscription’s next payment date with Subscriptions v1.5, but what if you wanted to provide a customer with an extended free trial? Or add an extra month to the expiration date? Or change the subscription to bill monthly instead of weekly?
With Subscriptions v2.0, if a subscription was purchased using a payment gateway that supports payment date changes, you can change all aspects of the billing schedule from the Edit Subscription screen, including the billing period and interval, trial end date and expiration date.
Manage Downloads on Subscriptions
In Subscriptions v1.5, a subscription’s download permissions were managed using the permissions on the order created to record the purchase of the subscription. This meant you had to modify an order’s download permissions to modify a subscription’s download permissions, which was counterintuitive.
The download permissions for a subscription can now be managed on that subscription. These download permissions can be viewed and updated via the Edit Subscription interface in much the same way they would be for the order of a non-subscription product.
Drip Downloadable Content ↑ Back to top
Subscriptions v2.0 introduces a basic content dripping feature for downloadable files.
By default, adding a new downloadable file to an existing subscription product will automatically provide download permissions to all subscribers with an active subscription to that product. However, you can now change this behaviour to only provide existing customers with access to new files after their next renewal payment has completed. This is great for digital magazines that want to provide subscribers with access only after that month’s renewal.
To enable content dripping:
- Go to: WooCommerce > Settings > Subscriptions
- Click the Drip Downloadable Content checkbox
- Click the Save Changes button
If you want full featured content dripping, check out WooCommerce Memberships.
View Subscription Page ↑ Back to top
In Subscriptions v1.5, customers were given a snapshot of the details of their subscription in the My Subscriptions table on the My Account page. Because of the size constraints of this table, only the order ID, product name, subscription status, next payment date and end date for the subscription were displayed. There was no space to include the billing schedule, recurring total, shipping address or other important subscription information.
To provide a customer with access to all of the details of their subscriptions, Subscriptions v2.0 introduced a new View Subscription page.
Similar to WooCommerce’s My Account > View Order page, the new My Account > View Subscription page comprehensively displays the information associated with a subscription, including the billing schedule, payment method, subscriber’s addresses, products, fees, taxes, shipping costs and other associated line items.
The My Subscriptions table is still used to provide an overview of the subscription and link through to the My Account > View Subscription page, but the details and management functions, like suspending or cancelling the subscription, upgrading or downgrading items on the subscription or changing the payment method, are all displayed on the My Account > View Subscription page instead of being squeezed into the My Subscriptions table.
Learn more about what a customer see on their My Account > View Subscription page and the subscription management actions she can perform from here in the the Subscriber’s View document.
Unsubscribe to a Single Product Line Item
Because a subscription can now include more than one product as a line item, cancelling the entire subscription can cancel access to multiple products. A subscriber may no longer want one or more products on their subscription, while still continuing to receive other products. To handle this situation, Subscriptions v2.0 made it possible to remove a single product item from a subscription via the My Account > View Subscription page.
For example, if a customer has a monthly subscription to a punnet of strawberries, bag of apples and box of oranges, she can remove the box of oranges, and continue to receive the strawberries and apples. She can also cancel the subscription completely if she no longer wants to receive any of the fruit weekly.
Switch a Single Product Line Item ↑ Back to top
Prior to version 2.0 of Subscriptions, a subscription could only be associated with one product and one order. As a result, upgrading or downgrading a subscription meant that an existing subscription’s status had to be changed to switched and an entirely new subscription was created, instead of simply changing the product or products to which the subscription related. This could be confusing because the customer only expected to change products, not create an entirely new subscription.
As a result, in Subscriptions v2.0, the switch process was changed to upgrade or downgrade a single product line item, not the entire subscription. This approach is simpler and provides a much more flexible switching system than previously possible.
For example, if a customer has a weekly subscription to a 500g punnet of strawberries, bag of 5 apples and box of 12 oranges, she can now upgrade the strawberries to 1kg punnet and downgrade the box of oranges to a bag of 5 without creating any new subscriptions or affecting the bag of apples. Instead, a new switch order will be created to record the switch and the products on the existing subscription will be updated.
The new process for upgrading or downgrading a subscription is explained in detail in the Subscriber’s View of Switching Subscriptions document.
Learn more about the details of how upgrades and downgrades work in Subscriptions v2.0 in the Switching Guide.
Gateway Changes for Switching Support
Because of the changes mentioned above, for a subscription to be switchable with Subscriptions v2.0, the payment gateway used to purchase that subscription needs to support:
- recurring amount changes; and
- payment date changes.
Prior to version 2.0, the only requirement for switching was that the payment gateway support subscription cancellation. However, in order to support the new switching process, the ability to switch now requires that a payment gateway supports both recurring amount changes and payment date changes. Importantly, this means that subscriptions purchased with PayPal Standard can not be upgraded or downgraded in version 2.0 of Subscriptions until Reference Transactions are enabled on your PayPal account.
You can view a table of the features each payment gateway supports in the Subscription Payment Gateways Guide.
Renewal Order Creation Before Payment ↑ Back to top
Subscriptions version 1.0 did not create any renewal orders to record recurring payments. As a result, when renewal orders were introduced in version v1.2, renewal order creation was retrofitted to the existing renewal process and renewal orders were created only after the payment gateway processed the payment.
This design had a few significant drawbacks:
- if an error occurred when attempting to process the renewal payment, the renewal order would not be created so there was no record of the renewal and the customer couldn’t simply login to pay for that pending renewal order to reactivate the subscription.
- payment gateways had to use special Subscriptions code for handling subscription renewal payments, instead of being able to use WooCommerce’s core code for orders.
- when WooCommerce v2.2 introduced a way to store payment gateway transaction IDs on an order, it was not easy for payment gateways to add the transaction ID for renewal orders.
Because of these issues, Subscriptions v2.0 changes the renewal process to create the renewal order before the scheduled subscription payment is processed.
Renewal orders can now have the renewal payment’s transaction ID associated with them, and if an error occurs, the order’s status can be changed to processing or completed manually by the store owner; or the customer can login to pay for the renewal order to get the subscription back on track without any manual intervention from support staff.
PayPal Reference Transactions ↑ Back to top
Since version 1.0, Subscriptions has included support for purchasing subscriptions via PayPal Standard. However, PayPal Standard is a very limited payment method that can not support all of Subscriptions features. Furthermore, keeping the copy of your subscription data in sync with PayPal via the IPN can cause headaches for stores when things go wrong.
That’s why Subscriptions v2.0 introduced an entirely new way to work with PayPal – Reference Transactions.
This new system makes it possible to sell multiple subscriptions, change recurring totals and billing schedule, as well as allowing your customers to switch subscriptions; none of which is possible with PayPal Standard. However, there is a catch: PayPal must enable Reference Transaction support on your PayPal account before you can use this new system.
Follow the guide to having Reference Transactions enabled and if PayPal approves your account, then you can begin to use this system. If PayPal does not enable Reference Transactions on your account, you can continue to use PayPal Standard until such a time that PayPal does approve your account.
Small Improvements ↑ Back to top
In addition to the major functional changes above, a number of smaller tweaks were also introduced with v2.0.
One Time Shipping
Shipping for subscription products is normally charged on the initial order and all renewal orders. However, some products need to ship only once at the start of the subscription, like mobile phones with a data plan.
Subscriptions v2.0 introduces a new One Time Shipping option for subscription products. Enable this to only charge shipping once on the initial order.
Pending Cancellation Status
A new Pending Cancellation status has been introduced and is applied to subscriptions between when the customer cancels the subscription and when the subscription’s next payment date was due. The end date for the subscription will also be scheduled to coincide with the date of the subscription’s next payment date.
This helps communicate to the customer that although their subscription will not automatically renew again, they will continue to receive access for the prepaid term of the subscription.
It also allows extensions, like Memberships, and custom code to continue to provide any special access the customer has prepaid for that period.
Improved Subscriptions Table
The Manage Subscriptions administration table has been redesigned. In addition to being faster to search, sort and filter, it now displays more of a subscription’s information, including the recurring total and payment method. Search and sorting by next payment date are also now available in stores with more than 5,000 subscriptions, whereas previously these features were disabled on large sites.
One End Date
In Subscriptions v1.5, a subscription could have both an Expiration Date and an End Date. The Expiration Date was a date in the past or future on which the subscription was scheduled to expire, and the End Date referred to the actual date the subscription ended, either by expiration or cancellation.
These dates have been combined into a single value – End Date – to simplify the amount of meta data associated with a subscription.
Resubscribe not Renew
The process where a customer renews a cancelled or expired subscription is now referred to as resubscribing instead of renewal. This helps avoid confusion between the resubscribe process and the scheduled renewal process for active subscriptions.
Uniform Failed Payment Handling
In earlier versions of Subscriptions, a subscription was not suspended until after a renewal payment was processed. This meant if an unexpected error occurred while processing the payment, the subscription may have remained active. In version 2.0, the subscription is suspended before the renewal payment process begins to avoid this issue.
Earlier versions also offer an Add Outstanding Balance setting as a way to correct failed payments with the next renewal. However, this setting was only used and supported by PayPal Standard. It was not relevant for more modern payment gateways, which gave the store owner greater control of the renewal process, including the ability to process a renewal for an active subscription to collect outstanding payment when required.
This setting has been removed in version 2.0 of Subscriptions. It caused a lot of confusion because:
- it didn’t work consistently across all payment gateways
- some store owners would manually activate a subscription left on hold due to a failed payment, but not change the renewal order’s status or realise this setting was enabled, so when the next renewal was processed for 2x the normal price, it would be a surprise to both the customer and store owner