Changelog

  • When it comes to policies regarding support for previous releases of a project’s dependencies, it is important to strike a fair balance between progress and stability. As we look to increase the performance and reliability of WooCommerce, it is necessary that we clearly outline exactly what that policy is, as well as our goals in creating it.

    Starting with the 4.2 release, we will adapt an L-2 sliding window support policy.

    What this means is that we are committed to ensuring that WooCommerce Core will work with the current WordPress version, as well as the latest release from the two previous release branches.

    As an example, when WooCommerce 4.2 is released, it will officially support:

    • WordPress 5.4.1 (the most recent version of WordPress),
    • WordPress 5.3.3, and
    • WordPress 5.2.6 (from the two previous release branches).

    We’d like to outline the three major factors that played a role in this decision, so that everyone can better understand the context behind it.

    Testing Surface

    Over the last year our top priority has been stability. This does not come without a cost, and a great deal of work has gone into thoroughly testing every release. In order for us to be as confident as possible in shipping, we need to make sure that WooCommerce works on every version of WordPress that we support.

    If we try to support too many versions at once either the quality of the testing or the frequency of the releases will suffer. As we view neither of these to be an acceptable loss, we need to adopt a predictable support policy.

    Security & Fixes

    Given the kind of platform WooCommerce is, there is an increased scrutiny in ensuring that shops are secure and stable. The hope is that by more aggressively encouraging users to update, we avoid enabling stragglers that may be unknowingly leaving their shops open to attack.

    Features & Enhancements

    Each successive release of WordPress Core carries with it new features and enhancements that enable us to deliver the best experience to merchants. While in many cases we can use progressive enhancement to enable features in specific versions, the larger the minimum version margin becomes, the more significant the maintenance burden. We feel that this sliding window is large enough to be maintainable while still enabling us to take advantage of the new features.

    We hope that you’ll join us in moving forward with the WordPress platform, and in helping keep all sites running WooCommerce up to date with the latest, greatest, most secure software available.


  • We are very excited to announce that WooCommerce 4.1 is generally available now. It has been in development since March 2020 and has about 400 commits from 28 contributors.

    This is a minor release, which means everything is backward compatible with the previous version.

    As always, we recommend creating a backup of your site and making sure that themes and plugins are compatible before updating. See this guide for more details.

    What’s new in 4.1?

    This release contains lots of performance improvements and stability fixes. Along with these improvements, these are the major features being shipped with 4.1:

    (more…)

  • Storefront 2.5.6 has been tagged for release and uploaded to WordPress.org. This is a small release focused on maintenance and compatibility fixes.

    Here’s what’s new (pulled directly from the changelog):

    - Enhancement - Custom site background color is now used in editor preview. 
    - Fix - Ensure mobile sticky footer navigation links are visible when colours are customised (use header/nav colour scheme, consistent with 2.5.4 and earlier releases). 
    - Fix – Fix issue where product and category images were not centered on homepage & category pages. 
    - Fix – "Reveal password" button (eye icon) is now positioned correctly in new password fields (my account change password and signup). 
    - Fix - Fix several mispositioned :focus rings (in Firefox and other browsers). 
    - Fix – Ensure product images have appropriate bottom margin. 
    - Fix – Buttons blocks now respect the border radius set by the user. 
    - Fix - Buttons blocks now respect the border radius set by the user. 
    - Fix - Buttons blocks no longer show an underline. 
    - Fix – Product page, cart, and checkout layout fixes affecting stores with longer product names on smaller screens. 
    - Fix - WordPress 5.4 compatibility – Text inside the Calendar block is now centered, in line with the Calendar widget. 
    - Fix – WordPress 5.4 compatibility – Ensure block editor uses theme typography styling. 
    - Fix – WordPress 5.4 compatibility – Adapt block editor width if sidebar widgets are present/disabled. 
    - Compatibility - Disable the footer bar when used with Checkout or Cart blocks (currently in development). 
    - i18n – Use correct direction arrow icons in RTL languages (next, previous and forward). 
    - i18n – Fix inappropriate use of disambiguation context in admin notice 'or' string. 
    - Tweak – Improve HTML5 compliance for enqueued scripts and styles. 
    - Tweak – Removed unnecessary vertical-align css rule for button, select, input and textarea elements. 
    - Dependencies – Update Font Awesome icon font to 5.13.0. 

    Download the latest release of Storefront from WordPress.org, or venture over to Dashboard → Updates in your WordPress admin to update your theme.

    As usual, if you see any issues, please log them in detail on Github.


  • We have published another Release Candidate for WooCommerce 4.1 and we invite everyone to test out before final release on May 5. This release includes an updated fix version of WooCommerce Admin and Action Scheduler, along with some minor fixes.

    See this PR for list of commits that we cherry-picked for this release.

    Testing

    To test, you can use our beta tester plugin or download the release from wordpress.org directly.

    If you discover any bugs during the testing process, please let us know by logging a report in GitHub.

    Thanks to all the testers and contributors!


  • WooCommerce Subscriptions is a premium extension, and this page has answers to commonly asked questions.

    We recommend reading the Subscriptions Guide for Store Managers if you haven’t already. For technical questions about integrating software with Subscriptions, refer to the Subscriptions Developer Docs.

    Topics

    Subscriptions Features

    What type of subscriptions can I sell with WooCommerce Subscriptions?

    WooCommerce Subscriptions can be used to sell any product or service requiring recurring payments. You can sell the following product types:

    • Physical
    • Virtual
    • Downloadable

    You can also offer services and memberships by setting a subscription to be virtual.

    Can Subscriptions do [insert-feature]?

    There are many great ideas for how to use a subscription to create a novel business model. It is great to see so much variety in the eCommerce world, but as Subscriptions is an off-the-shelf product, it can not possibly support every use case.

    If you don’t see a feature discussed in this FAQ or listed in the store manager guide, then Subscriptions likely does not include that feature.

    If the feature you require doesn’t have broad appeal, the good news is, Subscriptions makes it possible for an expert WordPress or WooCommerce developer to add just about any feature. If you need an expert developer to add a feature to Subscriptions, consider working with a WooExpert.

    Where can I find a list of the upcoming features?

    You can find this in the Subscriptions Roadmap here.

    How can I ship physical products on a different schedule to the payment schedule?

    To help manage shipping on subscriptions to physical goods, WooCommerce Subscriptions generates a renewal order for each payment. That means if you want to ship a product monthly, you should set the payment schedule to bill monthly.

    Another option using only Subscriptions is to:

    • charge the entire subscription’s amount as a sign-up fee
    • set a $0 recurring amount
    • set the billing period to the shipping interval
    • set the length to be the total number of times the product will be shipped
    One-Year Subscription Shipping Monthly
    One-Year Subscription Shipping Monthly

    There are downsides to this approach, including:

    • The subscription price will be displayed as $0 / month
    • A renewal order will be generated each month, with a $0 total for the subscription. This order will be visible to the customer on their My Account page and optionally emailed to the them each month (however, both the My Account and Email templates could be changed to remove this). Alternatively, you can also use our mini plugin to disable renewal emails for ‘free’ ($0) renewals.
    • If customer suspension is enabled and the customer suspends or cancels a subscription that uses this pricing model, they may not receive items for which they have already paid.
    • You may need to hide the Cancel button on the My Subscriptions table because if the customer cancels the subscription before the end of the term, no renewal orders will be generated, despite the customer already having paid for those renewals.

    Furthermore, there is no method for having a recurring billing schedule that differs to the recurring shipping schedule (for example, a subscription which charges $50 every 3 months but ships every month).

    For now, when using WooCommerce Subscriptions, the best method for managing shipping is to use the same payment schedule as the intended shipping schedule.

    Does Subscriptions retry failed payments?

    Yes! Subscriptions has an automatic retry system for failed recurring payments.

    Subscription Product Management

    How can I offer a subscription with a variable billing period?

    To offer customers a choice of billing period on a subscription, you can use either:

    Using a Variable Product

    To create a variable subscription with different billing periods:

    1. Go to: Products > Add New
    2. Set the product type to be Variable subscription
    3. Create a new variation attribute on the product and call it Billing Period (or anything you prefer)
    4. Add different periods to the new Billing Period attribute. e.g. week, month, year
    5. Create a variation for each billing period
    6. Set the subscription period for each variation to match the billing period attribute assigned to it.
    A "Billing Period" Attribute with Week/Month/Year Values
    A “Billing Period” Attribute with Week/Month/Year Values
    Subscription Variation with a Period Matching the Billing Period Attribute
    Subscription Variation with a Period Matching the Billing Period Attribute

    Using a Grouped Product

    To use a Grouped product to offer different payment billing schedules:

    1. Create multiple Simple subscription products, each with different billing period
    2. Add each subscription to a grouped product

    Here is a screenshot of a grouped product with subscriptions at three different intervals: monthly, every 6 months and yearly.

    WooCommerce Subscriptions - Grouped Product
    Variable Recurring Billing Periods on a Grouped Product

    [box type=”note”]The All Products for WooCommerce Subscriptions plugin can be used to create a product that has both one time purchase options and subscription options within the same product[/box]

    Can I use a subscription like a variable product?

    Yes! Subscriptions offers a Variable Subscription product type. For each variation, you can set a different sign up fee, trial period, billing period, billing interval and subscription length.

    What is the exact interval for a monthly subscription, i.e. is it 30 days?

    With a daily subscription, payments are triggered every 24 hours. A day is always 24 hours, so this is no issue. But what about months where the number of days differs?

    The amount of time between a monthly billing interval is one month. This means 30 days for some months (April, June etc.), 31 days for others, and then 28 or 29 days for February. If a monthly subscription is created on the 15th of February, the next payment will be charged on the 15th March. If the billing interval for a subscription is every 2 months and it is created on the 15th of February, the next payment will be charged on the 15th April.

    What about subscriptions purchased on the last day of the month?

    If a subscription is purchased on the last day of the month, recurring payments will continue to be charged on the last day of the month. For example, if a $10 / month subscription is purchased on the 31st December, its next 4 payments will be charged on:

    • 31st January
    • 28th February (or 29th February for a leap year)
    • 31st March
    • 30th April
    What about recurring payments on the 28th, 29th or 30th day of the month?

    This system will also be used if the day a payment is normally charged is not the last day of the month, but it is on the 28th, 29th or 30th day of the month, and the next payment is due in February, which has no 30th day (and no 29th day in non-leap years).

    For example, if a $10/month subscription is purchased on the 29th December 2012, the next 4 payments will be charged on:

    • 29th January 2013- not the last day of the month
    • 28th February 2013 – notice it has switched to the last day of the month as there is no 29th day in February when it is not a leap year
    • 31st March 2013 (last day of the month)
    • 30th April 2013 (last day of the month)

    This logic ensures that a payment is made every month, and therefore, that one year includes 12 payments.

    Why are subscription payments charged late (or early) with PayPal?

    Unfortunately, the above only applies to subscriptions where WooCommerce Subscriptions controls the billing schedule. When creating a subscription with PayPal, PayPal takes control of the schedule for charging recurring payments payments.

    How does Subscriptions manage stock?

    WooCommerce Subscriptions creates an order to record each renewal payment. Each of these orders has the subscription product as an item on the order so when the order is processed, the stock for that item will be reduced. This allows for accurate inventory management for physical products that need to be shipped each billing period.

    For example, if a store has 100 widgets in stock, and then a customer buys a weekly subscription to those widgets, the widget stock will be reduced by one for the initial purchase, leaving 99 widgets. After the first renewal a week later, the stock will be reduced by one again, leaving 98 widgets. A week later, the subscription will renew a second time and stock will be reduced again, leaving 97 widgets.

    Subscription Inventory Management
    Subscription Inventory Management

    If you do not want inventory to be reduced for all renewal orders, you can use the free WooCommerce Subscriptions – Do Not Reduce Stock on Renewal plugin.

    [box type=”note”]If your product’s stock quantity reaches 0, Subscriptions will not prevent new renewal orders from being processed or mark renewal orders as failed. It will process renewal orders normally. The product’s stock count will go into the negative. If you wish to stop renewals for out-of-stock products, suspend the subscriptions that contain those products.

    However, if renewal is initiated manually, Subscriptions will prevent renewal orders from being processed. [/box]

    What happens if I change the price of a subscription product?

    WooCommerce Subscriptions calculates the recurring amount that a subscriber should be charged at the time the subscriber places an order. This amount is then stored against their subscription. As a result, if you change the price of a subscription product, existing subscribers won’t be effected. All existing subscriptions will continue to be charged the old price by default.

    This also applies to a subscription product’s ‘Sale price’. If a subscriber purchases a subscription during its’ sale price time period, the subscription will renew for that discounted price indefinitely, until manually updated by an admin.

    To understand more about why this is the case, read over the Subscription Product vs Subscription Guide.

    It is possible to manually change the amount charged for a subscription, as explained in the guide to modify recurring totals. If you need a way to bulk edit the recurring amounts charged for subscriptions, AutomateWoo can be used to bulk update subscription prices. Or if you would like another alternative, you can also use Enhancer for WooCommerce Subscriptions that will allow you to carry out this bulk update at subscription prices.

    Can I change the product on a subscription?

    Depending on the payment gateway you use on your site, it may be possible to manually delete then add a new subscription product to a subscription.

    Your customers can also upgrade or downgrade a subscription, i.e. switch to a different subscription product or variation, from the My Account page.

    How is the minimum price for a variable subscription calculated?

    When displaying a variable subscription’s price on the store page, Subscriptions displays a “From: $x / period” price. This the lowest possible price at which a customer can access a subscription.

    Subscriptions uses a general rule to determine the cheapest variation: the lowest initial price for the longest period.

    For example, if a variable subscription has the following 3 variations:

    1. $5 per month
    2. $5 every 3 months
    3. $5 every 6 months

    The 3rd option will be set as the lowest possible price because it is for the longest period.

    For another example, if a variable subscription has the following 3 variations:

    1. $5 per month
    2. $10 per month with 1 week free trial
    3. $50 per year with 1 month free trial

    Again, the 3rd option will be set as the lowest possible price because it has the cheapest initial price, free, for the longest period, 1 month.

    For these examples, this method makes sense, but it might seem confusing when selling variations at different prices and different billing period. For example, with two variations, $5 / month and $20 / year. In this case, the $20 / year subscription is cheaper on a daily basis over a 12 month period. However, the lowest possible price the customer can access the subscription for is $5 / month. Furthermore, if a customer only remains subscribed for 3 months, then they will pay a lower total price than the annual amount. As a result, the minimum price would be displayed as $5 / month.

    What about the subscription length for variations?

    If multiple variations have exactly the same price and billing period, Subscriptions will think each variation’s price is identical, even if the variations have different lengths.

    For example, consider a variable subscription with the following 2 variations:

    1. $5 / month for 1 month
    2. $5 / month for 3 month

    Subscriptions will think these two prices are identical. As a result, it will determine the minimum price based on the last variation which it checked, which is the variation with the highest ID.

    So for this example, if the second variation has the higher ID, Subscriptions will display the variable subscription’s price string as $5 / month. If the first variation has the higher ID, the variable subscription product’s price would be displayed as $5 for 1 month.

    Can a Subscription have a Three-Tier Price?

    A three-tier price is where the customer pays three different amounts for their subscription at different stages of the subscription’s lifecycle.

    For example, consider a monthly subscription wherein:

    1. months 1-6, the customer pays $29.99
    2. months 7-12, the customer pays $19.99 and then
    3. months 13 and beyond, the customer pays only $9.99.

    Subscriptions allows you to create a product with a two-tier price, by using a sign-up fee. The product price does not allow for a three-tier price to be input. However, it is still possible to have three-tier prices.

    With Limited Payment Coupons, Subscriptions can have a three-tier price where the price increases over the life cycle, as explained in the guide to three-tier pricing with limited coupons.

    To provide a price which decreases, or some other complex pricing tier system, the AutomateWoo extension can be used. This extension provides a way to add or remove a coupon from a subscription, and add  or remove products from a subscription. These can be used to change the amount charged for the subscription at any stage during its lifecycle.

    To achieve three-tier pricing without AutomateWoo or Limited Coupons, it’s possible to:

    • update each subscription manually after the desired number of payments to change the recurring price (only really suitable when you have only a few subscribers)
    • hire developer from our WooExpert Marketplace to write a custom plugin to have the price changed automatically after the second payment.

    If a customer is subscribed to a downloadable product, do they have access to that product forever?

    If you create a subscription product with downloadable files associated with it, the customer will only have access to the files while their subscription is active or pending-cancel.

    If the subscription has expired, is on-hold or has been cancelled, the customer will not be able to download the files associated with the subscription.

    The Download expiry field for the product should be left blank, i.e. “Never”. Otherwise, if say the Store Owner sets the expiry days to 30, but the Subscription renews every month, there may be some days where customers have an active sub but still cannot download the file.

    How can I create a subscription where customers pay the entire bill up-front?

    To charge the entire subscription amount up-front, there are two options:

    1. Create a subscription for 1 billing period, e.g. $100 for 4 months or $120 for 6 months
    2. Make the subscription free for each recurring interval and charge the total amount in the sign up fee. e.g. $0 / month for 4 months with a $100 sign up fee or $0 / month for 6 months with a $120 sign up fee

    The first option is most suitable when wanting to provide access to something (e.g. content) for a certain period of time.

    The second option is most suitable when you want to ship the subscription product each month (so you want an order to be generated to manage shipping).

    Combine one of these with a variable subscription and a billing period attribute, and you can allow the customer to choose whether they pay up-front or monthly.

    A better method to handle this situation is also a popular feature request. If you would like to see this added, please vote for that feature.

    How can I provide subscribers with access to new downloadable files?

    After a customer has purchased a downloadable subscription product, they will be able to download any files associated with that product from their My Account page for as long as the subscription is active. However, you may also wish provide existing subscribers with access to new files.

    WooCommerce Subscriptions provides two options to handle this situation. You can either provide access to new files:

    1. immediately, by adding files to the subscription product; or
    2. after the customer’s next renewal is processed (known as dripping).

    The first of these options is the default behavior in Subscriptions, while the second can be enabled with the setting to drip downloadable content.

    Provide Immediate Access to Downloadable Files

    To provide active subscriptions with access to new downloadable files immediately:

    1. Go to: WooCommerce > Settings > Subscriptions and make sure the Drip downloadable content setting is disabled
    2. Go to: Products > Edit Product
    3. Go to the General tab of the Product Data metabox
    4. Click Add File
    5. Click Update to save the product
    Add New Downloadable File to Subscription
    Add New Downloadable File to Subscription

    Existing subscriber’s with an active subscription will automatically receive access to those files on their My Account page.

    Drip Feeding Downloadable Files with each Renewal

    To link access to the new downloadable files with each renewal payment, you can enable Subscriptions’ Drip downloadable content feature.

    How can I charge a payment at a custom interval?

    Out of the box, Subscriptions allows you to charge a recurring payment on a billing interval of 1-6 i.e. every day, every 2nd day, every 3rd day etc.

    Default Subscription Billing Intervals
    Default Subscription Billing Intervals

    If you want to charge payments on a different billing period, it is also possible to add your own with a little bit of code. For example, the plugin’s code shown below will add a every 10th billing interval. You can change the 10 to any number you require and install it as a plugin on your site.

    View on Github

    How can I customize subscription price strings?

    [box type=”note”]There is currently a free mini-plugin that will allow you to customize the price string from the admin area.[/box]

    The price displayed for a subscription product and order totals for a subscription order can be customized by plugins.

    If you are a WordPress developer, you can use the 'woocommerce_subscription_price_string' and 'woocommerce_subscriptions_product_price_string' filters along with the parameters passed to those filters, to customize the string.

    How can I offer a longer subscription length?

    Out-of-the-box WooCommerce Subscriptions allows store managers to sell subscriptions that last only as long as the longest length supported by PayPal Standard. Detailed information for developers on these limitations can be found in the PayPal developer documentation.

    Custom 36-Month Subscription Length
    Custom 36-Month Subscription Length

    If you want to offer subscriptions for a different length, and you are not offering PayPal for payments, it may be possible to offer a custom length.

    For example, the plugin below includes code that will offer a subscription that lasts for 36 months. You can change the 36 to any number you require and install it as a plugin on your site. However, please be aware, different payment gateways offer different possibilities for length. You will need to test this custom code thoroughly and although it is included here to help make the customization, Woo cannot provide support customizations. This code also requires WooCommerce Subscriptions 1.4.4 or newer.

    View on Github

    Why can a subscription product not be deleted or have its type changed?

    Subscription products can be trashed, but any subscription product that is associated with an order (i.e. has been purchased by a customer) can not be permanently deleted or have its product type changed. This is to prevent causing errors with WooCommerce and other WooCommerce extensions that expect a product to exist and remain a subscription product type when performing some of the operations related to a subscription, like processing renewal payments.

    If you need to change a subscription product’s type or permanently delete a subscription product or subscription variation, you must first permanently cancel and delete all subscriptions which include that product as an item. If the subscription is already in either a ‘Cancelled’ or ‘Expired’ status, you must Trash and then Permanently Delete the subscription.

    This applies to simple subscriptions, variable subscriptions and subscription variations.

    Subscription product type cannot be changed notice
    Subscription variation cannot be removed notice

    Subscription Management

    When a customer signs up for a subscription, when will they be charged?

    By default, the billing schedule for a subscription is based on the day the customer buys the subscription. If a customer buys a monthly subscription on the 15th December, they will pay on the 15th December, then be billed for renewal on the 15th January (then 15th February etc.).

    If you want to align subscription payments, for example, to be charged on the first or last day of the month, regardless of when a customer signed up for a subscription, you can use the renewal synchronisation feature.

    How do I restrict the number of available subscriptions?

    You can use the built-in WooCommerce inventory feature for your subscription product.

    Will a scheduled subscription charge go through even if the order status is “on-hold”?

    Yes, a scheduled subscription charge will still go through even when the original order used to purchase the subscription has a status of on-hold. A store manager needs to put the subscription on-hold to freeze payments on that subscription. More information about the differences between an order and a subscription can be found in this guide about the differences between subscriptions and orders.

    What happens when a subscription is suspended?

    When a store manager or customer suspends a subscription, all payments will stop for the period the subscription is suspended. The user’s role on your site will also be set to the default inactive subscriber role.

    When a subscription is reactivated, the payment schedule will continue as it did before the subscription was suspended. The payment schedule is not changed based on the amount of time the subscription has been suspended.

    For example, if a customer buys a monthly subscription product on the 1st of January, then suspends their subscription on February 12th, they will not pay anything until they reactivate it. If the customer reactivates the subscription on May 22nd, the next payment will be charged on 1st of June, because that is the original billing date the subscription was started.

    WooCommerce Subscriptions allows you as the store manager to set a limit on the number of times a subscriber can suspend or reactivate their subscription, or to prevent suspension completely on the settings page.

    How can I manually trigger a renewal payment (or a renewal order email)?

    To trigger an off-schedule renewal and therefore trigger each step in the renewal process, like sending renewal order email, follow the steps outlined in the guide for testing renewal payments using the WCS_DEBUG flag.

    Why are dates displayed incorrectly?

    You may find when viewing the Manage Subscriptions page that some dates are displayed a few hours or more off the actual date. This usually means a plugin or custom code is changing your site’s timezone.

    WordPress sets your site’s base timezone to UTC/GMT and Subscriptions expects that to be the site’s base timezone for calculating dates. However, on rare occasions, some plugins will change the base timezone.

    To find the offending code, search your site’s files for the string: date_default_timezone_set and disable the plugin using that function.

    How can I notify a subscriber before their next renewal payment?

    There are a variety of solutions that can be used to notify subscribers prior to their next renewal payment:

    1. the AutomateWoo extension: with actions to email or SMS a customer, AutomateWoo’s Subscriptions’ Integration can be used to notify customers on a variety of subscription related events, including a period of time before renewals. Learn more in the AutomateWoo documentation on subscription triggers.
    2. Metorik: as part of Engage, Metorik makes it possible to send many subscription related emails, including pre-renewal emails. For more information, refer to the documentation on Engage.

    How can I stop renewals temporarily?

    If you want to temporarily disable renewals, including recurring payments, from being processed for a certain period of time, for example, while testing upgrades or running other maintenance tasks, use the DISABLE_WP_CRON constant.

    [box type=”note”]This will not work with PayPal or payment gateways which manage the billing schedule. It will work with Stripe, Authorize.net CIM, Braintree and almost all other payment gateways.[/box]

    How can I repair the billing schedules for a subscription?

    [box type=”note”]Note: This is a Developer level doc. If you are unfamiliar with code/templates and resolving potential conflicts, select a WooExpert or Developer for assistance. We are unable to provide support for customizations under our Support Policy.[/box]

    If you have a plugin installed to view the scheduled tasks in WP-Cron, like WP-Crontrol, and notice that an active subscription’s next payment date is not scheduled, you can repair it with the following instructions:

    1. Go to: WooCommerce > Subscriptions (the Subscription Management screen)
    2. Hover over the subscription missing a payment date
    3. Click Suspend
    4. After the page reloads, hover over the subscription again and click Reactivate

    This process will repair the next payment date scheduled for a subscription using the manual renewal process or automatic payments and a payment gateway other than PayPal. If the subscription is using PayPal, you do not need to repair the billing schedule, it will be repaired when PayPal processes the next scheduled payment (in Subscription versions 1.4.4 or newer).

    What is the end_of_prepaid_term hook?

    When a subscription is cancelled, either by the store manager or subscriber, its status will be changed immediately and no payments will be charged in the future. However, the customer has already paid for the subscription’s current term. For sites selling virtual subscriptions, like memberships, it’s important to provide access to the virtual good for the entire prepaid term.

    The 'scheduled_subscription_end_of_prepaid_term' hook accounts for that prepaid term. It is used by Subscriptions to assign the customer with the default cancelled role at the end of the prepaid term (if the customer does not have any other subscriptions). It is also used by other plugins like Groups to allow access to memberships and other virtual products until the end of the term for which the customer has already paid.

    For example, a customer purchases a monthly subscription on the 15th March. On the 25th of March, they then cancel the subscription. The subscription is cancelled immediately, but they have prepaid for one month of access, until the 15th April. Therefore, the 'scheduled_subscription_end_of_prepaid_term' hook will be scheduled to run on the 15th of April. When that day arrives, the customer’s role will be changed to the the default cancelled role and any other plugins can change the customer’s status as required.

    Orders Related to Subscriptions

    Why are orders set to Processing not Completed?

    Once an order has been paid, WooCommerce only sets the status of the order to completed if all the products purchased in the order are both digital and downloadable. If all the products in an order are not digital and downloadable, the order will be marked as processing. This is to help you manage shipping of physical items.

    Subscriptions conforms to the WooCommerce behavior when setting order status. As a result, when an order contains a subscription product that is not both digital and downloadable, the order status will be set to processing. If you want the order status to automatically transition to completed after payment for a subscription, you need to set the subscription product as both digital and downloadable.

    Alternatively, you can use this free WooCommerce plugin to automatically mark all of your WooCommerce orders complete regardless of product type.

    Why are subscriptions automatically cancelled after a parent order is cancelled?

    WooCommerce 2.0 introduced a new Hold stock setting. This setting allows you to set a time limit, after which an unpaid, pending order will be cancelled. When an order used to purchase subscription products is cancelled, the subscription or subscriptions associated with that order are also cancelled. This means the Hold stock setting can lead to unexpected cancellation of subscriptions.

    By default, WooCommerce will set the Hold stock setting value to 60 minutes. This doesn’t provide much time to pay for a renewal, however, so when installing or upgrading Subscriptions version 1.4 or newer, the default value is changed one week (10080 minutes). If you customer does not pay for the parent order within one week, the renewal order will be cancelled.

    If you would like to provide your subscribers with a more or less generous payment period, just increase or decrease the time limit as needed. Or leave the value blank to disable this feature completely.

    Hold Stock Setting
    Hold Stock Setting

    [box type=”info”]Subscriptions are only cancelled when a parent order is cancelled. A subscription will not be cancelled automatically if a renewal order is cancelled.[/box]

    Shipping & Coupons

    How is shipping calculated for physical product subscriptions?

    If you’re selling a subscription to items that need shipping, shipping costs are added to the recurring payment. For example, a $5/month subscription with a $2 shipping fee would be $7/month.

    If your subscription includes a free trial, shipping is free for that first period if no other products are purchased in the same transaction. To charge an up-front shipping fee for a subscription with a free trial, you can include a signup fee for the cost of shipping.

    This system applies to all the shipping methods included with WooCommerce, including Local Delivery, Local Pickup, International Shipping and Flat Rate shipping. It also works for any additional shipping methods created by a WooCommerce extension, as long as the extension uses the appropriate WooCommerce features.

    Subscription Shipping Methods
    Subscription Shipping Methods

    How are discount coupons applied to subscriptions?

    To learn how discount coupons are applied to subscription product purchases, refer to the Subscription Coupons section of the Store Manager Guide.

    How can I offer a Free Shipping coupon for Subscriptions?

    To offer customers free shipping for a non-subscription product, you can create a Cart or Product coupon with free shipping enabled.

    Similarly, to offer a free shipping coupon that will work with a subscription product, you can create a Recurring Discount coupon and enable free shipping on it.

    The reason a recurring coupon should be used is because a free shipping coupon only reveals the Free Shipping method as a shipping option, it doesn’t actually discount the shipping price. Because of this, there is no way to offer free shipping only for the initial order. To do that would require the customer to select the Free Shipping method for the initial order and then a different shipping method for renewal orders, but there is no way for a customer to select two different shipping methods for the one order.

    Cart & Checkout

    How can I sell a product with a subscription?

    1. Go to: WooCommerce > Settings > Subscriptions.
    2. Scroll down to the Miscellaneous Settings section.
    3. Enable the Mixed Checkout setting.

    Mixed checkout is enabled by default on new installations. You will only need to manually enable it if you upgraded to Subscriptions version 1.5, that is, your site was running Subscriptions prior to version 1.5. This feature was disabled by default on existing sites to ensure existing behavior did not change unless store managers wanted it too.

    Why does a customer need to enter payment details when no initial payment is due?

    [box type=”note”]With Subscriptions 2.5 and newer, it is possible for a customer to sign up with no payment details when no initial payment is due.[/box]

    For Subscriptions versions older than 2.5, when automatic payments are enabled, a customer must enter their payment details when signing up for the subscription, even if no initial payment is required. That means, even if the subscription has a free trial or the customer has applied a coupon for 100% of the first payment, they will need to enter their payment details. This is so that future payments can be processed automatically.

    If you do not want to make customers enter their payment details when no initial payment is required, switch off automatic payments.

    Payment Fields with 100% Discount on Initial Payment
    Payment Fields with 100% Discount on Initial Payment

    How can I display a notice when products are removed from the cart?

    When Mixed Checkout is disabled, if a customer adds a subscription product to the cart and the cart already contains a non-subscription product or products, the subscription products will be removed.

    As the customer is redirected immediately to the cart, no notice will be displayed.

    The following code will add a message on checkout to indicate to the customer that a product or products have been removed. To use the code, you can install and activate it as a plugin on your site.

    View on Github

    Using the Storefront theme, the notice will be displayed on checkout as shown in the screenshot below.

    Product Removed Notice
    Product Removed Notice

    How can I redirect customers to the cart instead of checkout page?

    When a customer adds a subscription product to the cart and Mixed Checkout is disabled on your site, the customer will be redirected to the checkout page immediately. This is because when Mixed Checkout is disabled, no other products can be purchased in the same transaction.

    If you would prefer for the customer to be redirected to the cart page, the following code can be installed and activated as a plugin on your site.

    View on Github

    Payment Gateways

    Does Subscriptions support my payment gateway?

    To see a complete overview of the official WooCommerce payment gateways which support Subscriptions, please read over the Subscription Payment Gateways guide.

    If you do not see your payment gateway listed there, it doesn’t necessarily mean it doesn’t support automatic recurring payments (this is just a small handpicked list). You can test automatic renewals with your gateway to see how it performs, and it should still be able to handle manual recurring payments. If you want automatic recurring payments, please follow the advice in the at the end of the payment gateways document.

    Can I change the account used for a payment gateway?

    Yes, if you want to keep the same payment gateway but you have changed account, for example due to change of ownership, then it is possible to still use the same payment gateway on your site but please contact the gateway themselves and ask about transferring/migrating the customer information to your new account, then update any API keys or credentials in your WooCommerce payment gateway settings.

    Why only one subscription per transaction?

    WooCommerce Subscriptions version 2.0 introduced a multiple subscriptions feature which allows your customers to purchase more than one subscription product in the same transaction.

    However, not all payment methods support this feature. In order to offer this feature to your customers, you must either enable manual renewals or use a payment method which supports multiple subscriptions. You can find a list of all payment methods which support this feature in the Subscription Payment Gateways guide.

    How can I improve the accuracy and reliability of scheduled payments with Stripe or Authorize.net?

    [box type=”note”]Note: This is a Developer level doc. If you are unfamiliar with code/templates and resolving potential conflicts, select a WooExpert or Developer for assistance. We are unable to provide support for customizations under our Support Policy.[/box]

    WooCommerce Subscriptions uses Action Scheduler and WordPress’s built-in WP-Cron scheduling system for processing subscription-related tasks like payments. For popular sites, the accuracy of WP-Cron’s scheduling service is not a problem. However, sites with less traffic may find scheduled payments are charged at an unacceptable length of time after it was due.

    To ensure a schedule payment is run within 5 seconds of the time and date it is due, there are three options:

    1. Use the Jetpack plugin and enable downtime monitoring.
    2. Create a free Pingdom or UptimeRobot account and point it to your store’s front page. This will ensure WP-Cron fires regularly (from every 30 seconds using PingMate to every 5 minutes using UptimeRobot). That way, a payment is charged no more than that interval after it is due. This is the simplest solution.
    3. Create a manual cron job by following the instructions on this WP Tuts+ tutorial. Set it to trigger every 10 seconds. This is a more reliable and flexible solution, but also more difficult to implement.

    Using one of these systems for a more reliable W-Cron, is not required for some gateway extensions which uses the payment gateway’s own recurring billing system. It is only required for those extensions, like Stripe and Authorize.net CIM, which rely on Subscription’s scheduling for recurring billing.

    To learn more about the WP-Cron and Action Scheduler systems take a look at our Complete Guide to Scheduled Events with Subscriptions.

    Is it possible to offer multiple payment options or can I only choose one payment processor?

    You can offer more than one payment processor.

    If you have manual renewals enabled, every payment payment gateway that has an extension activated on your site and is enabled under the Payment Gateways tab of the WooCommerce settings page will be offered as payment option.

    If manual renewals is not enabled, all WooCommerce payment gateway extensions which support automatic payments will be offered to the customer.

    How can I have all new subscribers use a new payment gateway while allowing existing subscriptions to continue?

    To force all new customer subscriptions to be created with a new payment gateway, while still having existing subscriber’s recurring payments charged correctly in an old payment gateway, you can simply disable the old payment gateway under the WooCommerce Payment Gateway Settings page.

    Disabling the old payment gateway will prevent it from being offered as an option on checkout for new customers, but as long as the payment gateway extension is still active as a WordPress plugin, it will be able to handle recurring payments.

    For example, to switch from using Stripe to Authorize.net payment gateways, the Stripe gateway would need to be disabled.

    Disabling the Stripe Gateway
    Disabling the Stripe Gateway

    [box type=”info”]Switching existing customers to the new method is more complicated and if you wish to do this, it is recommended you have customers follow the process provided to Change Payment Methods.[/box]

    WooCommerce Payments

    Click here to learn more about using WooCommerce Subscriptions with WooCommerce Payments.

    PayPal

    What happens if a customer cancels a subscription purchased with PayPal?

    WooCommerce Subscriptions can sync the subscription status between PayPal and your store. To enable this feature, you must configure PayPal as explained here.

    If you or your customer suspends or cancels a subscription in your WooCommerce store, it will also notify PayPal that the subscription should be suspended or cancelled. This means both you and your customers can manage subscriptions without ever having to log into PayPal.

    If a customer suspends or cancels a subscription with PayPal directly, your site will also sync the status change as long as it receives a notification via the PayPal IPN. If subscription statuses are not syncing and you have not configured IPN for your store’s website, please follow PayPal’s instructions for setting up IPN. You will need to set the notification URL given to the WooCommerce URL provided here.

    Why does PayPal Standard split the subscription when I add a sign up fee?

    PayPal Standard does not provide a way to charge a sign up fee. As a result, Subscriptions needs to split the initial payment if it includes a sign up fee. It can then apply the initial amount to a separate billing period, which PayPal does support but unfortunately refers to as a Trial Period.

    This may be confusing to your customers if they look at the subscription details in their PayPal account and see a Trial Period charged on a subscription with no free trial. Unfortunately, PayPal Standard does not provide any other method for charging the sign up fee.

    This is just one of PayPal Standard’s limitations. If you can, it is recommend you use a more modern payment gateway, like Stripe.

    Why are subscription payments charged late (or early) with PayPal?

    PayPal batch processes payments, meaning that they do not process payments exactly when they are due. Instead, PayPal will process a payment within 24 hours of when the payment is due.

    For example, if a recurring payment is due at 2pm on 1st July, PayPal may charge that payment anytime between 12:00am and 11:59pm on the 1st of July pacific time. This may become more confusing for a subscription created on the last day of the month, as PayPal may actually end up processing the payment on the 1st day of the following month based on your store’s timezone.

    Why does PayPal immediately send a Subscription Expired/Completed email?

    Unfortunately, PayPal handles subscriptions for 1 billing period (e.g. 1 year) as if they start and finish immediately. Because the payments are not on-going, PayPal thinks it can end the subscription as soon as it begins. This means PayPal will also send you as the store manager and the customer an email to say the subscription has been cancelled as soon as it was created.

    Fortunately, WooCommerce Subscriptions handles the subscription properly – it will expire in your store only after the year has passed. But PayPal will still send you as a store manager and your customers a “Profile Cancelled” email as soon as the subscription has been created.

    The only thing a store manager can do to prevent these emails from PayPal is to set the subscription length to be “all time”. This means PayPal won’t cancel the subscription immediately, it will be up to store manager or customer to cancel the subscription. Fixing PayPal’s behavior is outside of the control of the developers behind WooCommerce Subscriptions and changing the length is the only workaround available.

    Can a customer use a credit card to pay for subscriptions when using the bundled PayPal Standard gateway?

    Out-of-the-box, PayPal Standard requires customers to already have a PayPal account or to create one when signing up for a subscription.

    If you want customers to be able to pay for subscriptions with just a credit card, you can add Enhanced Recurring Payments for PayPal Standard. This feature costs $19.99 / month and allows your customers to sign up for a subscription even if they don’t have a PayPal account.

    If you sign up for Enhanced Recurring Payments, you won’t need to make any changes to your store. Customers will automatically be presented with the option during checkout.

    Note: PayPal only offers Enhanced Recurring Payments to US based companies. This feature is also only available for PayPal Standard, it is not available for PayPal Reference Transactions – PayPal provide no way to offer guest checkout with subscriptions that use PayPal Reference Transactions.

    Can I sell a subscription with a sign-up fee and $0 recurring payment through PayPal?

    PayPal does not support subscriptions with a $0 recurring total i.e. subscriptions where the total cost is charged up-front, but an item is still shipped on a regular basis. This is because PayPal Standard requires a subscription price (the a3 parameter) to be set and to be greater than 0.

    WooCommerce Subscriptions will allow you to do this however as it will pass the initial purchase to PayPal as a one-off purchase and then process the renewals on its own. This means however that subscriptions with a $0 total won’t show up in your PayPal account like other subscriptions.

    Do PayPal eChecks work with Subscriptions?

    WooCommerce Subscriptions is able to process automatic subscriptions payments with PayPal using the eCheck payment method.

    There are slight differences to how the subscription will be handled with an Instant Payment method, like Credit Card or bank transfer. The way it will work is:

    1. After the customer completes the checkout with PayPal, the subscription & original order will remain on-hold until the payment clears after 2-3 days (you will need to make sure the Hold Stock setting is disabled or set to a length of time long enough to allow for this delayed processing) once the eCheck payment is completed, the subscription will be activated and order marked as processing or completed.
    2. When the subscription renewal payment is due, the subscription will remain active until the eCheck payment clears, then and only then will the renewal order be created (so 2-3 days after the payment was due) for that subscription. If the eCheck payment failed, the failed payment will only be registered and subscription put on-hold 2-3 days after payment was due.

    Subscriber Account

    Why does a customer need to create an account at checkout?

    WooCommerce includes options to allow guest checkout, meaning customers do not need an account to make a purchase; however, Subscriptions ignores the value of this setting and requires all customers to create an account with your site whenever purchasing a subscription.

    Subscriptions persist beyond a transaction and therefore must be associated with a user account in order to keep track of renewals and other features.

    Can a subscriber cancel their own subscription?

    Yes, a subscriber and cancel and perform other actions on their subscriptions via the My Account page.

    What emails do Subscriptions send to customers?

    A list of the emails WooCommerce Subscriptions sends, and information on how to customize those emails, is included in the Store Manager Guide.

    How can I customize the My Subscriptions section of the My Account page?

    To help your customers view and manage their subscriptions, WooCommerce Subscriptions adds a My Subscriptions section to your store’s My Account page.

    If you want to customize the information displayed in this section, the template can be changed the same way core WooCommerce templates can be overridden.

    The template is called my-subscriptions.php and is located under the /myaccount/ folder. To override it in your theme, copy the /templates/myaccount/my-subscriptions.php file found in the WooCommerce Subscriptions plugin folder to your theme using the location: /woocommerce/myaccount/my-subscriptions.php.

    How can I add a confirmation message on the My Account page?

    By default when a customer clicks the suspend, cancel or renew button on their My Account page, the action is performed immediately.

    [box type=”note”]Adding a confirmation to the cancel button is now available in a free mini-plugin.[/box]

    If you wish to require the customer to confirm they want to perform the selected action, you can use a JavaScript confirmation dialogue by following these instructions:

    1. Copy the /myaccount/subscription-details.php template from the plugin folder into your theme’s folder at the location /woocommerce/myaccount/subscription-details.php. (Learn more about overriding WooCommerce templates).
    2. Find the line used to display the link button for each action. Its HTML is shown below and it is contained within a table with the class subscription_details.
    3. Replace the link text with the new link text included below.

    The original link will look like this:

    <a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ) ?>"><?php echo esc_html( $action['name'] ); ?></a>
    

    To display a confirmation dialogue, change the link markup to this:

    <a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ) ?>" onclick="return confirm('<?php printf( __( 'Are you sure you want to %s this subscription?', 'woocommerce-subscriptions' ), esc_html( $action['name'] ) ); ?>');"><?php echo esc_html( $action['name'] ); ?></a>
    
    Cancel Subscription Confirmation Dialogue
    Cancel Subscription Confirmation Dialogue

    Store Manager or Administrator

    How can I disable core subscription features, like changing payment methods?

    [box type=”note”]This FAQ item requires a basic understanding of PHP and WordPress development.[/box]

    WooCommerce Subscriptions uses a centralized function to check if a given action can be performed on a subscription. For example, can the subscription’s payment method be changed or can its status be changed, e.g. cancelled. This allows WooCommerce developers to disable any action that can be performed on a subscription.

    The following plugin could be used to switch off any of Subscription’s core features. Uncomment the line with the hook relating to the action you wish to disallow. For example, to no longer allow payment method changes in your store, you should uncomment the line adding a filter to the 'woocommerce_can_subscription_be_updated_to_new-payment-method' hook.

    View on Github

    How can I remove an action button from the View Subscriptions page?

    If you want to prevent a customer initiating a given action on a subscription, you can remove the button from the My Account > View Subscriptions page.

    The following plugin demonstrates how to remove a button using the 'wcs_view_subscription_actions' hook. By default, only the Change Payment Method button is removed, but you can uncomment additional actions to remove other buttons.

    View on Github

    If you want to remove a feature entirely from WooCommerce Subscriptions, you should follow the guide on disabling core subscription features as removing the button does not disable the feature completely.

    [box type=”alert”]Be aware that removing cancellation buttons can have legal implications. For example, California has an Automatic Renewal Law which requires stores to provide an easy-to-use mechanism for cancelling. Before removing cancellation button, we recommend you discuss potential implications with a legal professional.[/box]

    How can I stop Subscriptions changing a user’s role?

    By default, WooCommerce Subscriptions will change a user’s role when the status of their subscription or subscriptions change, as explained in the Role Settings document.

    However, it is also possible to stop this default behaviour with a small amount of custom code. Below is a simple plugin to show how this can be done.

    View on Github

    Compatibility

    Can I sell Memberships for content with access control?

    Yes! You can use Subscriptions in combination with WooCommerce Memberships to help manage content to be accessed only when a customer’s subscription is active, plus other great features to link member access to subscription products. Learn more at WooCommerce Memberships.

    The Sell with WP blog also has an article on how to create a membership site with WooCommerce, Memberships and Subscriptions. It covers the relevant features of the plugins and provides advice about when this combination of plugins is suitable.

    Does WooCommerce Subscriptions work with WordPress Multisite?

    Yes, you can use WooCommerce Subscriptions on a WordPress multisite installation. Each subscription will be associated only with the site on which it is purchased.

    Each user account will also only be created for the site where the customer purchased the subscription and created their account. If you want to share a user account with other sites in your network, try the handy and free Multisite User Management plugin.

    Why does translation not work?

    If you are using your own translation (i.e. a custom .mo file), you can include the translation files in either:

    • a languages folder within the WooCommerce Subscriptions plugin’s folder, e.g. /wp-content/plugins/woocommerce-subscriptions/languages/woocommerce-subscriptions-en_AU.mo
    • within the default WordPress languages folder e.g. /wp-content/languages/plugins/woocommerce-subscriptions-en_AU.mo. Note: the default folder can be changed with the WP_LANG_DIR constant.

    The second of these options helps make your translation upgrade safe by preventing your language files from being deleted each time you upgrade the plugin.

    If you are not using your own languages files, WPML can be used to manage translations instead.

    wpml-ready-badge

    A large amount of time has been spent to make sure Subscriptions will work with WPML, and it is recommended you use WPML for translating Subscriptions. There are occasionally issues, as seen from forum threads like this one, this one and this one, but all text in WooCommerce Subscriptions is passed through appropriate translation functions. You may just need to rescan the plugin files until all strings are available in WPML. Subscriptions has also been verified as compatible by the WPML team.

    Why are translations not reflecting on the live site?

    First, make sure that you’ve pressed Sync to sync the translations if you are using Loco Translate. You may also need to clear your browser cache and the Subscriptions cache in WooCommerce > Status > Tools.

    Why can’t I find the string that I want to translate?

    Some strings use placeholder strings such as %1$s every %2$s. If you are searching for a phrase or sentence that can change depending on the way you set up your subscription product, that’s a good clue that there will be placeholder strings. If you can’t find the exact phrase that you want to translate, search for keywords/phrases instead of the exact phrase.

    For Loco Translate, you may also need to press Sync to update the strings from the template after updating WooCommerce Subscriptions.

    How can I charge recurring payments for donations?

    There are two great extensions which work with Subscriptions to allow your customers to name their own price. These are:

    1. Name Your Price
    2. Gravity Forms Add Ons

    Both of these extensions can be used to add a text field on a subscription which allows the customer to enter their preferred donation amount.

    Why are renewals not being processed when W3 Total Cache is installed?

    WooCommerce Subscriptions uses WordPress’s built-in WP-Cron scheduling system for scheduling recurring payments and other renewal related tasks.

    Unfortunately, the W3 Total Cache plugin on occasion breaks WP-Cron (forum reports here, here and here). If you have the W3 Total Cache plugin active and are not seeing subscription renewals processed, please deactivate it. It is an excellent caching solution, but until the WP-Cron issues are properly diagnosed and fixed, it is not always compatible with Subscriptions.

    If you you need to use a caching plugin, try a well supported plugin like WP Rocket. You may also wish to consider switching to a host that handles caching for you, like Pagely or Kinsta.

    Site Management

    How does Subscriptions handle staging sites?

    To learn how WooCommerce Subscriptions handles staging sites, please read the Guide to Subscription staging sites.

    Why do I get a 403 error on Internet Explorer when adding a subscription to the cart?

    Under a rare configuration of mod_security in Apache, your web server will throw a 403 forbidden error when a customer adds a subscription to a cart. If you encounter this issue, you will need to change the MULTIPART_STRICT_ERROR setting in your mod_security.conf to either use warnings instead of MULTIPART_STRICT_ERROR or only to make sure that DB %{MULTIPART_DATA_BEFORE} errors do not result in a 403 error.

    Please contact your web host to have this setting changed.

    Other Questions?

    Please contact open a support ticket.

    ← WooCommerce Subscriptions Documentation


  • With our target release date of May 5th rapidly approaching, we are happy to announce that RC.1 is now available!

    Stock Reservation Revert

    As they are, database delta updates can result in silent failures in a merchant’s shop. If the MySQL user does not have table manipulation privileges, anything that relies on changes made to the schema will break. In our current case, when the wc_reserved_stock table is missing, checkout can become non-functional. In the interest of helping protect our merchants from these kinds of failures, we’ve reverted the change slated for 4.1 in order to make it more resilient before shipping it.

    Testing

    To test it, use our beta tester plugin (which, despite its name, can also be used to test release candidates) or download the release from wordpress.org. If you’re itching to learn what’s inside, check out the beta announcement post — it highlights all the new features and improvements.


  • We’ve got quite the treat for you today! In addition to everything included in our previous beta release, the included version of the WooCommerce Admin Plugin has been updated. We still plan to unveil the final version of WooCommerce 4.1 on May 5th, so take a look at what’s new!

    Marketing Hub

    WooCommerce 4.1 adds a new Marketing tab to emphasize its importance in merchants’ growth. This is the foundation for the development of a robust marketing hub to enable central management, control, and guidance for effective marketing.

    Read more in the Marketing Hub Coming Soon Post!

    WooCommerce Payments

    This release also offers WooCommerce Payments as an option in the new store Task List to US stores with Jetpack connected. For all US stores, it also adds an Inbox notification to try out the WooCommerce Payments beta.

    Read more about this brand new way to accept payments in our documentation.

    Testing

    To test it, use our beta tester plugin (which, despite its name, can also be used to test release candidates) or download the release from wordpress.org.

    If you find any bugs along the way, please open an issue in our GitHub repository. Thank you for testing and helping us make WooCommerce better!


  • Hello everyone,

    With WooCommerce 4.0 now comfortably behind us, it’s time to begin our next release cycle.

    As of today, WooCommerce 4.1 is available for beta testing. You can either download it directly from WordPress.org or install our WooCommerce Beta Tester Plugin.

    What’s new in 4.1?

    The primary focus of this minor release is stability and performance. If you’d like to dig into the details, take a moment to review the changelog for a more granular breakdown of everything included. In addition, keep an eye out for another blog post soon containing developers notes for this release.

    Here’s a broad overview of what’s new.

    New Setup Wizard

    With this release we’ve finished our roll-out of the new setup wizard. All new shops will be directed through this new setup flow, so if you haven’t checked it out yet, you should!

    Database Update

    This release requires a database update, as we’ve added a new table to the WooCommerce database structure. This table is critical to processing orders and checkout and is installed automatically after updating.

    NOTE: This change has been removed from the 4.1 release, in the interest of adding resiliency around these kinds of changes.

    Nudge for WordPress Version

    Note that there is no change in the minimum requirements for this version.

    However, sites not currently running on WordPress 5.2 will see a notification to upgrade to the latest and greatest. Why?

    In WooCommerce 4.2, the next release, we are scheduled to update the minimum version of WordPress to 5.2 (now 5.0) to keep up with changes in the WordPress ecosystem.

    New Hooks and Functions

    We’ve added several new hooks and functions in this release:

    FunctionDescription
    get_woocommerce_currency_symbols()Returns an array of all registered currency symbols
    ActionTriggered
    woocommerce_emogrifierBefore an email is run through emogrifier
    FilterDescription
    woocommerce_can_restock_refunded_itemsPrevents stock from being increased by refunds
    woocommerce_order_get_tax_locationEnables filtering of the location that an order should be taxed for
    woocommerce_product_upsells_products_headingAllows for filtering of the heading text for product upsells

    Template File Changes

    The following template file has been updated:

    FileChanges
    emails/admin-cancelled-order.phpWording of this notice

    Release Schedule

    Here are our targets for the 4.1 release cycle:

    VersionRelease
    BetaApril 7th
    Release CandidateApril 21st
    4.1 ReleaseMay 5th

    Testing

    If you’d like to dive in and help test this new release, our handy WooCommerce Beta Tester plugin allows you to switch between beta versions and release candidates.

    A set of testing instructions has been published on our Wiki page in GitHub. We’ve also posted a helpful writeup on beta testing to help get you started.

    If you discover any bugs during the testing process, please let us know by logging a report in GitHub.

    Thanks to all of our testers and contributors!


  • WooCommerce 4.0.1 is now available! This is a minor release and includes several bug fixes discovered after releasing 4.0 to our customers. It addresses problems related to Action Scheduler migration, multisite installations, coupon usage, variation saving, and shipping estimates.

    Here’s the full change-log for this release:

    WooCommerce
    * Enhancement – Update Action Scheduler to 3.1.4. #25966
    * Enhancement – Bump Woocommerce Admin dependency to version 1.0.2. #25961
    * Enhancement – Update dependency woocommerce/woocommerce-admin to v1.0.3 #25975
    * Fix – Add usage_count meta before using it in a query. #25882
    * Fix – Corrected argument type validation in plugin installer API. #25858
    * Fix – Use standard admin_url function instead of absolute path. #25884
    * Fix – Reverted the performance optimization made to variation saving. #25950
    * Fix – Send dummy params to evaluate_cost method to detect validation errors. #25946
    * Fix – Made the package shipping check more permissive. #25916
    * Fix – Fix admin notes table does not exist errors when upgrading to 4.0.x. #25891
    WooCommerce Admin
    * Enhancement – Onboarding: business step: add Google Ads extension install.
    * Tweak – create database tables on an earlier hook to avoid conflicts with core WooCommerce.
    * Fix – Add Report Extension Example: Add default props to ReportFilters.
    * Fix – Product report sorting by SKU when some products don’t have SKUs.
    * Fix – type warning on install timestamp in PHP 7.4.
    * Fix – PHP error when WooCommerce core is Network Active on Multisites.
    * Fix – missing database table errors on WooCommerce upgrade.
    * Fix – undefined const WC_ADMIN_VERSION_NUMBER when WP < 5.3
    * Fix – Made the admin note loading more resilient to prevent failures when loading notes with invalid content_data. #3926
    * Fix – Removed replace_actionscheduler_store_class function. #3936
    * Fix – Rename Google Shopping image asset. #3931
    * Fix – Fix calling protected has_satisfied_dependencies on outdated plugin. #3938
    * Dev – Add Changelog script.
    * Dev – Fix failing tests after WC core merge.
    * Dev – Bump WooCommerce tested up to tag.
    * Dev – Update prestart script so readme.txt stable tag is updated.
    Action Scheduler
    * Fix – Re-create tables if needed on Scheduled Actions screen load. #492
    * Fix – Add null action check on Scheduled Actions screen list rows. #493
    * Fix – Fix context on ignored action log message. #481
    * Fix – Restore scheduled action row and bulk action processing on WooCommerce Status screen. #487
    * Fix – Include logs table re-create missed in #492. #495
    * Fix – Ensure valid table name in save action. #498

    We highly recommend updating WooCommerce to this version as soon as possible.

    Download the latest release of WooCommerce here or visit Dashboard → Updates to update the plugin from your WordPress admin screen.
    As usual, if you spot any other issues in WooCommerce core, please log them in detail on GitHub. Found a security issue? Please submit a report via HackerOne.


  • Today we are excited to announce the availability of WooCommerce 4.0. The latest release of WooCommerce has been in development since January 2020, but a lot of improvements has been in the works since 2018. WooCommerce core has had 743 commits from 21 contributors, but we should also mention a huge amount of effort from the WC Admin team and the code that now becomes a part of the core with a history of 3500 commits from 45 contributors.

    4.0 is a “major” release. This means that the version is not fully backwards compatible with sites running various versions of WooCommerce 3.x. Therefore, we recommend testing the upgrade on a staging site copy before upgrading your live store and creating a backup of your code and database. Please see this guide for more details.

    (more…)