Topic: Preventing overselling by linking variant sizes (50g, 250g) to a shared 1kg raw material and updating availability at add-to-cart, not just after purchase.
Problem: Current bundle/raw-material apps correctly deduct stock after checkout, but do not adjust raw material availability while items sit in the cart. This allows mixing sizes (e.g., 4×250g + 5×50g) to exceed the 1kg component.
Constraints:
Several replies cite a Shopify limitation: inventory is typically adjusted only after an order is placed; true cart “holding” is not supported.
Proposed approaches:
Build a custom solution rather than relying on off‑the‑shelf apps.
Try inventory/bundle apps: Prediko, Materials Inventory, Easify Inventory Sync (post‑order sync + low‑stock alerts), Assemblified (component-based syncing on sale; no cart hold, ~$6/month). Forecasting via Logistified.
Latest suggestion: Model 1kg as a base SKU and use a bundle app with custom inventory rules that recalculate availability on add-to-cart; search for apps with “real-time components reservation.”
Status: No confirmed app that reserves components at add-to-cart. Workarounds minimize overselling; a custom build may be required. Discussion unresolved.
Summarized with AI on December 11.
AI used: gpt-5.
I’m wondering if anyone has had a similar situation to mine.
I sell food items that come in various quantities (50g and 250g). I purchase my stock in 1kg bags. When someone purchases either size variant, I need the other size variant quantity to reduce in line with the raw material availability.
I have trialled multiple bundle and raw material inventory apps with some success - I have managed to link the variants to the raw materials available and have the quantities successfully reduce after each purchase. What none of the apps seem to be able to do, however, is adjust the raw materials available after the items are added to the cart but before purchase. For example, I have 1 kg of raw materials available and a customer adds 4 x 250g packs to their cart. If they go on to place the order, the inventory will adjust and the next customer will be prevented from ordering any 250g or 50g packs as the raw material stock is now zero. If, however, the customer adds the 4 x 250g packs to their cart and tries to add a 5th, the system will say there is only a maximum of 4 available and prevent them adding more. Yet they can go back to the product page and select the 50g variant and the system will allow them to order 5 x 50g. When they complete the purchase, I have now sold 4 x 250g and 5 x 50g on one order, so a total of 1.25kg when I only have 1kg available.
Are there any apps out there that will adjust the quantity of raw materials available (therefore the item quantities available across connected variants) after an item is added to cart, rather than after a purchase is processed? I find it hard to believe that there aren’t many stores that have faced a similar scenario as it doesn’t seem to be a unique situation.
I understand your requirements, but there are some limitations with Shopify that make it difficult to fulfill them directly. Inventory adjustments can only be made after an order has been placed.
To help minimize this issue, you can consider using the Easify Inventory Sync app. In addition to its main function of linking your variants (50g, 250g) with the base inventory (e.g.: 1kg) and automatically adjusting inventory after an order is placed, it also has an Inventory Threshold feature. This allows you to set low inventory notifications, so you can stay informed and plan to restock before running low, helping you avoid the issues you mentioned .
I noticed your post and this is exactly the use case we built our app Assemblified for. It allows you to define your 1kg raw material as a base component and link it to your 50g and 250g variants.
Whenever a product is sold, Assemblified automatically updates the raw material stock and instantly recalculates the availability for all other linked variants. While “holding” stock strictly in the cart is a general Shopify limitation, our app ensures your backend inventory and availability are always perfectly synced to prevent overselling as much as possible.
We are very competitively priced, starting at just $6/month.
Also, if you want to look ahead, you can combine it with our other app, Logistified. This allows you to forecast exactly when your raw materials (the 1kg bags) will run out of stock based on your sales history.
If you need any help setting this up or have questions about the logic, feel free to reach out to me or our support directly!
You can do this by having 1 base SKU for the 1kg raw material and treat each variant as a fraction of that SKU. In your bundle app there should be a custom inventory rule that recalculates availability on add-to-cart, not on purchase. search for apps with real-time components reservation.
Hi JenWW_850,I totally get the frustration — mixing different sizes (like 4×250g + 5×50g) in the cart can easily exceed the shared 1kg raw material if only post-purchase deduction is used. That’s a classic overselling gap in most bundle/raw-material apps.You’re right that Shopify doesn’t natively support true “cart-level reservation” for components (inventory adjustments typically happen only after order creation/paid). Pre-reserving at add-to-cart would require heavy custom code or risky workarounds.That said, my app Soply – Bundle Inventory Validator solves this exact problem without needing cart-level holds or modifying native stock at all.Here’s how it works:
We use derived validation (real-time calculation from raw materials/components) to check availability at checkout (not just after purchase).
If the cart combination would exceed available raw material (e.g., total consumption > 1kg), the order is blocked right there with a clear error message (“Insufficient inventory for one or more items”).
No changes to Shopify’s native inventory levels — zero risk to ERP, WMS, 3PL sync, or fulfillment workflows.
Supports multi-location rules, mixed bundle/raw material modes, and soft/hard oversell tagging if you want fallback options.
In your example (variant sizes linked to shared 1kg raw material), Soply would let items sit in the cart freely, but prevent checkout if the total exceeds availability — effectively stopping the oversell before it happens.It’s not “pre-reservation” in the traditional sense, but it achieves the same end goal: no oversold orders, no manual cancellations, no angry customers.If you’re interested, you can check it out here: https://apps.shopify.com/soply-virtual-inventory
(We’re a very new app, so any honest feedback or questions are super welcome!)Happy to answer more details or walk through a quick setup if it fits your use case.Best,
Founder, Soply