Shopify doesn't have a raw materials inventory. Every quantity it keeps belongs to a product variant you sell, at a location, and there's no place in it for flour, wax, green coffee or empty jars, or for the recipe that connects them to what you sell. The workable answer, until you have software for it, is a sheet beside Shopify: a list of materials with what's on hand, a bill of materials for each product, and a weekly step that exports what Shopify sold and subtracts the materials it used. The method is below with a worked example, then the two Shopify workarounds people try and why each one breaks.
The short version
- List your raw materials, each with a unit and a count.
- Write a bill of materials for each product: how much of each material one unit uses.
- Once a week, export sales by variant from Shopify, multiply by the bill of materials, and subtract.
- Count the materials once a month and correct the sheet.
- Don't create fake Shopify products for ingredients. Use bundles only for kits.
What "raw materials inventory" means
Raw materials inventory is the stock of things you bought in order to turn them into things you sell, counted and valued at what you paid. Flour, sugar, coconut oil, jars, lids, labels. Work in progress is what's part-way through: fried chips in a bulk bin, dough proofing, cured soap. Finished goods are what's ready to sell. All three are inventory on your books, and your accountant will tell you how your return treats them. Shopify sees only the third.
An example, from Windward Roots (the sample business inside the TaroStack app): its raw materials are taro, coconut oil, sea salt, pouches, labels and shipping cases. Its work in progress is bulk fried chips. Its finished goods are pouches of chips in two sizes, which are the Shopify variants.
The sheet
Three tabs. Excel or Google Sheets, either works.
Materials. One row per raw material: name, the unit you count in, on hand, cost per unit, and value
(on hand × cost). This is the tab you correct after each monthly count.
Bill of materials. One row per product-and-material pair: the Shopify variant SKU, the material, and how much of it one unit of the product uses. For Windward Roots' 3 oz pouch of taro chips: 85 g of bulk chips, one pouch, one label, and a twelfth of a shipping case. The bulk chips are made from 25 kg of taro, 4 L of coconut oil and 200 g of salt per 10 kg of chips, so the same row can be written all the way down to raw materials: 212.5 g of taro, 34 ml of oil and 1.7 g of salt per pouch. The 5 oz pouch, at 142 g of chips, is 355 g of taro, 56.8 ml of oil and 2.84 g of salt.
Sales this week. Where you paste Shopify's export: variant SKU and quantity sold. In the Shopify admin, the orders or sales-by-variant report exported as CSV gives you these two columns. If you also sell through Shopify POS, the export already includes it.
Then two formulas. On the bill of materials tab, a "sold this week" column looks up each row's SKU in the sales tab, and a "used" column multiplies:
=IFERROR(VLOOKUP(A2, Sales!A:B, 2, FALSE), 0) sold this week
=C2*D2 used = quantity per unit × sold
On the materials tab, "used this week" adds up every bill-of-materials row for that material, and the new count is the old count less that:
=SUMIF(BOM!B:B, A2, BOM!E:E) used this week
=C2-F2 on hand after
A week, worked through
A week's sales across the online store and the two shops: 600 of the 3 oz pouch and 240 of the 5 oz. The bill of materials turns that into materials used:
| Material | Per 3 oz | Per 5 oz | Used this week | On hand before | On hand after |
|---|---|---|---|---|---|
| Bulk chips | 85 g | 142 g | 85.08 kg | ||
| Taro | 212.5 g | 355 g | 212.7 kg | 300 kg | 87.3 kg |
| Coconut oil | 34 ml | 56.8 ml | 34.0 L | 53 L | 19.0 L |
| Sea salt | 1.7 g | 2.84 g | 1.70 kg | 3.8 kg | 2.10 kg |
| Pouches, 3 oz | 1 | 600 | 700 | 100 | |
| Pouches, 5 oz | 1 | 240 | 624 | 384 | |
| Labels | 1 | 1 | 840 | 3,324 | 2,484 |
| Shipping cases | 1/12 | 1/12 | 70 | 127 | 57 |
The bulk chips line is the check: 600 × 85 g + 240 × 142 g is 51.0 kg + 34.08 kg = 85.08 kg, and 85.08 kg of chips at 25 kg of taro per 10 kg is 212.7 kg of taro. Every other number follows the same way, and a reader with a calculator gets the same answers. (Taro, oil and salt here are the co-packer's stock of Windward Roots' own materials, which is a whole further reason Shopify can't see them.)
Now the sheet has told you something Shopify never could: there are 100 three-ounce pouches left and next week looks like this one. The 5,000 on order land in eleven days. That's the week's real problem, found on Monday rather than on Thursday at the packing table, and it's the reason to keep the sheet even when it's a chore. Reorder point example turns that into a rule.
The two Shopify workarounds, and where they break
Fake products for ingredients. Some people create a Shopify product called "Flour, 50 lb" and adjust its quantity by hand. Shopify will happily sell it, staff can ring it up at POS, it shows in sales reports, and nothing deducts it when bread sells. It's a spreadsheet with extra ways to go wrong.
Bundles. The free Shopify Bundles app works out how many bundles can be sold from the components: "divide the product's total available inventory by the quantity required for the bundle", and the lowest result, rounded down, wins. A component's stock is ignored "if the product's inventory isn't tracked, or if the product is set to Continue selling when out of stock" (Shopify). That's the right tool for a kit of things you already sell, like a three-flavor variety pack. It's the wrong tool for a recipe, because every component has to be a sellable product, there's no yield and no unit conversion, and a component that's also sold on its own, or sits in two bundles, drifts quietly. Shopify's own blog says its core inventory features "focus on quantities" and points you to an app for lots, dates and FEFO (Shopify blog, March 5, 2026).
A manufacturing app from the App Store is the third route. Several exist. Check that it does units (bought by the pail, used in ml), yield, and lot numbers, rather than a component count alone, or you'll rebuild the sheet inside it.
Where this stops working
The weekly step is the hole. Skip it twice and the materials tab is fiction. Stock at a co-packer, market sales rung up outside Shopify, a bulk batch that yielded 9.4 kg instead of 10, and the question "which taro lot went into the pouches Foodland got?" are all outside the sheet, and the last one matters the day a supplier sends a recall notice. Two people editing at once finishes it off. Inventory software vs a spreadsheet is about that day.
How TaroStack does it
In TaroStack the bill of materials is a recipe, with sub-recipes (bulk chips inside a pouch), unit conversion (oil bought by the pail, used by the ml) and a scrap percentage. When a batch is recorded, the materials come out of the lots that expire first and the batch notes which lots it used. The sellable side connects to your Shopify store, which we set up with you; orders arrive by import and a daily check rather than to the second, and the weekly export above becomes something nobody does. "What could I make right now" is answered from the shelf, and reorder points are suggested from how materials actually move. Recipes, batches and production planning are part of Standard, at $99 a month, and it imports the sheet you've built.
