← All plugins

Min Max Quantity and Step Control for WooCommerce

Set a minimum quantity, a maximum quantity and a step on each product, and refuse a quantity that falls outside them.

Pro · from $49/year
Min Max Quantity and Step Control for WooCommerce graphic

What it does

Set a minimum quantity, a maximum quantity, a step and a starting quantity on each product. A figure on the product wins. A blank box uses the shop default. A minimum of zero on a product means that product has no minimum, and it wins over the shop default.

The series starts at the minimum when there is one, and at 1 when there is not. A minimum of 4 and a step of 2 allows 4, 6 and 8. A minimum of 3 and a step of 2 allows 3, 5 and 7. A step of 2 with no minimum allows 1, 3 and 5, which is what the quantity box itself will accept. A starting quantity is shown when it lands on that series. One that falls between two steps, or below the minimum, is replaced by the first number the box will accept.

A variation uses its own figures where it has them, then its parent's, then the shop defaults. Variations that leave the boxes blank and share the parent's minimum, maximum or step are counted together, so two variations of one product add up to the parent's limit. A variation with its own figures is judged on its own.

The quantity box on the product page, in the shop loop and in the cart follows those figures. Adding to the cart, and changing a quantity already there, is refused when the total falls outside the rule. Classic checkout cannot place the order while a quantity is outside the rule. The Cart and Checkout blocks use the same minimum, maximum and step through WooCommerce's Store API, and refuse the same quantities. PayPal and other express buttons stay on the cart, so the customer can read why the order is not going through, and the order itself is refused before the customer is sent out to pay. A short message appears under the quantity box when the quantity is under the minimum or over the maximum, and the three short sentences are edited under Messages, with the placeholders {min}, {max} and {step}.

When some of the product are already in the cart, the box offers the next quantity the total will allow. Three already in the cart and a series of 3, 5 and 7 cannot take another 3, because 6 is not on the series, so the box does not offer 3.

Stock still wins. A quantity above the stock on hand is refused even when the maximum is higher, and a product sold individually stays at one. If the minimum is higher than the stock, the customer is told both figures rather than asked to add more than can be bought. The message is one you write. Bold, italics and links are allowed, and the placeholders {product}, {min}, {max}, {step}, {quantity} and {stock} are filled in when it is shown. It appears on the cart, at checkout and in the mini-cart. The shortcode [mmqswc_message] prints the same sentence anywhere else, and shows nothing once the cart is fine.

A current licence adds rules on top of those figures. A role replaces the product's own figures, so wholesale and retail are not held to the same quantity. A product category, a tag or a shipping class fills only what the product left blank. A combined quantity adds the matching lines for a category, a tag, a shipping class, or the whole cart, and it applies only when the cart contains something from that group. An exempt role is not held to these limits. Stock and sold individually stay WooCommerce's either way. Each rule can carry its own message. Bulk edit and a CSV set the same limits across the catalogue, and those rules travel with an export of the settings.

If the licence lapses, nothing is deleted. The extra rules stay on the screen as words you can read but not change, and every customer is held to the product figures and the shop defaults. Renewing switches those rules back on as you left them. Nothing is written to an order, so High-Performance Order Storage is supported in the same way.

See it in action

Shop defaults for the minimum, maximum, step and starting quantity. A product that leaves its own boxes blank uses these.
A product sets its own minimum, maximum, step and starting quantity. Blank uses the shop default. A minimum of zero means this product has no minimum.
The quantity box on the product page starts at the product's starting quantity and moves in the product's step. A short message appears under the box when the quantity is under the minimum or over the maximum.
The shop loop offers each product at the quantity the rule starts from.
The cart shows the quantity and tells the customer when it is below the minimum.
Checkout shows the same message. The order cannot be placed while the quantity is outside the rule.

What the plugin does

  • A minimum quantity, a maximum quantity, a step and a starting quantity on each simple product and variation.
  • Shop defaults for any product that leaves its own boxes blank. A minimum of zero on a product means that product has no minimum.
  • The product's own figure wins, then its parent's, then the shop default. Only a blank box falls through.
  • The series starts at the minimum when there is one, and at 1 when there is not. A minimum of 4 and a step of 2 allows 4, 6 and 8. A minimum of 3 and a step of 2 allows 3, 5 and 7.
  • A starting quantity is shown when it lands on the series. One that falls short, or between two steps, is replaced by the first number the box will accept.
  • The quantity box on the product page, the shop loop and the cart.
  • A short message under the quantity box when a customer goes under the minimum or over the maximum.
  • When some are already in the cart, the box offers the next quantity the total will allow.
  • Add to cart and cart updates refused when the quantity is outside the rule.
  • Classic checkout blocked while a quantity is outside the rule. The Cart and Checkout blocks refused through the Store API, with the same limits on the quantity box.
  • PayPal and other express buttons refused, so a one-tap order cannot get past the rule. The buttons stay on the cart.
  • A message you write yourself. Bold, italics and links are allowed. The placeholders {product}, {min}, {max}, {step}, {quantity} and {stock} are filled in when it is shown.
  • Notices on the cart, checkout and mini-cart, and the shortcode [mmqswc_message], which shows nothing once the cart is fine.
  • Stock still wins. A quantity above the stock on hand is refused even when the maximum is higher, and a product sold individually stays at one.
  • Settings import and export, so a configuration can be copied to another shop.
  • High-Performance Order Storage.
  • A rule for each customer role, which replaces the product's own figures.
  • A product category, a tag or a shipping class, filling only what the product left blank.
  • A combined quantity for a category, a tag, a shipping class, or the whole cart. It applies when the cart contains something from that group.
  • An exempt role, which is not held to these limits. Stock and sold individually stay WooCommerce's.
  • Bulk edit and a CSV, so the same limits can be set across the catalogue. Each rule can carry its own message, and those rules travel with an export.

Pricing

Every Pro plan is the same plugin with every feature. The only difference is how many sites you can run it on.

Single site

One site, with a year of updates and support.

$49/year

Secure checkout. Cancel any time.

5 sites

Most popular

Up to 5 sites, with a year of updates and support.

$99/year

Secure checkout. Cancel any time.

25 sites

Up to 25 sites, with a year of updates and support.

$199/year

Secure checkout. Cancel any time.

Need more than 25 sites? Get in touch about a custom licence.

Frequently asked questions

Does it work with the block cart and checkout?

Yes. The quantity box in the Cart and Checkout blocks uses the same minimum, maximum and step, through WooCommerce's Store API, and a quantity outside the rule is refused there too.

What if the product is sold individually, or stock is lower than the maximum?

WooCommerce still wins. A product sold individually stays at one, and a quantity above the stock on hand is refused even when the maximum is higher.

What happens if a customer types a quantity the rule does not allow?

On the product page a short message appears under the quantity box. It clears when the quantity is one the rule allows. Leaving the box sets it to the nearest quantity that is allowed: the minimum if they went under it, the maximum if they went over it, and the closest step otherwise. When two steps are the same distance away, the lower one is used. The plus and minus buttons stop at the minimum and maximum. You can change those short sentences under Messages. The cart and the checkout still show the longer message, and the Cart and Checkout blocks still refuse a quantity the rule does not allow.

Can I change the wording?

Yes. Write whatever suits the shop. Bold, italics and links are allowed; anything else is stripped before it reaches the storefront. The placeholders {product}, {min}, {max}, {step}, {quantity} and {stock} are filled in when the message is shown. A rule can carry its own message, used when that rule is the one that stopped the customer.

Can I show the message somewhere else?

Yes. The shortcode [mmqswc_message] prints the same sentence wherever you put it, and shows nothing at all once the cart is fine.

Can a customer get past it with a one-tap payment button?

No. The buttons stay on the cart, so the customer can read why the order is not going through, but the order itself is refused while a quantity is outside the rule.

What happens when the licence lapses?

Nothing is deleted. The extra rules stay on the screen as words you can read but not change, and every customer is held to the product figures and the shop defaults. Renewing switches those rules back on as you left them.

Requires WordPress 6.7+ · WooCommerce 10.0+ · PHP 8.1+

More plugins