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.

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
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 popularUp 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.
More plugins

Estimated Delivery Dates for WooCommerce
Tell customers when their order will arrive, and your team when it has to leave. Estimates on the product page, cart, checkout and emails.

Free Shipping Bar for WooCommerce
Show customers how close they are to free shipping, with a progress bar on the cart, at checkout and in the mini-cart.

Delivery Instructions for WooCommerce
Gives customers one clear box at checkout for delivery or shipping instructions, on the classic checkout and the Checkout block, and shows what they wrote on the order and in your emails.