Case Study: Warehouse on Woo

Written by Jeff Pearce on March 5, 2012 Customer Stories, News.

Every once in a while I take some time outside of WooThemes to do some freelance work. However, my reasons for doing freelance work are quite different to most developers (I’m generalizing here, but usually it’s money). My reasons are usually to scratch an itch to play with a new technology, to learn how to use a particular product at WooThemes that I wasn’t part of building, or because it presents a possible business opportunity. Recently I was presented with an opportunity that fulfilled all 3 of those criteria – much to my delight.

Setting the stage

2 close personal friends of mine came to me last year with a business opportunity that would require me to build a system to manage both a warehouse stock and ordering process as well as the customer storefront.  The system would be closed off to only verified users, and a specific process flow would be followed from the initial order to the completion of the order.

The requirements were simple:

  • Secure customer login where Customers could create orders regardless of how much stock was on hand
  • Customer Administrators would then approve or cancel these orders
  • The Warehouse Manager would process the approved orders and despatch them to the customer from the warehouse
  • Once the order was delivered, the order would be complete
  • Payments would be handled separately, so no payment gateway was necessary
  • A support forum for customers was needed as well

But what to do to get this done?

I initially thought about custom building a system in something like Kohana as I had no knowledge of any existing WP product that would completely meet my needs. In the end I decided on using WP as my code framework seeing as how I had punted WP as a development framework at last years Cape Town WordCamp.

While thinking about how to custom build this into WP, I had an epiphany of sorts. WooCommerce, at its core, has the ability to do around 70% of the main features that the system required. So why not use it as a base? It would save SO much development time!

Making it happen

So I ended up implementing a customized version of WooCommerce to handle the orders and the stock management, basically to be the super powered engine of the system, as well as to handle the reporting requirements. WooCommerce is amazing – Jay and Mike have built an incredible product that was a pleasure to use as a base to work from.

I then used Justin Tadlock’s Members plugin to handle roles and permissions, bbPress for the forum requirements, and the Shelflife theme designed by Fresh01 (my personal favorite designer and WooThemes colleague) for the customer frontend. In addition to that, Customers and Customer Admins would never see the WP dashboard, and the Warehouse Manager would never see the frontend. All of this was achieved with WP functions 🙂

Getting technical


I created a customer dashboard from the standard my account page in WooCommerce with a few minor tweaks. I restructured the standard WooCommerce menu system a bit, but overall left most settings unchanged.
The search page is standard, but I moved the filtering system into the standard price filter widget
I also used some of the themes built in shortcodes like the Info boxes on the orders completion screen to notify the customer that their order will only be complete once it is approved.

Customer Administrators

The Customer Admin dashboard has the ability to approve orders - this is key in the whole process flow, and while a customer will only see their orders, the customer admin will see all their companies and departments orders so that they can approve them. The process flow of an order is: Pending (Customer) -> Approved/Cancelled (Customer Admin) -> Processing/On-hold (Warehouse Manager) -> Despatched (Warehouse Manager) -> Complete (Warehouse Manager)
To perform the "Approve" function I simply modified the pay_for_order.php file in the theme to handle the custom user role. All it is is a status update. Clever hey? 😉

Warehouse Manager

The warehouse manager does not need to see all the WP menu items in the backend dashboard. He is only concerned with orders and support queries. So I removed some of the menu items just for his user role.
The main screen for the warehouse manager is the orders screen where I created some custom ajax action buttons to better handle the process flow - you will see these on the right hand side -> "On-Hold, Despatch, Complete" and the colour coding is simply a visual aid.

I’ve implemented the system onto a live domain as well as onto an Ubuntu LAMP server in the warehouse – I used XCloner to make the move as simple as possible – and the next step is to syncronize the 2 databases. Should be fun 🙂

Lessons learnt and how this applies at WooThemes

Being a lead developer here at WooThemes gives me the great privilege of working with and building some of the best products on the market for WordPress. Working on projects outside of WooThemes, and using our own products has always allowed me to improve them and to see how they perform in real life. I suggest all theme and plugin developers try out their own products and see how they really perform.

Would you like to be featured on our blog? Share your experiences working with WordPress and our themes and if we believe it will benefit our community we’ll publish it. Contact us.

18 Responses

  1. Trousseau Packing
    March 5, 2012 at 1:12 pm #

    Is this going to be available for sale 😀

    • jeffikus
      March 6, 2012 at 11:30 am #

      Might be worth a look building as an extension, but I’d have to do some major rework of the code for the latest version of WooCommerce 😉

      • Martin
        March 26, 2012 at 9:17 pm #

        Would love to see the Warehouse management as an extension, without your tweaks the warehouse manager role seems kind of pointless.

  2. pedro67
    March 5, 2012 at 2:56 pm #

    where to buy? Pending and Approve orders are interesting. e.g. We want to enable customers to publish their business data in categories. There is a free version, a basic version (with more options) and a premium version with some pics upload, logo….

    Of course you want to approve a client – it could be spam. As well as pending, because you did not receive the payment yet or the account has to be renewed.

    We still fight with a solution and other e-commerce tools. Would be nice to have with WooCommerce – and we would pay for those extensions.

  3. Garrett
    March 5, 2012 at 4:31 pm #

    Dynamic pricing can be used to add a retail-access level to your current direct-to-consumer store.

    The only real challenge is that splitting your portal into separate stores allows you to also split inventory. To anyone that’s ever been in an inventory-stressed ecommerce business that does retail AND consumer sales, it’s a hard case for retail to hang on to their inventory (usually 1/3 profit margin) when a consumer is ready to buy. Splitting the inventories allows for efficient allocation.

    BUT, of course, that’s another management system. If inventory allows, I’m all for 1 integrated store.

    Regardless, this case study is COOL.

    • jeffikus
      March 6, 2012 at 11:33 am #

      Thanks man 🙂 Yeah, most big store chains would need cost centers and the ability to transfer between stores, I’d like to do that in the future but that’s more of a long term goal at this stage.

  4. Tim
    March 5, 2012 at 9:33 pm #

    Jeff this is really cool. This with a little tweaking could also be a POS bridge it looks like. It’s one of the things we struggle with – How to keep all warehouse/online inventory in check. Yes we know we can use POS systems and import/export and sync— blah and we hate it.

    What would be super sweet is to use WC as a POS for in store purchases much like how you are using it here. But it’s missing the payment gateway piece – and possibly a bar scanner/credit card swiper.

    Why not have your interface as the backend for the warehouse person filling the online orders. And the front end interface you have as an in store POS. And yet another interface for customers.

    The benefit could be that it keeps everything in check without the need to import/export add products sync, blah! It could all be handled from one system.

    I really like your use of WC in this case. Awesome. I’d love to have a copy!

    • jeffikus
      March 6, 2012 at 11:35 am #

      POS would be a great idea! I think one of the goals of the warehouse would be to have an onsite store so I might have to build a POS interface at some stage. Maybe another case study? 🙂

      • Tim
        March 6, 2012 at 3:47 pm #

        What are we waiting for? 🙂 It would capture a huge chunk of the market and get people crossing over to WC I think. It’s really an issue for a lot of people trying to find bridges between their online store and their in store POS.

        Let me know if you want to use us as a case study or want to pick my brain about the issues we are dealing with in this arena. POS interface for WC would be huge.

        • jeffikus
          March 7, 2012 at 1:10 pm #

          Sure, mail us your thoughts using our contact form and Ryan will make sure I get it 🙂 We’re always game for new ideas!

          • Tim
            March 7, 2012 at 6:40 pm #

            Jeff, I sent something through to Ryan. Thanks.

  5. Serg
    March 5, 2012 at 11:54 pm #

    Hi Jeff,
    This would be the perfect warehouse for my father!
    I could also use these 2 add-ons:
    -Project How-To light box, right before they buy the item to encourage the purchase
    -Reviews page, kind of like a feedback page

    At the same time show off his features products with option to hire an expert or chat with a CR without leaving the site.

    You certainly picked up the right design for the metal and wood professional workers/customers.

    — WooCommerce — will give this theme/framework a powerful shopping assistance!

  6. good!like!
    March 6, 2012 at 2:35 pm #

    Quite like it!Well written。

  7. Sebastian
    March 7, 2012 at 10:30 am #

    Hi woo-folks,

    as a club member, the enormous focus on themes with a selling aspect and the according plugins is starting to annoy me. I agree that you are doing some great work there but none of the projects I am working on right now or am planning to work on include the need to sell something; and the one that is is not supported by the framework, but works perfectly with the free s2member plugin.
    So seeing all this effort going into something I don’t need while much fewer general themes are released then earlier and at the same times seeing the buddypress approach cancelled is not making me feel that my club member fee is invested sensibly…

    • jeffikus
      March 7, 2012 at 1:09 pm #

      Hi Sebastian

      Always good to get feedback on this, other than the WooCommerce enabled themes what kind of themes you are looking for? Remember you can use those themes without WooCommerce as well, and recently we’ve released 4 business themes (Whitelight, Olya, Beveled), a band theme (Unsigned), and a wiki theme (Wikieasi) – are you looking for more themes like Listings & Estate or the tumblog themes?

      Let us know 🙂

      • Sebastian
        March 16, 2012 at 12:17 am #

        Hi Jeffikus,

        I like the recent themes but am very disappointed about the Buddypress desaster – including the continued inconsistent communication on it, unkept promises (3rd party will further develop it, in two weeks there is a solution, we will update it) etc..

        And I might be wrong, but I have the feeling you published more themes when there was no WooCommerce around…
        I would love to see more themes for business, personal, maybe a less emotional Non-Profit, maybe something with members, or a membership plugin from your side (, or…

        There is great stuff on and many other websites out there, its also fairly cheap, but it lacks the great woothemes framework and options.



  8. Christian
    March 10, 2012 at 1:47 pm #

    Hi Jeff,

    thank you very much for this case study. What kind of hosting / server power do you recommend to make store like this running smoothly?

  9. entrpreneur
    March 27, 2012 at 4:31 pm #

    Hey There I really enjoyed reading your thoughts. I’m considering writing my own blog very soon Cheers.