Congratulations to our friends at WooCommerce this week! In case you didn’t know, WooCommerce is just about 4 years old, with the first release on September 27, 2011. Since they wrote about WooCommerce turning 1 on September 24, we decided we could post this a bit early as well 🙂
First, we couldn’t be happier to be a part of the WooCommerce ecosystem, and it’s hard to believe four years have gone by. Our founders (Max and Justin) have been involved with WooCommerce since it was a few months old, so they’ve seen WooCommerce grow as both shop managers and developers.
Justin found WooCommerce while launching a store to sell downloadable software and consulting services (when it was on version 1.2 or 1.3) — he’d worked with Magento and other platforms, but wanted a leaner eCommerce solution for his own site:
Like many of us, my first experience with WooCommerce came with building an online shop, in my case to sell downloadable software and provide consulting services. To me, WooCommerce immediately stuck out of the crowded field of eCommerce solutions for its beauty, simplicity, and functionality.
Fast forward four years and WooCommerce has become even more feature rich, without sacrificing any of the beauty or ease of use that first drew me in. It’s no wonder that WooCommerce is now the single most popular eCommerce platform, and I can’t wait to see what the next four years hold now that WooCommerce has joined the Automattic team.
Max found WooCommerce a couple of months later (on version 1.4) while launching his own eCommerce site. In his case, he needed to sell physical goods, as the pharmaceutical company he worked for was testing direct-to-consumer sales and needed to implement an eCommerce solution.
I first found WooCommerce while investigating a bunch of solutions, like Shopify, Spree Commerce, WP eCommerce, and others. I’d used WooCommerce’s themes since 2009, and knew they were a company that I could trust to be around to answer my questions and they’d been successful for years when I looked into using WooCommerce in 2012.
I was confident that not only would they be around for the long term, but that I could get the support I needed (as I had with their themes), and the extension marketplace got me excited to implement a bunch of stuff on the site for a pretty low price in comparison to what it would cost on other platforms.
Let’s take a look through the major versions of WooCommerce throughout the past four years (careful, some of this may hurt your eyes). I’ve done so with the help of the WooCommerce GitHub version tags, the WordPress release archive, and the list of release dates so we can take a look at snapshots of WooCommerce through its history.
First, let’s just reminisce over this WordPress 3.2 installation screen, which is where I began this journey (I had to laugh a bit at the default username:
Let’s do this 🙂
September 27, 2011: WordPress 3.2.1 / WooCommerce 1.0
Let’s poke a bit of fun at WooCommerce for this: a plugin for
WooCommerce 1.0 was released in September 2011, after having been forked from the Jigoshop codebase in August. Not long afterwards, Justin wrote his famous (infamous?) blog post comparing the two. (No, we’re not going to rehash a discussion about this in the comments section — our views are mostly aligned with this post.)
At this point, WooCommerce does a lot of the basic things it still does today: you can add products, view and add orders, organize products into categories, and so on. You can create simple, downloadable, variable, virtual, and grouped products (the virtual / downloadable products were different types initially).
The settings let you change many things you can change today, such as basic tax rates, flat rate shipping costs, and countries you sell to. The shipping settings were separated from methods, and a lot of display settings were broken out into the “Catalog” settings.
The “Edit Order” screen is a bit frightening 🙂 Order notes, the ability to add items, and basic order actions are still there, but this page is a bit crazy to navigate with the tabbed “customer information” display. At this point, the only way you could update an order status was to view the order, so you probably got used to this screen.
Product creation was similar to the current product editor, though the “type” and variation data was separate from the rest of the product data. This experience was also a tiny bit buggy (i.e., the “Enter” key doesn’t work too well 😉 ), but you could do some great stuff, such as add upsells and cross-sells.
October 13, 2011: WordPress 3.2.1 / WooCommerce 1.1
November 3, 2011: WordPress 3.2.1 / WooCommerce 1.2
Version 1.1 contained mostly fixes and changes to make the WooCommerce code more extensible, so there weren’t many noteworthy changes in this version. By the time WooCommerce 1.2 rolled around, several more fixes were implemented, and managing orders had been improved with the addition of order actions:
This way you didn’t have to view every order to update it (though no bulk actions yet).
Email settings were added, as well the ability to preview an email with your configured settings. You could also define a sender address and who admin emails should be sent to.
The final feature in WooCommerce 1.2: the new “Best Sellers” widget:
Keep in mind that all of these changes were within a month and a half of launching WooCommerce, so lots of improvement was made very quickly. The change between version 1.6 and 2.0 was when WooCommerce stopped following semantic versioning and adopted the “WordPress way” of versioning each major release (i.e., 2.0 to 2.1).
December 1, 2011: WordPress 3.2.1 / WooCommerce 1.3
Now we’re right before WordPress 3.3 is released, and there have been a few point releases between versions 1.2 and 1.3. First of all, we can make any product virtual or downloadable (helpful for variable products that should have downloads), and downloadable product handling was improved to add X-Accel-Redirect / X-Sendfile support.
The “External” product type was also added.
The product variations were moved into the Product Data section of the “Edit Product” screen instead of within their own meta box.
Free shipping coupons were also added in version 1.3 with some coupon tweaks:
The versions from 1.2 to 1.3 also added:
- two new widgets for “My Account” links and On sale products
- Schema.org markup for products and product reviews
- Improvements to the shopping cart to support product add-ons
- added the settings API for shipping methods and payment gateways
February 1, 2012: WordPress 3.3.1 / WooCommerce 1.4
WooCommerce 1.4 featured some code restructuring, which wasn’t really user-facing — Justin posted a review of this version with some notes about the under-the-hood changes. The restructuring helped with organization and made WooCommerce more extensible for plugin / theme developers.
Between versions 1.3 and 1.4, there were also tons of new features added:
- Compound / multiple tax rate support was added
- Shipping classes were added in 1.3.1 and refined throughout following versions:
- A new setting for file download method was added so “force download” could be switched off (though these settings are getting a bit crazy, huh?)
- The ability to re-order shipping methods was added, along with the addition of local pickup and local delivery shipping methods
- The ability to re-order payment methods was added, along with a cash on delivery payment method:
- Some integrations, such as Sharedaddy and Piwik, were added to WooCommerce core
March 1, 2012: WordPress 3.3.1 / WooCommerce 1.5
Released only a month later, WooCommerce 1.5 included tons of improvements to product and order management.
First, product management was improved with the addition of quick edit and bulk edit for products, letting users manage products without visiting the “Edit Product” page.
Product details were improved with the addition of purchase notes for products, as well as changes to SKUs to ensure they didn’t default to the product ID (which could cause conflicts).
Shipping classes were added to individual product variations to let users override them for a particular variation.
Viewing and editing orders was improved to show all customer details at once instead of in a tabbed layout.
Finally, downloadable product handling was improved throughout the plugin. Downloadable products could be limited to one per purchase, and downloads could have an expiration set on the product page:
Download permissions management was also added to the orders page so shop owners could grant and revoke access to files.
July 19, 2012: WordPress 3.4.1 / WooCommerce 1.6
The WooCommerce 1.6 development cycle was quite long, as four months passed between releases. Instead, several smaller patch releases were pushed out between versions 1.5 and 1.6, as many ‘features’ were included in patch releases. This is also the last release where WooCommerce (roughly) followed semantic versioning, opting to follow “WordPress-style” versioning with version 2.0 and on.
Between version 1.5 and 1.6, coupons were improved to add an option to limit coupons to a category, limit coupons to a user email, as well as the addition of a “minimum spend” requirement to use coupons. Coupons could also be disabled under Settings > General.
The upsells / cross sells interface was changed in the Product Data section to make it easier to add related products, as well as to make this more flexible for other product types and extensions.
A new core payment gateway was added: Mijireh checkout gave store owners a core PCI compliant credit card gateway aside from PayPal standard.
Finally after several versions of single-order status updates, the ability to bulk-update order statuses was added in v1.6 so that multiple orders could be updated at once.
By version 1.6, several other new features had been added as well:
- The ability to limit local delivery to a list of postcodes
- Options to enable or disable star ratings for reviews along with the “verified owner” label
- The ability to sort product display using menu order
- New settings for store colors and stock display (i.e., in stock vs low stock)
- Shipping methods could be shown as radio buttons
- Added support for cost per order to flat rate shipping
- The “System Status” menu was added
Once the WooCommerce 1.6 development cycle ended, there was a huge gap in major releases, as WooCommerce 2.0 made some very large structural changes to the plugin.
March 4, 2013: WordPress 3.5.1 / WooCommerce 2.0
WooCommerce 2.0 brought about plenty of breaking changes, which required a lot of compatibility for plugin authors. The
WC_Product class was restructured, order items and data were stored in their own custom tables, and payment gateways were “smart loaded”. WooCommerce was also security audited and certified by Sucuri.
While there were immense structural changes, there were also tons of user-facing changes in the plugin. The “Product Data” section of the “Edit Product” screen was changed, as the horizontal tab layout was traded for a vertical layout:
The Order screen was improved to add status icons and action icons, simplifying the display of the orders list:
This version also added the “sales by category” and “sales by coupon” reports:
In terms of administrative changes, WooCommerce 2.0 contained several other tweaks and features:
- Support for multiple files for downloadable products
- Cash on Delivery could be enabled for select shipping methods only
- Added zip code restriction for local pickup shipping method
- Added the ability to mark products as “sold individually”
- Expanded bulk edit for prices to include: change to, increase by, decrease by actions
Along with lots of frontend changes:
- Ratings were displayed inline in catalogs
- CSS classes were standardized
- New sorting options allowed customers to sort by popularity and rating
- The ability to recover lost passwords was added to the my account section
- “On Sale”, “Best Selling”, and “Top Rated” shortcodes were added
This was an enormous change to WooCommerce core which paved the way for better scalability and extensibility.
February 10, 2014: WordPress 3.8.1 / WooCommerce 2.1
Almost a year passed between WooCommerce 2.0 and 2.1, as this release contained some massive changes as well. This is also when we began to do detailed reviews of major plugin updates on Sell with WP, so we published a WooCommerce 2.1 preview and full review.
WooCommerce 2.1 coincided with a core WordPress update that completely changed the admin layout to what we see today. WordPress 3.7 → 3.8 changed the admin layout completely, so updating to WooCommerce 2.1 required WordPress 3.8.
The default settings were completely re-worked and reorganized to simplify settings and remove settings that were infrequently used.
The coupon interface was re-worked as well to create a tabular layout like the Product Data box, making it easier to edit coupon information.
Reports were rebuilt to show more sales data and so that the design would reflect the new WordPress experience.
One of the largest changes to WooCommerce was the inclusion of the v1 REST API, which was (mostly) read-only. However, this allowed external applications (such as the iPhone app) to GET store information. PUT / POST / DELETE was supported for order statuses only.
Version 2.1 had a few more additional changes, including:
- An option to limit product reviews to verified owners
- Link previous orders to a customer’s account based on email
- Moving “integrations” (such as Google Analytics) out of core so they could be developed independently.
The core development cycle was stretched pretty far at this point (almost a year between releases), so the WooCommerce team also aimed for shorter release cycles following version 2.1.
September 10, 2014: WordPress 4.0 / WooCommerce 2.2
WooCommerce 2.2 was an evolutionary change after versions 2.0 and 2.1. The major features included:
The changes to order statuses allowed for automatic refunds in core, and the Simplify Commerce gateway was added in place of Mijireh to provide a core gateway aside from PayPal that supported Subscriptions and automatic refunds.
The structural changes in version 2.2, however, continued to help make WooCommerce more “enterprise-friendly”, as the REST API added PUT / POST / DELETE methods for products, orders, and coupons with v2, making it easier for external systems to integrate with WooCommerce. Webhooks were also added so that WooCommerce could trigger actions in third party systems.
February 11, 2015: WordPress 4.1 / WooCommerce 2.3
Emails were refactored to send emails through a common
send() method, meaning that all emails sent through WooCommerce could leverage the core email templates. This made it possible for third-party plugins to better blend-in with your shop by sending consistent emails. A “Cancelled” admin email was added as well.
For a final change, a webhooks UI was added to make it easier for developers to leverage webhooks with WooCommerce.
August 10, 2015: WordPress 4.2.4 / WooCommerce 2.4
Which brings us back to today 🙂 WooCommerce 2.4 was focused on better onboarding and more scalable product variations.
- Product variations were re-factored and ajaxified to improve performance for shops with hundreds of variations for a product.
- The on-boarding wizard was added to make it easier for new WooCommerce users to get set up, as this populated settings for them
- Flat rate shipping was drastically simplified to make it easier to understand for new users
- API changes were put in place for a better UI, multiple API keys per user, and a visual authentication endpoint
Full Circle: Four Years of WooCommerce
The biggest reasons Max and Justin had chosen WooCommerce for their products was that it was flexible, extensible, and that the WooCommerce brand was behind it, which they’d had good experiences with and trusted to build businesses on. Launching your own business is stressful enough, so launching it on a foundation that would be around for years to come was important.
With the backing of Automattic now behind WooCommerce, we look forward to it continuing to grow and improve. Cheers to continued growth, and happy birthday WooCommerce!