How to prepare your WooCommerce store for any release

Written by Nicole Kohler on May 25, 2016 Blog, News, Product News.

With the release of WooCommerce 2.6 on the horizon, we imagine you’re all excited to explore the newest features available for running your online store. And a bit apprehensive, perhaps, to go through the update process once more.

The beauty of the open source world of WordPress development is that it allows virtually anyone to create virtually anything for this platform we call home. The downside is that it’s nearly impossible to predict what will happen when you put any given combination of those thousands upon thousands of creations in different environments under different circumstances.

We pride ourselves on thoroughly testing WooCommerce and its extensions, but the unfortunate reality is this: conflicts still happen. That’s why we recommend being prepared in advance for releases and major updates, so in the event of an issue, you can roll right back.

“But how do you get prepared?” We’re so happy you asked. Here’s how to efficiently set up backups and testing for your WooCommerce store so you’re ready for anything.

Set up and automate backups for your store

The very first thing you’ll want to do to prepare your store for future releases is to set up backups so your store’s data is both secure and easily restored if necessary.

Backups give you clean, fully functional versions of your store to fall back on in the event of a major issue. If you can’t simply disable a conflicting extension or roll back to a previous version, backups will allow you to restore your store to a working condition so you can start over.

We recommend using Jetpack for this process. As part of a Personal, Premium, or Professional plan, Jetpack will give you automated backups of your WooCommerce store on a daily basis.

Jetpack lets you “set it and forget it” — that is, set up fully automated backups once and never touch them again unless you need to restore one. And if you do need to restore a backup, you can return to a previous version in a single click.

Create a separate testing environment

We make some recommendations about creating a space for testing in this doc about properly updating your WooCommerce site, but all those terms and suggestions can get confusing for new store owners who just want to know what to do, why, and how to do it.

To make things a little clearer for you: we recommend duplicating your store so you have a second nearly-identical version to test new releases on without potentially negatively affecting the real thing. This duplicate version is usually called something like a “development site” or “testing environment” (though you can call it whatever you want; I personally call mine “the place where I try to break things for fun”).

Many store owners create their testing environment on a subdomain of the site their store is on. So for example, if your store’s URL was reallyawesomebooks.com, you might have a test site at testing.reallyawesomebooks.com. Some folks choose to have their test environments offsite or stored locally for security purposes, but it’s completely up to you!

Having a separate testing environment has a lot of perks; in this case, it allows you to try out major releases without any risk to your store or the experience of your customers.
Having a separate testing environment has a lot of perks; in this case, it allows you to try out major releases without any risk to your store or the experience of your customers.

Getting your store’s content duplicated to this new spot, regardless of where it is, is usually the trickiest piece of the puzzle. If you have FTP and database access, you can copy everything over — but keep in mind that you’ll then need to do this every time you want to actually test something.

A great way to simplify this process and make the most of the backups you might already be creating with Jetpack is to restore them to your test site. If you have frequent backups (say, hourly or daily), this allows you to bring your testing environment up to date with just a few clicks and no manual copying.

Once the option has been set up, VaultPress will allow you to restore your backups to an alternate domain, giving you the flexibility to use a separate site for testing purposes with as close to live data as possible.
Once the option has been set up, Jetpack will allow you to restore your backups to an alternate domain, giving you the flexibility to use a separate site for testing purposes with as close to live data as possible.

You can follow the guide here to learn how to set up Jetpack to restore your data to an alternate domain, thus allowing you to use your backups as a source of fresh, accurate data for your testing environment. No more manual copying for you!

Have a testing plan for each release or major update

Once you get past these first two stages, you should have automated backups running and a staging environment ready for you to test on. Now you’re almost ready.

The only final step to take in between preparing for an update and actually testing an update is making a plan for it. It’s a good idea to make a testing plan so that even on your testing environment, with no chance of real-time data or customers being affected by your initial activities, you know exactly how and when you’ll handle each change.

What your plan looks like is up to you, and should be based on your own bandwidth, needs, and the frequency of updates you’ve observed in the past (you might have more testing to do if you have many extensions installed vs. just a few). But we recommend formulating a plan in advance that clearly states:

  • When you’ll prepare your test site and try out each release — will you restore backups to your staging site each week and test major releases once each month? Or will you prioritize preparing for major updates ASAP?
  • Where you’ll test, whether it’s only your test site or on a secondary site of some kind
  • How long the testing period will last
  • Who will be involved — will just you try to look for flaws, or will you have other team members or even your family try to look for issues?
  • What, specifically, needs to be tested

Once you go through this process a few times, it will probably feel a bit less awkward and a bit more natural, including the process of spotting potential bugs, figuring out which plugins or extensions aren’t playing well together, and working with your development site.

One “pro” tip for those of you who have never tested compatibility between plugins, extensions, and themes before: if you run into something weird and aren’t sure what’s causing it, bulk deactivate all of your plugins/extensions and re-activate them one by one until the error re-appears.

Additionally, our support ninjas nearly always recommend switching to Storefront to troubleshoot potential WooCommerce conflicts with third-party themes, so it’s good to have a copy of that on hand if the latest point release suddenly looks funny to you. (Storefront is free, so no need to fork over any hard-earned cash to get a copy for your test site!)

Why upgrading without testing won’t always work out

When a major release of WooCommerce is made available, or one of your other plugins or extensions is upgraded, it can be tough to fight that urge to dive right in and see what’s new.

On a personal blog or WordPress-powered website, this approach is usually fine. But as far as your online store is concerned, the best approach is to use caution and always test major updates before activating them. You have much more at stake with your store, and more possibilities for conflicts, both factors which make preparation far more critical.

If you don’t heed our warnings and advice, it’s always possible that nothing bad will happen. Truthfully, for a majority of store owners, the upgrade experience is mostly hassle-free, even without testing. And as mentioned, we dedicate a lot of time and resources to testing the ongoing compatibility of our products.

But again, due to the open source nature of WordPress plugins and themes and third-party WooCommerce extensions, it’s always best to create some backups and test out those updates just in case you find an incompatibility that results in an error or even (yikes) breaks your store.

Sure, you could just wing it…

We forgot to make a backup! *screams*
Our store crashed and we forgot to make a backup! *screams*

… but seeing how little effort it takes to get automated updates set up and a staging site prepared, we think it’s worth spending the time (and a little money) to do things right, just in case.

And of course, no matter what your situation is, you can always call on our reliable support ninjas if you run into trouble with any release or upgrade.

Experience smooth sailing with backups and testing for your WooCommerce store

As we mentioned, we pride ourselves on testing WooCommerce and its extensions before any major releases or updates. But the beauty of open source also lends itself to some unpredictability, so even our extensive testing means we can’t catch every bug or conflict possible.

By setting up automated backups and preparing a staging server or test version of your store, you’ll be prepared for major releases or extension updates, no matter when they arrive or how often they roll out.

Have any questions about how to prep your WooCommerce store for the next release? Let us know and we’ll be sure to lend you a hand in the comments below.

cta-banner-10-product-page-v2_2x

21 Responses

  1. Jeff
    May 31, 2016 at 7:25 pm #

    Would it not be necessary, when installing a testing site on a, say, a subdomain, to repurchase all of the WC plugins and extensions, since they can only be run on a single site?

    • Nicole Kohler
      May 31, 2016 at 10:23 pm #

      Hey Jeff, you can:

      1. Redownload any product you’ve purchased from your Dashboard, and
      2. For paid extensions that you want to test, disable and re-enable the subscription key between your live and testing site so that you can actively update it everywhere (that is, have 100% current versions & functional between both sites)

      You can indeed run a copy of, say, WooCommerce Bookings on two sites at once. But we can only provide support to the site that has the active subscription key, if that makes any sense. 🙂

      Would it be helpful if we put this info in the post?

      • Jeff
        May 31, 2016 at 11:27 pm #

        Very useful, Nicole! Thanks for your quick response.

        I’m new to WC so still figuring things out. I’ll make sure I do that.

        Re: helpful in the original post – well, most people may know it already, but for newcomers like me, it is very helpful!
        Thanks again,
        Jeff

        • Nicole Kohler
          June 1, 2016 at 2:48 am #

          Hey Jeff – glad we could help! 🙂 We do have a lot of newcomers reading, so I think it’d be useful to have that info in the post. Thanks for asking the question, it helps us get better!

      • Grégoire Noyelle
        June 2, 2016 at 11:24 am #

        Hi Nicole,

        Thanks for your post.

        I do think it should be easier for all of us to testing with paid extension on staging sites without all these manipulations.
        And as you know, with e-commerce site, staging is very very important.

        • Nicole Kohler
          June 5, 2016 at 9:56 am #

          A valid point Grégoire. 🙂

          We’ve been considering how to make this process a bit easier for a while, perhaps we will have a solution for you soon. In the near future, we’re at least hoping to make some improvements to the WooCommerce Helper that will make the process of connecting and disconnecting your subscription keys much more seamless/fast.

          Keep a close watch for those, and many thanks for your feedback, we do appreciate it.

  2. Rory
    May 31, 2016 at 7:55 pm #

    With updates constantly breaking plugins (that I spent 100s on, just to get a workflow for our business)… And a lack of any backwards compatibility features… I may have take the leap and go to a platform that is all inclusive, such as shopify, big commerce etc. There are so many options these days that I’m over the maintenance and costs associated with this platform.

    • peter
      May 31, 2016 at 9:12 pm #

      Good luck, go go go

    • Nicole Kohler
      May 31, 2016 at 10:27 pm #

      Hey Rory, we’re bummed to hear this. There are certainly a ton of options out there and plenty of things to explore and try.

      If there’s anything we can do to help you out, or any specific updates/extensions that just aren’t working for you, please let us know — we’re always happy to lend a hand via support, answer questions, troubleshoot, etc. And of course, if you already have an open ticket that you’d like to direct us to, just give us the number and we’ll have a look.

    • Anh Tran
      June 8, 2016 at 7:53 am #

      I also met a problem with compatibility with one of my theme for a client recently. I hope WooCommerce team would put backward compatibility on a higher priority.

      • Nicole Kohler
        June 9, 2016 at 8:59 pm #

        Hey Anh, was this something we solved for you via a support ticket or are you still having trouble?

        Could you be more specific about what you ran into and how we could improve compatibility for you? We officially support two major releases back (so as of right now, on WooCommerce 2.5, we support 2.5, 2.4, and 2.3) — was this the source of a problem for you?

  3. Hakukonekeisari
    June 1, 2016 at 6:11 am #

    That is awesome. I’m really excited about update and we need to test it well before launching. Thanks for this guide.

  4. David
    June 9, 2016 at 11:10 pm #

    I manage printrbot.com and HIGHLY recommend using WP Engine! They have an awesome service that provides a mirror staging site and the ability to backup/restore using a process similar to Mac’s Time Machine. Updating the staging site to find potential issues has proven to be invaluable! Before using WP Engine, I had a typical prod and test server on Rackspace. However, this was both a pain to manage and the test server was never truly a mirror. It was also really hard to backup/restore as the process could take several hours. And oh yeah… it cost a fortune! So if you are still crossing your fingers when you update your production site without testing first, you should definitely give WP Engine a look. Trust me, it only takes one bad update to seriously ruin your day 😉

  5. Kyle
    June 14, 2016 at 8:42 am #

    Hey BE CAREFUL Guys. Please make sure a file+database backup!

    The backward compatibility is very bad for the 2.6 RC I tested on 14 June 2016. Its a huge step from 2.5x.

    eg.
    1. Shippings. I guess many shops use the filter woocommerce_package_rates to do simple things like:
    If Geo=CN, unset rates local_pickup (Chinese buyer can not do local pickup)
    If isset free_shipping, unset all others (If the free shipping is available, hide all others)

    Well, we have more than 1000 lines of code to beautifully control the shipping logic. It doesn’t work anymore for wc2.6 and the rewrite is gonna be a big headache.

    (And I really don’t understand the new shipping = price * [qty]. Same shipping cost for a 50g iphone case and a 200kg home appliance? Isn’t price * [weight] better?)

    2, The payment gateway I wrote for Unionpay stops working. Got a blank page in admin and not knowing where went wrong yet.

    3, The WC2.6 will update the database meaning you can not use the rename woocommerce-old trick to quickly roll back.

    4, Many other small things.

    =========================
    Well, i am one of the guys who always use child theme and recommended hooks, never touch the core php to keep a “updates safe” environment, even it means that sometimes a tiny modification could cost hours more compare to directly modify the original php.

    And the WC2.6 breaks my heart 🙁

  6. Cat Russell
    June 15, 2016 at 10:45 am #

    Well all of my sites have auto updated to 2.6 and most of them are now broken. Thanks guys its going to be a long week 🙁

  7. Frank McClung
    June 15, 2016 at 3:19 pm #

    Clients often ask me about switching to Shopify so they don’t have to pay for the headaches that come with the WC/WP/plugin upgrades. I tell them don’t do it. Shopify has its own problems and limitations. People forget that WC is a relatively new product. It’s going to have some bumps, but in the long run WC will still be around thanks to WordPress and Woo. Having said that, the upgrade from 2.2.8 to 2.6 was a pain the the rump for a recent client site. Need to do a better job with backwards compatibility.

    • Nicole Kohler
      June 15, 2016 at 3:51 pm #

      Hey Frank, thanks for your comments 🙂 What specifically could we improve upon as far as backwards compatibility goes? Ex. did specific extensions break, did you find third party themes weren’t up to date, etc? If you’ve got a few minutes and don’t mind giving us details, we can strive to make that less of a pain in the rear for you and your clients.

      Thanks so much for your feedback and we’re glad to hear we’ve got you around for the long term despite the occasional headache.

  8. Fred
    June 17, 2016 at 8:14 pm #

    I’ve been using WooCommerce for more than three years on my site and I work as a contractor for an IT company that manages a number of sites using Woo. On 16 June 2016 I installed version 2.6 and later installed 2.6.1 in a testing environment for one of our sites.

    While I haven’t had time to test everything, I have already learned that the new shipping core is horrible.

    We keep things pretty simple using a third party UPS plugin that the developer claims has been updated to accommodate 2.6. Apparently it doesn’t because after setting up the zone the UPS option isn’t available among the methods. The previous version of the UPS plugin, along with the core Free Shipping options worked well in earlier versions of Woo.

    Frankly, Woo has taken a fairly straightforward process and convoluted it to a point where it’s too troublesome to set up.

    The old saying “if it ain’t broke, don’t fix it” should have applied. Making things more difficult and time consuming isn’t progress, it’s wasting time.

    My friendly advice is that you gut the shipping core in 2.6 and revert back to the earlier versions.

    Thank you.

    • Nicole Kohler
      June 18, 2016 at 1:38 am #

      Hi Fred,

      Could I ask if you’ve already contacted support about the issues you are having?

      Would you mind sharing the name of the third party plugin you’re using to manage your UPS rates? (either here/with support?) We can have a look and see if they have indeed updated to support 2.6 or if there’s a conflict happening.

      Though this comment is a bit off topic with this post, I’ll mention briefly that the intent of the changes to shipping zones in 2.6+ was to save time and hassle, not create more issues. We’re certainly happy to dig in and find out what’s causing problems in your particular instance if you don’t mind opening a ticket with us — with any luck we can find it’s something simple making the process seem much harder than it actually is.

      Thanks for taking the time to reach out to us.

      • Kyle
        June 19, 2016 at 9:09 pm #

        Hey Nicole I certainly feel the pain from Fred.

        I was wishing that wc2.6 put the new shipping core as the 2nd layer of shipping. So the old wc shops can choose to use old core and disable the new 2nd layer core. The new wc shops will use the new core by default. (much more compatibility)

        The thing is, the new shipping core is more “advanced”. But sadly for a real shop thats doing business seriously (not the ones put wc on their blog as a hobby, or the ones who only sell item to like US meets exact WC’s design), It can never be “advanced” enough. For most of the “serious shops”, lots of things need to be done beyond the only “shipping zone” controls, and the “shipping zone” is making the case more complicated (comparing to the old simple shipping methods, which can be simply turn on/off using a if..then.. code)

        Well WC2.6 can be a game breaker It worries me that if I spend 20 hours to fix all the compatibility, what if you throw WC2.7 in few month and break the old codes and plugins again? Should we just stay away from all updates?

      • Fred
        June 20, 2016 at 4:28 pm #

        Thank you for your reply. The UPS plugin I mentioned can be found here – http://www.wooforce.com/product/woocommerce-ups-shipping-plugin-with-print-label/ – you’ll see the tabs under the image. Note the Changelog.

        We use this plugin on three sites, all of which are currently set up with Woo 2.5.5. We haven’t had any issues with the plugin in those environments.

        All of the sites are set up with free shipping for orders of $50 or more. Less than that the UPS plugin calculates the shipping cost.

        To reiterate, earlier versions of Woo were generally simple to set up and the UPS plugin works without issue. We spend millions with UPS every year, so any problems associated with our ability to ship products is a major issue.

        Thank you.