Selling WooCommerce product packages from the same inventory

Todays Ask Jilt question is from Pete:

I’m selling products that can be sold individually, in a pack of 4, or in a pack of 12, which is done in the variables dropdown. The problem is for stock it only shows in the back end as 1 unit sold no matter what people choose rather than selling 4 units for the pack of 4, or selling 12 unit for the pack of 12.

Say I have 500 items in stock, can I set it so when the 4 pack or 12 pack is sold, it reduces from the single stock? So if I sell 2 single items, stock goes down to 498, then selling a pack of 4 reduces stock to 494 (not 497 like it does now)?

Sure thing Pete! To sell WooCommerce product packages like this, you’re looking for a Product Bundle. This will let us use a single product as the inventory source, and we can create a bundle for that to sell the packs.

To clarify Pete’s problem, here’s what happens now:

Product A has 3 variations: 1 unit, 4-pack, 12-pack. The stock for these is calculated separately. The stock for each 4-pack purchase deducts “1” from the 4-pack stock, not the overall unit stock.

To get an overall unit stock, and to have packages deduct from this stock, we need to bundle the items instead of selling them as separate products (even though variations are tied together by a parent product, they’re still unique products / SKUs).

The WooCommerce Product Bundles extension ($49) is exactly what we need for this. It’s a great plugin from a great developer (SomewhereWarm), so I definitely recommend it for situations like this.

Here are the steps we need to take to set up these products.

1. Create the single unit product

First we need to create the product by which our inventory will be measured. For the sake of this question, this will be our single unit / item product. I’m going to sell these as light bulbs for demonstration.

This will be a simple product without any bells and whistles really — just set the price for a unit of one, and be sure to track all stock for the item here.

WooCommerce Product Bundle: Main product inventory

This will be how we sell our individual product, and we’ll bundle this to sell it in packs of 4 or 12. I’ll make this product page fancier in a bit, but one product down, two to go!

WooCommerce Product Bundle: Main product

2. Create the bundle products

Now that I have my single product done, I’ll create two bundle products — one for the 4-pack, and one for the 12-pack.

Since you only care about the stock on the individual item, you do not need to manage stock for the bundle. You only need to manage stock here if you need to track bundle stock separately from the item stock.

Let’s set the product type to “Product bundle”, and then set the price of the entire bundle for the product.

WooCommerce Product Bundles: Create Bundle
Set bundle price

Now add your single product under the “Bundled Products” tab. When doing so, you’ll set the min quantity = maximum quantity = your quantity for the bundle (4 or 12 in this case).

WooCommerce Product Bundles: bundle products
Add Bundled Products

That’s all we need for now! I’ll have a bundled product that’s tied to 4 of my individual light bulb product.

WooCommerce Product Bundles: Bundle product

Once you do the same thing for a 12-pack, you’re done! You have 3 WooCommerce product packages that are sold individually for different prices, but all deducting from the same inventory / SKU.

I’m going to take this just a bit further to cross-promote bundles. This way if someone finds my single product, they’re aware that there are other purchasing options.

3. Cross-promote bundles

To cross-promote my bundles, I’m going to use the product IDs shortcode built into WooCommerce. This gives you a way to show thumbnail views of multiple products at once.

I’m going to add the thumbnails for my 2 bundles on my individually-sold lightbulb to promote these as purchasing options.

WooCommerce Product Bundles: show other bundles
WooCommerce Product Bundles: cross promotion
Cross-promotion via shortcode

Now my product page will provide all 3 purchasing options for my visitors so they can choose the quantity that fits their needs.

Once a bundle is in the cart, customers will see that they’re paying for the bundle, but it’s made up of 4 (or 12) individual bulbs.

WooCommerce Product Bundles: Cart View

Once purchased, the quantity in the bundle will deduct inventory from your main or individually-sold product.

WooCommerce Product Bundles: stock reduction
Bundle reducing individual stock

Selling WooCommerce product packages

That’s it, Pete! Hope that points you in the right direction.

If you wanted to take this further to show all bundle choices on a page, you could look to use Product Bundles alongside of Composite Products, as shown in this tutorial. This would give you a way to show all bundles like a variation if desired on a single page.


  1. Thank you Beka! Your posts are always so helpful… this plugin sounds like it would almost fit my needs, but not quite. After struggling for the solution I need, I’ve come to realize just how daunting a task it is to design a shopping cart system that accommodates all the possible needs out there.

    For instance, I would like to provide bundles of a given product, but allow the customer to decide (within a range) exactly how many they would like in the bundle. So I’d like to start with maybe 6 and let them choose any number up to 12. I’ve been searching for days but haven’t found the plugin or code that does exactly this.

    The following code posted on the Woo site does exactly what I’d like, but it applies to all products instead of a specific product. I’m completely new to all this and learning as fast as I can, but I’m unsure how to have this filter affect a single, specific product:

    [code removed]

    I looked at the Min/Max Quantities extension, but it seems cart-based and I’d prefer this happen on the single product page before placing the item in the cart. Using error messages at the cart stage seems like a rather negative approach (error messages to the customer are not a positive experience IMO).

    Any ideas?

    Thank you thank you thank you!

  2. Beka thank you!

    Yes I saw this… but my understanding of the way the Min/Max works is that if a minimum of, say, 6 is specified, the amount shown on the product page is still 1 and the customer may not realize they need to bump it to 6 until they receive an error message in the shopping cart.

    If this isn’t the case, I apologize… I read it in a comment thread somewhere.

    What I would like (and yes it’s crazy specific) is the ability to set a minimum or 6 and a maximum of 12, and have the amount shown on the product page be 6, but still be able to be bumped to 12 and no higher.

    The code I included in my first comment (forgive me if that was bad style) does this exact thing very simply, but unfortunately it does it to all products.

    Is there some way to get this to happen with selected products?

    Thanks again, and hope I’m not being too irritating with this followup question 🙂

  3. Ahh that’s it! Thank you for taking the time to show this… you are truly incredible 🙂

  4. What about appointable products? I have several “kits”, each comprised of several products. I want to be able to rent out a kit, and have the individual products in that kit taken out of inventory for the date of the appointment. Is that doable?


  5. I am selling a buddle of 3 products that are sold separatly. Upon selling the bundle, I would need the inventory if the 3 products to get adjusted.

    I guess that plugin won’t Do it right?

  6. Hi Beka,

    Great article – I like the shortcode “hack” too. I have a question though, in regards to reviews. Let’s say one person buys a single lightbulb, another buys a 4-pack and another buys a 12-pack. Then, I follow up the order requesting them to leave a review, each person will leave a review on the respective bundle that they ordered. I would like to show the reviews across all bundles, as they are the same product.

    Is there a way to “share” reviews? Or perhaps have a variation product that contains bundles within it?

    What are your thoughts on this?

  7. How would we set up Product Bundles to account for shipping calculations for bundles that span multiple boxes? For example: We have books that will be sold in bundles. Some bundles will span multiple boxes and we need the shipping to be calculated accordingly. If we set the bundles as Assembled, we’d have to set the weight and dimensions for the bundle itself which would calculate it for just one box I think. Using the Shipped Individually option for each product in the bundle wouldn’t work in itself since there would be groups of books in one box not just one book per box. Would we need to define the groups of books that fit into a particular box as Simple products and then add those products to the bundle with each product then set as Shipped individually? Or is there a way to set Product Bundles to properly calculate shipping for multiple boxes without having to create extra subsets of products as I described? I asked WooCommerce Support but they didn’t seem to know how to answer this. Thanks for your insight.

    1. Hey Jeff,

      As you correctly pointed out, Product Bundles allows you to create assembled, partially assembled or unassembled bundles. However, in the first two cases, you can have only a single “container” per bundle.

      The challenge you describe needs to be approached on the shipping side of things, most likely by splitting your shipment into multiple packages, or by creating the boxes you are referring to inside the single package you would otherwise have your books. If you take the first route, customers will be able to choose a different shipping method per package, which you probably don’t want? Either way, you will probably need to have some custom code written to do this.


  8. Hi Beka,
    My concern is that bundles in your example would create 3 separate products. i.e.
    What I would like to create is one product page that has a drop down (like variable product) to choose the quantity, and the still keep track of the consolidated inventory of the single light bulb.
    Do you know any solution that could work?

    1. You’d need custom code to change the quantity dropdown like this rather than using a bundle. This snippet might be a starting point, but then changing the step to determine which values are offered. I recommend Codeable for these sort of customizations. 🙂

  9. Although I’m using Beka’s solution for the time being, I finally found a plugin that does this with variable products!
    WooCommerce Variable Stock Management
    But… unfortunately is no longer maintained at this point – I have written to the plugin author, I believe there should be a solid demand from many that sell products in bundles that need to have the stock quantity adjusted variably depending on the content of the bundle – but would rather prefer a drop down menu. An example of a site that has been using this option is here:

  10. Hi Beka,

    The case I am dealing with is that the vendor allows me to sell things in wholesale price with minimum quantity, but this minimum quantity could be made up from many different individual products.

    A toy shop offers 50 different product categories.
    Each category comes with 100 different products.
    In order to get wholesale price, the buyer would need to buy At Least 30 products from a single category, with minimum 1 category.

    What would be the solution for setting up such buying options in Woocommerce ? I am not sure if the existing Composite Product plugin could do exactly that.

  11. Hi Beka,

    Moreover, some vendors would offer Wholesale price based on the minimum value of the purchase rather than the quantity.

    100 products in a category.
    If buyer purchase more than USD 300, then he/she would get the products with wholesale price by having a discount of X% from the total purchase price.

    What would be the woocommerce solution for this ? Thanks.

  12. Hi Beka,

    What is the plugin for putting a wholesale discount based on a minimum of total value purchased ?

  13. hi Beka,

    Using WC Bundles 5.9.1 the inventory does NOT reduce correctly. Any idea?


  14. Hello Beka!

    I would like to sell packages of 50pcs only, Is there any way to set up just one pack of 50pcs without creating one simple product ?

    1. Hey Jose, I’m not quite following you here — is this pack always going to be 50 pieces? Or do you need to track inventory for each piece? Curious why a single “pack” product wouldn’t work.

  15. Hi. I’m trying to create packs, also 4,8 and 12 but customer will select individual items in pack ie one could be a size large, color Red, next a size small , color black. Can’t get all attributes to come up for each of the 4,8 and 12 selections respectively. Right now just one option to select size and color is coming up. Any advice? Thank you!

<em>Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.</em>