Need Help: Enforcing "Multiples of 6" per Vendor for Mixed Wine Cases

Hi everyone,

I’m running a wine marketplace on the Shopify Basic plan. Since I am not on Plus, I don’t have access to Shopify Functions for checkout validation, so I need a way to enforce specific rules at the Cart level.

My Requirements:

  1. Mixed Multiples: Customers must buy in multiples of 6 (6, 12, 18, etc.) per order. The 6 bottles can be from different products (mixed cases) per vendor

  2. Per Vendor Restriction: Because this is a marketplace, the “Multiple of 6” rule must apply per vendor. If a customer has 3 bottles from Winemaker A and 3 bottles from Winemaker B, they should be blocked from checking out until they have 6 from each.

The Problem: Most apps I’ve seen only handle multiples of the same product, or a total cart minimum. I need something that reads the Vendor attribute and enforces a “Step/Multiple” of 6 for each group.

Questions:

  • Are there any “Order Limit” apps that successfully work on the Basic plan and can group by Vendor? (I’ve looked at MinMaxify and Limitsify, but I’m unsure if they handle “multiples/steps” for a whole vendor group).

  • If an app can’t do this, has anyone successfully used a JavaScript/Liquid snippet on the cart.liquid page to hide the “Checkout” button unless the counts for each vendor are multiples of 6?

I’m looking for a way to prevent shipping errors without having to manually cancel half my orders. Any advice would be huge!

1 Like

Hi

that would help us so much!!

But to add something to the problem - there are pre mixed cases (tag = case / collection = case) they should not been taken into account because they are cases of 6 or 12. Could they be excluded?

How can we thnak you?

1 Like

Yes, please your help would be m! :star_struck:uch appreciated!

1 Like

Great! How do we start?

1 Like

Usually you can manipulate the quantity selector to show multiples of however many you want. Some themes have the quantity selector within the product-form.liquid file. Some have it in main-product.liquid. Some use a reference to another file. It will typically have a minimum, maximum, and a step (this is the increment). You would set the minimum to 6, and step to 6.

First I would make a duplicate product page template. Name it something like “custom product”.

Next, find out what file holds the quantity selector. Mine is product-form.liquid. I just click on the three dots, click “Edit Code” and start searching. main-product.liquid section renders product-form.liquid snippet. The product-form.liquid has the quantity selector.

Then duplicate the product form file, and name it something else like “custom product form”, then you can find where the file renders the product form. It may be as simple as looking for:

{% render 'product-form' %}

and then add a reference to this new file with something like:

{% if product.template_suffix == 'custom-product' %}
  {% render 'custom-product-form' %}
{% else %}
  {% render 'product-form' %}
{% endif %}

in the main-product.liquid file where it usually renders the regular product form. Here, it sees if my template is “custom product” and renders my custom product form, if not, renders the regular one like normal.

Then in my custom product form, i would change the step only to 6 and test. Assign a product to the new template, and view the live page. Then change the minimum to 6 and test again.

Then you can hide this quantity selector, create a new “cases” input, and add a small script to link them.

It’s not too complicated, just takes some time to know what you’re doing. Ask Sidekick if you need help with the javascript. Then update the cart display. Something like:

{% assign cases = item.quantity | divided_by: 6 %}
{{ cases }} case{% if cases > 1 %}s{% endif %}

Hey @JustGrapes, You can consider another workaround:

  1. Make all products not able to be purchased individually, but only available for bundle purchase. Here’s a guide: Can I hide products but keep them available for purchase / buyable? - BYOB Knowledge Base
  2. Set up collections of products based on each vendor.
  3. Set up custom bundles based on multiples of 6, a custom bundle with tiered discounts can work. Customers must order custom bundles since you have already disabled individual purchases. This is a sample bundle.