The app Material Manager can help with this. It allows you to enter raw materials and then set your variants to use different amounts of the raw material. When a variant is sold it updates the raw material quantity which in turn updates the inventory for every variant linked to that material.
For your example you would create a raw material called “Product A”. You would link your variant “Product A” to it, setting it to use 1 of the raw material. Then you would link “Product B”, setting it to use 2 of the raw material.
When either product is sold it would update the inventory for both in the way you describe in your scenario.
The Easify Inventory Sync app can help with your inventory management needs . It allows you to easily create a Bundle group to link Product A and Product B:
Product A (1 unit): This is your Component (base) product, reflecting the total actual inventory in single units. Set its Quantity per bundle to 2.
Product B (pack of 2): This is your Master product.
Once you set up the Bundle group, here’s what you can expect:
The quantity of Product B will be automatically calculated based on the quantity of Product A.
When Product A is purchased, the quantity of Product B will be updated according to the remaining quantity of Product A.
Conversely, when Product B is purchased, the quantity of Product A will decrease by 2.
The app will ensure that your inventory is tracked accurately as needed.
If you’d like to try the app or need assistance with setup, just let me know or reach out to the Easify team for quick help and guidance.
Joe’s answer above is the right shape — treat Product A as the base unit, link the 2-pack to it at a ratio of 2, and let both sides derive from one number. Worth adding the bit your post implies but nobody’s picked up on: you’re selling across several channels, and that changes which app actually works for you.
The reason is that other sales channels read Shopify’s inventory level. They don’t read anything held inside an app’s own dashboard. So the question to put to any vendor here is:
Does it write the derived pack quantity back to Shopify’s inventory level, or only display it in-app? Some apps in this category deliberately avoid touching native inventory — which is a reasonable design choice, and fine for a single storefront, but it means your other channels never see the pack count move. For your setup that’s the difference between the app solving the problem and quietly not solving it.
Three more worth asking:
Does it floor or round the derived figure? Your example has it right — 7 units of A should show 3 packs, not 4. Sounds obvious, and it’s still worth confirming rather than discovering it on an oversell.
Order placed or fulfilment? Whichever it is, you want it consistent across channels so the numbers don’t drift.
How fast does the recalculation run, and what happens during the lag? A pack selling on one channel has to move A, then move the pack count everywhere else. There’s always a window. Ask how wide it is and whether anything guards it — this is where multichannel setups actually oversell, not in the maths.
Great scenario and very well explained. This is exactly the kind of inventory logic Nventory is built for.
Here’s what happens when you set this up in Nventory:
Component-level inventory tracking
You define Product A as the base unit. Product B is set as a bundle consuming 2 units of Product A. Nventory does the math automatically - 7 units of A means 3 packs of B available. Always calculated in real time, never manually.
Bidirectional sync
Sell a pack of B - Product A drops to 5, Product B recalculates to 2. Sell a single A Product A drops to 4, Product B updates to 2. Every transaction on either product instantly updates both. No lag, no manual reconciliation.
Cross-channel accuracy
You mentioned selling across various channels - this is where most tools fall short. Nventory syncs the same component logic across every connected channel simultaneously. A sale of Product B on Amazon updates Product A’s availability on Shopify, eBay, and your website in seconds. Not minutes. Seconds.
Oversell prevention
The moment either product hits zero the listings pause automatically across every channel. No cancellation emails. No disappointed customers.
AI automation on top
Set rules in plain English “alert me when Product A drops below 10 units” or “pause both listings when stock hits zero.” The AI builds the workflow automatically. No code needed.