Complete guide: How to sell by weight in WooCommerce

As an online business owner, there are many scenarios where you might need to sell by weight in WooCommerce. For example, you might sell fruits and vegetables from your farm, purchase dry fruits and nuts in bulk for resale, or grow various herbs - all of which need WooCommerce weight-based pricing.

Lots of store owners wonder: "How do I sell a product by weight in WooCommerce?" That's because it’s not immediately obvious how to use WooCommerce to sell by weight. The good news is that, with the right WooCommerce plugins, you can easily start selling products by weight.

In this article, we’ll walk you through two different ways to use WooCommerce to list products in a way that allows you to sell by weight. The methods we cover in this tutorial work equally well if you’re selling by other types of measurement such as volume, size, width, length, or dimensions.

Let's get started ⚖️

Why you might need to sell by weight in WooCommerce

There are several different types of products that store owners typically sell by weight. Here are a few examples:

  • Fruits
  • Vegetables
  • Dry fruits
  • Nuts
  • Flour, lentils, and beans
  • Meat

Store owners set the products up in a way that each product has a price per unit weight. For example, this could be in grams, ounces, or pounds. Customers can simply select the number of, say, grams they’d like to purchase of the product and proceed to checkout to place their order.

As an e-commerce store owner, you can sell by weight in WooCommerce with the right combination of plugins.

Two ways to sell by weight in WooCommerce

There are two different ways to sell by weight in WooCommerce:

  1. Add pre-set weight options as product variations.
  2. Allow customers to enter an exact weight to receive an exact weight-based price calculation.

If you choose Method 1, you can add each weight option as a separate variation. This is particularly useful for store owners that sell items at different weight quantities. For example, if you have three different weight options – 500 grams, 1 kilogram, and 5 kilograms. You would add products as variable products in WooCommerce.

Alternatively, you can go with Method 2 if you need WooCommerce weight-based pricing with more flexible options. For example, if you want to sell different types of flour by the kilogram, you could simply add your product prices by weight instead of selling by quantity.

Here's what each option might look like in your WooCommerce store:

Keep reading to learn more about each method and how to set it up.

Method 1: Add weight options as variations

You can use the WooCommerce Bulk Variations plugin to add each weight option as a product variation. This plugin lets you list all the variations in a matrix layout directly on the single product page.

Customers can enter the required quantity of each option and order the exact amount they want. They can mix and match multiple variations to reach the total weight volume they require.

For example, let’s say you’d like to sell sweets online. You might set up the following weight options as variations to sell by weight in WooCommerce:

  • 500 grams
  • 1 kilogram
  • 2 kilograms

So, if a customer would like to purchase 1.5 kilograms of sweets, they could add the 500 grams variation and the 1-kilogram variation to their shopping cart at the same time and proceed to the checkout page. In this way, the plugin supports custom weight measurements. You just need to create a variation for each possible step within the price range.

WooCommerce Bulk Variations price matrix

Setup instructions

  1. Get the WooCommerce Bulk Variations plugin and install it on your WordPress site.
  2. Activate your license key in the plugin setup wizard, which will open automatically.
  3. Next, go to Products → Add New and create a WooCommerce product which you will sell by weight.
  4. Go to Product Data → Attributes and add all the attributes that you would like customers to select from. For example, in the case of sweets, this may be flavor and weight. Enter all the possible options for each attribute, such as all the different weights that you sell in. Tick the 'Use for variations' box for each attribute, then click 'Save attributes'.
    Add weight attribute to WooCommerce product
  5. Open the 'Variations' tab underneath and click 'Generate variations'. This will create a variation for each combination of attributes. Go through each one and enter a price, add an image, and so on. (Tip: Use the filters above the list of variations to quickly select multiple variations and apply the same changes to each one.)
    Sell WooCommerce variations by weight
  6. Now open the 'Bulk Variations' tab and configure the following settings:
    • Make sure the Enable variations grid checkbox is ticked.
    • Set the Horizontal option to the attribute you want to display in columns for the variations grid.
    • Set the Vertical option to the attribute you want to display in rows for the variations grid.
    • Make sure the Display variation images checkbox is ticked.
    WooCommerce Bulk Variations settings
  7. Click the Publish button to add the product to your store.

On the front-end, the WooCommerce Bulk Variations plugin will display the variations along two dimensions in a grid with all the weight options.

Method 2: Price products by weight

If you want to set up WooCommerce weight-based pricing, then there's a simple method for replacing the standard quantity field with a weight input field. This lets you sell products by weight instead of quantity, like this:

How to add decimal quantities to WooCommerce products
A product sold by the kilogram

The great thing about this method is that it also supports decimal quantities, and minimum and maximum quantities. For example, you can allow customers to order coffee in any decimal value between 1 and 10kg.

You can do this with the WooCommerce Product Options plugin, which lets you replace the standard quantity field with custom product options. These offer more flexibility, such as the ability to order decimal quantities and display the weight on the product page.

How to add a product weight field to the product page

Step 1: Set up the product

First, you need to disable the quantity field on the main page, and enter the price for one unit of weight:

  1. Go to the 'Products' section of the WordPress admin and open the 'Edit product' page.
  2. Find the 'Product data' section and enter the basic product price. For example, if you are selling by kg then you should enter the cost for 1kg.
WooCommerce decimal quantity value price by kg
  1. Next, go to the 'Inventory' tab and tick the 'Limit purchases to 1 item per order' box. This hides the product quantity field. You need to do this because you'll be selling by weight rather than quantity. (We'll be adding a weight field in the next section.)
WooCommerce hide quantity field and replace with decimal quantity

Step 2: Add a weight field to the product

  1. Get the WooCommerce Product Options plugin and install it on your site.
  2. Go to Products → Options.
  3. Create a Options Group which you'll use to add the weight field, plus any other options you want to add to the product.
  4. Choose which products/categories you want to display the weight field on, or leave it to appear globally on all products.
  5. Click 'Add Option' and select the 'Number' field type.
  6. Enter a name for the weight field (e.g. "Weight") and untick the 'Display' box next to it.
  7. Underneath in the 'Choices' section, enter the label which will appear next to the weight field (e.g "Weight in kilograms"). Leave "No cost" selected for the price because we'll be a proper price formula in a minute, instead of adding a static price here.
  8. Set the field to 'Required' to force customers to enter a weight.
  9. Next, open the 'Advanced settings' to display some additional options:
    • If you want customers to be able to select partial weights (e.g. 1.5kg) then use the 'Decimal' number type to allow this.
    • Set a minimum and maximum weight that customers can enter, if needed.
WooCommerce decimal quantity input field
  1. Save the option group.

Step 3: Add the weight-based pricing to WooCommerce

Now you've added the weight field, you need to create a price formula which will calculate the weight-based pricing:

  1. In the same Option Group that you created in Step 2, click 'Add option' again and select 'Price formula' this time.
  2. Add a name for the option, such as "Weight calculation", and untick the 'Display' box again.
  3. Select the Price Formula option type.
  4. Create a price formula which will calculate the price based on the weight that the customer enters. To do this, click on the name of the number field which appears underneath the 'Formula' field, and also the 'Price' field which will retrieve the price for 1 unit of weight which you entered in Step 1. Enter the multiplication symbol between the two variables so that the formula looks something like: [Weight] * [product_price]. Use mathematical operators, brackets etc. to add extra complexity to the formula as needed.
  5. Use the 'Price display suffix' field to enter some text to indicate that the main price you entered for the product is based on weight. For example, if you entered the price for 1kg on the 'Edit product' screen then you should enter "per kilogram" or "per kg" to make this clear to customers. This will appear after the price for 1kg at the top of the product page.
  6. Finally, visit a product page and test the pricing by weight. Enter a number in the weight field and make sure the correct price is shown below. Keep making changes until you're completely happy.

Bonus: Selling by weight on the main Shop page

Both methods for selling WooCommerce products by weight focus on what it looks like on the single product page. For even more convenience, you can use WooCommerce Bulk Variations or WooCommerce Product Options with our other plugin, WooCommerce Product Table. This displays products in a much clearer layout on the main Shop page, like this:

WooCommerce Product Table to sell by weight

This makes it very clear to customers that the products are priced by weight. That's because we have renamed the 'Price' column in the table to clearly show that each price is based on weight, rather than by quantity.

Case study: Provenance Meat

Selling by weight is particularly useful if you’re selling meat. It gives customers full flexibility to place orders based on the exact amount they’d like to purchase whether it’s 1.5 kilograms or 1.675 kilograms. Here's an example of how Provenance Meat uses WooCommerce Product Table:

Provenance Meat WooCommerce food order form

Start selling WooCommerce products by weight

In this tutorial, we've looked at several methods for selling by weight in WooCommerce. Read about each one, and choose the combination of plugins that best suits your needs:

  • WooCommerce Bulk Variations - Create a variation for each weight option, and display them in a user-friendly order form on the single product page.
  • WooCommerce Product Options - Replace the standard WooCommerce quantity field with a purpose-built weight field. It supports decimal quantities, min/max quantities and more, making it ideal for selling by weight.

Both plugins come with a full 30-day money back guarantee. Try out your chosen plugin and start selling by weight today!

27 Comments

  1. I think you're missing the problem. If the customer buys 8 ounces of meat we need to accept that order through the credit card but not bill it. When we pack the order we need to change the amount to the actual amount of meat which could be higher or lower then the 8 ounces. Chickens don't produce parts that exact match the 8 ounces.

    • Hi, Terry. Thanks for sharing your insights. To address that, you could consider implementing a custom code solution tailored to handle that unique situation. I hope this clarifies things for you. If you have any further questions about our plugins, please don't hesitate to reach out to us at our Support Center.

  2. Hi! We have a client who wants to sell meat (€/kg). He wants the clients to see the price when they type in their specific weight. So for example, beef at €20/kg (the price is displayed next to the product): the client wants 500 grams so the price automatically changes to €10. Is this only possible with the paying plug-in form method 2? Or is there another possibility? Thanks!

    • Hi Laura, thank you for the comment. As WooCommerce is an extremely popular platform, there is often more than one way to go about doing things. You can have a fully custom solution coded for you (which will most likely be significantly more expensive) or you can use other tools/plugins. When selling by weight, we recommend the methods discussed above. If you have any trouble with the plugins, you can contact our friendly support team. If you have further questions, you can reach us through our Support Center. Cheers!

  3. Hello
    I am selling salami on my website. Every product has units with different weights (0.150 kg, 0.148 kg, etc) and I was wondering how to publish these products in my WC Shop.
    Thanks for your support.

    • Hi Patrik! Thanks for your comment. WooCommerce does not allow decimal values as quantities by default. That said, if you want people to be able to order in decimal step values then you can implement the suggestions mentioned in the article - use the free Product Quantity Control for WooCommerce plugin. Alternatively, you can also set your prices in smaller measures (e.g. sell products per gram).

      I hope this helps. Let me know if you have any more questions. You can also enquire in more detail by submitting a form via our dedicated Support Center. Thanks!

  4. Hello.
    This is my first time setting up an online store for my small, home-based greeting card work. The shipping will depend on the postal rates according to the weight, ranging from 100gms to 250gsms, and up to 2kg for package post. For example:
    1 card €2.10 + €1.10 postal cost
    2 cards €4.20 + €1.10 postal cost
    3 cards €6.30 + €1.40 postal cost...
    The individual card price doesn't change. The shipping cost changes.
    I only seem to be able to set a flat rate with the online store package I've chosen. Do I need a separate plugin for variable weights, or advanced shipping? If yes, which one would you suggest to solve this issue of setting shipping costs. Thank you.

    • Hi, Frances. Thanks for your comment. What you describe you'd like to achieve is to price your shipping by weight in WooCommerce, rather than price or sell your products by weight (which is what our article is about). For your use case, I suggest you look into using a shipping plugin such as the official Table Rate Shipping by WooCommerce. For usage details, you can refer to the Table Rate Shipping documentation, or contact official WooCommerce Support.

      I hope this makes sense and helps point you in the right direction. Please let me know if you have any more questions. Cheers!

      • Hello,
        Many thanks for the reply.
        I checked out Table Rate Shipping and I'm delighted to say that I have now found a WooCommerce Shipping plugin that solves the problem. So glad I found your interesting article and that you kindly directed me from there. Thanks again!

  5. Hi, Thanks for your article.
    Is it possible to manage the stock with product variations? ie, I have 100kg of a product, I want to sell 3 kinds of variants (product A1 1kg, product A2 2kg, product A3 3kg). If the customer orders product A1 and product A3, the stock of product A should be 96 kg (100 - 1 - 2).

    Is that possible ?

    • Hi, Mike. Thanks for your comment. If you'd like to sell by weight and manage it via stock of product variations, you will also need to segregate or distribute that weight accordingly. In your example;

      • 100 kg
      • Product A, Variation 1 = 1kg
      • Product A, Variation 2 = 2kg
      • Product A, Variation 3 = 3kg

      You will need to distribute the total weight according to the variations, e.g.:

      • Variation 1 = 25 qty = 25kg
      • Variation 2 = 15 qty = 30kg
      • Variation 3 = 15 qty = 45kg
      • Total qty of all variations = 100kg

      I hope this makes sense and helps!

      • Ok, thanks for your reply. I understand but it's not what I would like to do. I don't want distribute the total weight according to the variations but just set total quantity of "parent product" because my products are not pre-conditioned so there is no fixed quantity for product variations.

        • Hi, Mike. Thanks for getting back to me. With that in mind, another way that you could approach this would be to use our WooCommerce Quantity Manager plugin, which allows you to set quantity rules for individual variations. You could add/create the example variations each priced at per kg and set the appropriate default and minimum quantities and step values. E.g.:

          Variation 1 (1kg) will have a default and minimum qty of 1 and step value of 1
          Variation 2 (2kg) will have a default and minimum qty of 2 and step value of 2
          Variation 3 (3kg) will have a default and minimum qty of 3 and step value of 3

          I believe this way would work best for what you'd like to achieve. What do you think? We can also discuss this in more detail if you could submit an enquiry via our dedicated Support Center. Thanks!

  6. i m working on my website H.M Spices & Herbs, as per you know these products customer like to order in weight because some of them in Spices they need extra comparetivly other spice so what would better for me go to method one & set the price per Grams for each spices & herbs or go to method 2 and make varint 10 grm/50 gram/100grams?
    need your experience opinion.
    thank u so much

    • Hi, Bilal. Thanks for your interest in our plugins for WordPress and Wo​oCommerce! I'm glad you found our article for your use case on your website for selling spices and herbs online.

      The method better for you would be the one that would be easier to manage on your end, as well as provide a better experience for your customer's needs. i.e. Would it be easier for you and do your customer's usually purchase your products in different/specific/custom weight? Or do you usually sell in fixed, pre-determined weight variations which your customers choose from, such as packs of 50g, 100g, 250g, 500g, etc.? This should help you choose the method that's right for both you and your customers.

      I hope this helps. Let me know if you have any more questions. You can also enquire in more detail by submitting a form via our dedicated Support Center. Thanks!

  7. Hi,
    I want to add the facility where user can put any number in quantity COL like 1,2,5, 1.2, 4.5, 2.3 and buy accordingly, instead of fixed increment button 1,2 ,3 ...50....

    Please advise and help if any solution. Thanks!

    Regards,
    Shishir Kumar

    • Hi, Shishir. As mentioned in the section above that shows you how you can Sell by weight with decimal point values, you can install and use the free Product Quantity (Min/Max/Step) for WooCommerce plugin by WPWhale, which allows you to define decimal values for products in your store or enable decimal quantities in WooCommerce. Thanks!

  8. Hi. I sell meat products, and same products have diferent weights. I sell by $/lb showing an average weight for each product, and showing the price in $/lb. I would like to charge the client for the real weight after selecting the products for the order. Can you tell me please if I can do it from Woocommerce?

  9. Thanks for the article - really useful. I have a client wanting to sell meat - they would like to sell some items in weight (variables in kg) and some normally (by quantity), but they also want to manage stock control. Is this possible with the weight option? ie they would set their stock level at 100kg on a specific product - once the level gets to 2kg, they would get notified that stock is low - is this possible in any of the recommended plugins? Thanks

    • Hi David,

      I'm glad you found this article helpful.

      You can do this directly in the WooCommerce menu by enabling the Notifications in your shop’s inventory options. To do this, go to WooCommerce > Settings > Products > Inventory. Please see: Inventory Options.

      Should you have any other questions/concerns, kindly fill up a form at our Support Center so we can get back to you much sooner.

  10. How discounts are managed? If i want to sell 100 gr at 1€ and 1Kg at 8€? Is it possible?

Please share your thoughts...

Your email address will not be published. Required fields are marked *