Why won't Shopify let me track one raw material shared across multiple products?

Shopify tracks inventory per variant, with no built-in way for one raw material to feed several finished products — here's how merchants actually model it.

inventorymanufacturingbill-of-materialsproduct-structure

What's going on

I make several products out of the same raw material — the same fabric bolt used for three different shirt styles, the same wax and wick used across a dozen candle scents, the same hardware part in five different bracelet designs. Shopify tracks inventory per product variant, so each finished product has its own quantity in stock number that has nothing to do with how much of the actual material I have left. I can sell out of raw wax while three different candle listings still show 12 in stock, because Shopify has no idea they're all drawing from the same pool.

Every time I restock, I have to go through and manually recalculate what each finished product's real availability should be, and it's easy to oversell one style because I forgot to update it after fulfilling orders for another. Is there any real way to tell Shopify that these five products all share this one input so stock updates automatically, or do I just have to keep doing this by hand forever?

Why it happens

Shopify's inventory system is built entirely around the sellable unit: every variant of every product gets its own quantity field at each location, and that number only changes when an order, adjustment, or transfer touches that specific variant directly. There's no native relationship where selling one variant also decrements another, or where several variants all draw down a single shared record — the data model has no separate raw-material or component object distinct from a sellable product.

This gap hits hardest for makers and small manufacturers whose finished goods share upstream inputs like fabric, resin, scent oils, hardware, or packaging, because Shopify was designed first for retailers reselling discrete finished units, not for businesses converting shared stock into multiple end products. Shopify's own bundle tooling gets close — a bundle's availability is calculated from its components' stock — but it's built for bundling already-sellable products together at checkout, not for modeling a raw material consumed in different ratios by unrelated product lines.

4 ways to fix it

1

Track raw materials as their own unpublished product (free, works today)

Create a product for each shared material — a fabric bolt, a wax and wick blend, a hardware part — keep it as a draft or unpublished from all sales channels, and track its quantity like any other inventory item at the location where it's stored. You won't get automatic deductions when a finished good sells, but you get one authoritative number for how much raw material is left instead of guessing from finished-product counts. Pair it with a habit: every time you log a production run, manually adjust the raw material quantity down and the finished products' quantities up. It's manual, but it's free, uses only native Shopify inventory, and stays accurate as long as someone does the bookkeeping.

2

Use Shopify's native inventory adjustments to model a production step

Shopify's built-in inventory tools — quantity adjustments, location-to-location transfers, and inventory CSV export/import — let you treat a raw-material location and a finished-goods location as two separate buckets, and move stock between them whenever you run a production batch. You still have to calculate consumption yourself (say, one yard of fabric makes three shirts), but everything stays inside Shopify's own admin with no added subscription, and you get a running record of the adjustments over time.

3

Move to a dedicated manufacturing or inventory app with bill-of-materials support

If this happens every week, look at inventory apps built specifically for makers and small manufacturers — Katana Cloud Inventory, Craftybase, MRPeasy, Cin7, and Finale Inventory are names that regularly come up for Shopify sellers with shared components. These let you define a bill of materials: one raw-material record consumed by many finished SKUs, with stock deducted from the shared component automatically whenever any of those SKUs sell, plus low-stock alerts on the material itself rather than on each downstream product. It's the closest thing to a real fix, but it's a recurring subscription and a genuine operational change, not something you install and forget.

4

For developers: build it on Shopify's inventory APIs rather than faking it with variants

If you or a developer you work with are comfortable building custom tooling, Shopify's Admin API exposes inventory items and inventory levels along with mutations for adjusting stock, which is enough to model a shared raw material directly: one inventory record representing the material, plus order-created webhooks that calculate consumption and adjust that shared record whenever any linked product sells. This is real engineering work — it's roughly the same logic the bill-of-materials apps run internally — so it's usually only worth it when off-the-shelf manufacturing apps don't match your specific recipe or consumption logic.

Bottom line

There is no native concept of a shared raw material in Shopify — every product and variant tracks its own independent quantity, full stop. For a small operation, tracking the material as its own unpublished product and adjusting quantities by hand is a legitimate, free way to start. Once you're running real production batches on a regular basis, a dedicated manufacturing or bill-of-materials inventory app is genuinely the right tool rather than a nice-to-have — this is a category where a general-purpose Shopify app, including anything in BesPoP's lineup, isn't the right fit, since it calls for ongoing production and recipe logic rather than a one-time setup.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.