How to build a BOM for handmade products
A bill of materials, or BOM, is the recipe behind a finished product written in a way you can count and cost. It lists every component that goes into one unit, how much of each you use, and in what unit of measure. Makers often keep something like this already, scribbled on a card or held in their head. This guide turns that into a structured BOM: the parts of each line, how it differs from a plain materials list, how to handle units and waste, and how it rolls up from one unit to a full production run.
What a BOM actually is
A BOM answers one question precisely: to make one of these, exactly what do I consume, and how much? For a soy candle that might be 170 grams of wax, 17 grams of fragrance, one wick, and one jar. For a bar of soap it might be several oils, lye, water, and a fragrance. The BOM is tied to a single finished product and describes the ingredients of one unit of it.
That precision is what separates a BOM from a shopping list. A BOM is not "the stuff I buy." It is "the stuff that goes into this one thing, in these amounts." Once you have it, everything downstream becomes arithmetic instead of guesswork: what a unit costs, what a batch consumes, what to reorder.
BOM versus a plain materials list
These two get confused because they share the same materials, but they answer different questions.
- A materials list is your inventory of inputs. It is everything you buy: wax, three fragrances, wicks, jars, labels. It says nothing about how much of each goes into any particular product. It is a catalog.
- A BOM ties specific quantities of those materials to one finished product. It says this lavender candle uses these materials, in these amounts, and nothing else.
Put another way, you have one materials list for your whole workshop, and a separate BOM for every product you sell. The lavender candle and the cedar candle draw from the same materials list but have different BOMs, because they use different fragrances and possibly different jars. The materials list is the shared pantry. Each BOM is one recipe that reaches into it.
The parts of a BOM line
Each line in a BOM is one component and carries a few fields. Keeping all of them is what makes the BOM cost itself correctly later.
- Component. The material or part, named the same way it appears on your materials list, so the two connect cleanly.
- Quantity. How much of that component one unit consumes.
- Unit of measure. The unit the quantity is expressed in: grams, milliliters, pieces, inches. This has to be a unit you can measure while making, not the unit you bought in.
- Unit cost. What one unit of measure of that component costs you, for example the price per gram or per piece.
- Line cost. Quantity times unit cost. This is what that one component contributes to the cost of one finished unit.
The line cost is where the BOM starts to earn its keep. Sum the line costs and you have the material cost of one unit. The full costing method, including margin and markup, is covered in calculating COGS for handmade products; here the focus is the structure that feeds it.
A worked example BOM
Here is a complete BOM for one 8 ounce soy candle. The prices are example numbers; substitute your own.
| Component | Quantity | Unit | Unit cost | Line cost |
|---|---|---|---|---|
| Soy wax | 170 | g | $0.00416 per g | $0.71 |
| Fragrance oil | 17 | g | $0.0551 per g | $0.94 |
| Wick | 1 | piece | $0.06 each | $0.06 |
| Jar | 1 | piece | $1.25 each | $1.25 |
| Label | 1 | piece | $0.09 each | $0.09 |
| Total per unit | $3.05 |
Five lines, one number at the bottom. That $3.05 is the material cost of one candle, built up from components rather than estimated. Change any quantity or any unit cost and the total moves in a way you can trace, because every line shows its own contribution.
Units and conversions
The most common BOM mistake is measuring in the unit you bought in rather than the unit you use in. You buy wax by the pound or the case, but you use it by the gram. If the BOM says "170" and you never resolve which unit that is, the cost is meaningless.
The rule is simple: express each quantity in the unit you actually measure at the bench, then make sure the unit cost is in that same unit. If you buy a 45 pound case of wax and use grams, convert the case price to a price per gram once, and store that. One pound is 453.6 grams, so a 45 pound case is 20,412 grams, and an $85 case is about $0.00416 per gram. Do that conversion a single time per material and the BOM stays in the units you work in.
Two conversions catch people repeatedly:
- Weight versus volume. Oils are sometimes sold by fluid ounce (volume) and sometimes by weight ounce. They are not interchangeable, so confirm which one the label means before you compute a per gram price.
- Metric versus imperial. Overseas suppliers often quote kilograms. One kilogram is about 2.2 pounds, and mixing the two throws a cost off by more than double.
Waste and yield allowance
A BOM should describe what a unit really consumes, not the ideal on paper. In practice some material is lost: wax clinging to the melting pot, a trimmed wick, a soap batch that never yields quite what the math promises. If you consistently get 38 usable candles out of wax you planned to make 40 with, your true wax per unit is higher than the clean recipe number.
You can handle this two ways. Add a small waste percentage to the affected component quantities, for example bumping wax by 5 percent to cover pot loss. Or set the BOM against realized yield, dividing a batch's total material by the number of good units it actually produced. Either keeps the per unit cost honest instead of optimistic.
Sub-assemblies
Some products are built from a part you make in advance. If you pour a scent blend, or premix a soap base, that intermediate is a sub-assembly: it has its own small BOM (the raw materials that go into it), and it then appears as a single component in the finished product's BOM.
This keeps each BOM readable. The candle's BOM can list "scent blend, 17 g" as one line, while the scent blend has its own BOM behind it. Cost rolls up the same way at each level: the sub-assembly's line costs give its own per unit cost, which becomes the unit cost of that line in the product above it.
Rolling up to a production run
The point of a per unit BOM is that a batch is just multiplication. To make 40 candles, every component quantity scales by 40: 40 times 170 grams of wax is 6,800 grams, 40 wicks, 40 jars, and so on. Your material inventory counts down by exactly those amounts, and your finished goods count up by 40.
This is the link that turns a BOM into inventory control. The same recipe that prices one unit also tells you what a run consumes, so a logged production run can decrement each raw material and increment finished stock automatically. Handmade sellers usually track finished products in their Shopify catalog but keep raw materials outside it, which is exactly the gap a BOM bridges.
Keeping a BOM for every product is one of the jobs Madestock, the Shopify app for makers we are building, is designed for. It stores a recipe for each product, holds raw materials outside your Shopify catalog, logs production runs so materials count down and finished goods count up, and rolls the component costs up into a live cost per unit you can verify by hand. Pricing is flat. However you keep it, writing a real BOM for your top few products, with units resolved and waste accounted for, is the step that makes both your costs and your counts trustworthy.