OfferGuard vs MinMaxify: per-cart quantity limits vs lifetime one-per-customer rules
Merchants install MinMaxify and OfferGuard for what sounds like the same reason: "I want to limit how much of this product one customer can buy." The two apps then do two different things, and the difference decides whether the limit holds.
MinMaxify Order Limits sets minimum and maximum quantities. Per product, per collection, per cart, per order. If the rule says two units maximum, the cart will not accept a third.
OfferGuard sets a lifetime cap per buyer. If the rule says one per customer, the second order from the same person is blocked at checkout, whether it comes two minutes later or two months later, and whether the buyer used the same email or a fresh one.
What MinMaxify does
MinMaxify is a quantity rule engine. You pick a scope (a product, a collection, the whole cart) and set floors and ceilings. Buy at least three. Buy at most two. No more than ten items in the order. It enforces those rules in the cart and at checkout, and it does it without the buyer needing an account.
That is useful for a lot of stores. Wholesale minimums. Case-pack quantities. Limited stock where you want to spread units across more buyers in a single drop.
The limit is scoped to the transaction. Once the order completes, the counter resets. Nothing in a quantity rule remembers who bought what last time.
Where merchants hit the wall
The clearest description of the gap comes from a Shopify Community thread titled "Limit one per customer (and NOT per checkout)":
"they can just complete the purchase for one item and then buy it again (ie minmaxify just limits the item being checked out)"
A MinMaxify review from a merchant running a meal-prep store makes the same point from the other side:
"I have lost thousands of dollars through my store as this app has not done what was promised. I had set minimum order limits of 10 items however this was easily bypassed by customers through the shopping cart."
Neither quote says MinMaxify is broken. Both say the merchant wanted a per-person rule and bought a per-cart rule. The cart cannot know that the person in front of it checked out five minutes ago under a different email.
What OfferGuard does instead
OfferGuard does not count units in the cart. It counts completed orders per identity signal and blocks the checkout when a signal hits its cap.
The caps a rule can set:
- Purchases per email (after normalization, so Gmail dots and plus aliases collapse to one address)
- Purchases per phone number
- Purchases per shipping address (fuzzy matched, so "Apt 4B" and "#4B" are the same building)
- Purchases per billing address
- Purchases per IP address
- Purchases per device fingerprint
- Purchases per visitor cookie
- Purchases per Shopify customer ID
Set any of them to one and you have a lifetime one-per-customer rule for that product. Set the address cap to one and you have one per household. The check runs server-side at checkout against your order history, and it runs the same way for a guest as for a logged-in customer.
On Fortress and above, a second enforcement layer runs inside Shopify's cart validation function. The function receives hashed email, phone, and address values for buyers who already hit a cap, and rejects the checkout before the buyer reaches payment. It never sees raw customer data. The same function can also cap the quantity of a gated product per order, which is the one place the two apps overlap.
The buyer who fails the check sees a message you write. They can still buy everything else in your store. Only the protected product is blocked.
Side by side
| | MinMaxify | OfferGuard | |---|---|---| | Unit of the limit | Cart or order | Person, across all orders | | Remembers previous orders | No | Yes | | Holds against a new email | No | Yes, seven other signals | | Holds in guest checkout | Per cart, yes | Yes | | Minimum quantities | Yes | No | | Maximum units per order | Yes | Yes, for gated products only | | Where it enforces | Cart and checkout | Checkout extension plus cart validation function | | New-customer-only offers | No | Yes |
When MinMaxify is the right tool
If your rule is about the shape of a single order, MinMaxify is the better fit. Wholesale minimums, case packs, "no more than four per order" during a launch when you are not worried about the same buyer coming back. It is simpler to set up for those jobs, and OfferGuard does not do minimums at all.
If your rule is about a person, and especially if it is about a person who has an incentive to come back with a new email, a quantity cap is the wrong instrument. Founder pricing, sample SKUs, intro offers, one-time digital products, limited drops where resellers are the problem: those need a rule that remembers.
Some stores run both. MinMaxify caps the order, OfferGuard caps the buyer.
Related reading
Learn more about OfferGuard
More posts
Referral rewards as Shopify store credit: holds, clawbacks, and limits
Shopify store credit is a better payout for referral rewards than a discount code: it can't be shared, it only spends at your store, and it can be taken back when the referred order is refunded. Here is how it works natively and how OfferGuard's referral program uses it.
Shopify "high risk order": what the flag means and what to do
Shopify marks some orders as high risk of fraud. Here is what the analysis looks at, how to review a flagged order without losing good customers, and how to automate the tag, hold, or cancel so it doesn't sit in your queue.