Bill of Materials (BoM)

A Bill of Materials (BoM) is the structured list of components, sub-assemblies, raw materials, and quantities required to produce one unit of a finished product. It's the recipe the production system uses to translate a finished SKU into the inputs needed to build it.

What a BoM contains

A typical BoM entry includes, for each component:

  • Component SKU or part number
  • Quantity required per finished unit
  • Unit of measure
  • Component cost (rolls up to total unit cost)
  • Supplier reference
  • Lead time for that component

The BoM is what allows a production planner to answer "to make 1,000 units of finished SKU X, what do I need to have on hand?" — instantly, with confidence, and without rebuilding the calculation each time.

Single-level vs. multi-level BoMs

  • Single-level BoM: lists only direct components of the finished product. Sufficient for simple assembled products.
  • Multi-level BoM: shows the full hierarchy — finished product → sub-assemblies → components → raw materials. Necessary for products built from intermediate sub-assemblies (e.g., a kit that contains a pre-assembled module).

Most ecommerce brands work with single-level BoMs unless they're producing electronics, furniture, or other multi-stage assembled goods.

Why BoMs matter for ecommerce

Without a BoM, three problems compound:

  • Production planning is guesswork: the brand can't reliably translate "we want to make 1,000 units" into "here's exactly what to order from each supplier."
  • Costing is inaccurate: per-unit cost is built from component costs; without a BoM, COGS is approximate and margin reporting drifts from reality.
  • CTP is impossible: Capable to Promise calculations depend on a BoM. Without one, the system can't tell whether a new order can be produced on time.

BoMs in Shopify-adjacent operations

Shopify itself doesn't manage BoMs — it tracks finished-goods inventory only. Brands needing BoM functionality typically run a separate manufacturing or inventory system (Katana, MRPeasy, Cin7 Omni, NetSuite) alongside Shopify. The BoM lives in that system, and finished-goods stock counts sync back to Shopify after production runs complete.

Common BoM mistakes

  • Stale BoMs after product changes: a formulation tweak, a packaging change, or a supplier swap that doesn't get reflected in the BoM produces wrong production orders and wrong costing.
  • Missing scrap and yield factors: if 5% of components are unusable due to defects, the BoM should account for it. BoMs that assume 100% yield consistently under-order materials.
  • BoMs without lead time: components have their own lead times. A BoM that lists components without their lead times can't drive accurate production scheduling.
  • Manual BoM in spreadsheets at scale: works for under ~20 SKUs; becomes a chronic source of error and version-control issues beyond that.

Wholesale and B2B order volume raises the stakes on getting this right: a buyer placing a large kitted or made-to-order line item needs accurate committed-cost and lead-time numbers before they'll sign a net-terms PO, which means the BoM has to live in a system that both prices tiered wholesale orders and stays synced to actual production costs — not a spreadsheet a planner updates when they remember to. That's the practical case for pairing Shopify ERP services that keep BoM-driven costing in sync with the storefront with Shopify wholesale and B2B infrastructure that prices and invoices against those real numbers rather than static list prices.

Because Shopify itself has no BoM concept, the practical decision is which system tracks it and how that system’s costing data flows back to the storefront — the tradeoffs across the ERP options that handle this, and what implementation actually involves, are broken down in ERP integration for Shopify.