Creating a BOM
There are two paths to a working BOM. Pick the one that fits your situation.
On this page
Section titled “On this page”- Path 1: Manual creation (the typical first BOM)
- Path 2: Bulk CSV upload (for catalogs)
- Linking the Shopify product or variant
- Adding components one by one
- Setting initial pre-assembled stock (optional)
- What happens after you click save
Path 1: Manual creation
Section titled “Path 1: Manual creation”This is what you’ll use the first few times.
-
Open the BOM list page. From the Assemblified app sidebar, click “Bill of Materials”. This is the list of every BOM in your shop.
-
Click “Create BOM”. The new-BOM dialog opens. Give the BOM a descriptive name — it shows up everywhere this BOM is referenced. Names can include the variant (“Vanilla candle 8oz”) so they’re unambiguous in pickers.
-
Pick the Shopify product or variant. This is the finished good — what the customer sees and buys. The picker uses Shopify’s resource selector. You can pick a single variant or pick a product and Assemblified will surface the variants for selection.
-
Save the empty BOM. At this point you have a BOM with no components. The status defaults to inactive, which means Shopify orders will skip it. Don’t worry — we’ll flip the switch after components are added.
-
Add components. On the BOM detail page, scroll to “Raw Materials” and “Sub-Assemblies” sections. Click “Add” to attach each component:
- For a Shopify-linked raw material, pick from the Shopify resource selector.
- For a virtual materialVirtual MaterialA material tracked entirely inside Assemblified — not a Shopify variant. Useful for shop-floor consumables (glue, packaging, labour units) where you need quantity tracking but don't want a Shopify product on your storefront. Read more → , pick from the virtual-materials list (or create one first under “Raw Materials → New virtual material”).
- For a sub-assemblySub-AssemblyA reusable assembly block that composes into bigger BOMs. Define it once, include it in any BOM. At execution time, Assemblified expands the sub-assembly into its own components recursively. Read more → , pick from the sub-assemblies list.
For each component, set the quantity per BOM unit (how many you consume to build one finished good) and optionally a waste percentage (a margin for material loss during assembly), location (if this material should always come from a specific Shopify location), and alternatives.
-
Set initial pre-assembled stock (optional). If you have already-built inventory of this BOM, set pre-assembled quantityPre-Assembled InventoryStock of finished sub-assemblies and BOM items that have already been built and are sitting on the shelf. When a work order needs a sub-assembly, it draws from pre-assembled inventory first and only builds fresh ones if the shelf comes up short. Read more → on the detail page. Orders draw from this first.
-
Activate the BOM. Toggle the Status card to “Active”. From this point on, Shopify orders for this finished-good variant will execute the BOM and decrement the right components.
Path 2: Bulk CSV upload
Section titled “Path 2: Bulk CSV upload”For catalogs of many similar BOMs (e.g., 50 candle scents that share the same wax/wick/jar recipe), use bulk upload.
-
Open the BOM list page and click “Upload BOMs”.
-
Provide a CSV matching the documented schema. Each row is one BOM. Columns include the Shopify variant ID, the BOM name, and the list of component variant IDs with quantities.
-
Review the dry-run. Before insert, the upload UI shows you what’s about to be created and warns about duplicates or invalid variants.
-
Confirm. Assemblified creates the BOMs in a batch. The list page revalidates and shows the new entries.
-
Activate them. New BOMs ship as
inactive; flip them on individually or via a BOM container bulk action.
For an even faster path on similar BOMs, see BOM Containers → Bulk operations — pick a “template” BOM and create N siblings whose recipe matches but whose finished-good variants differ.
What happens after you save
Section titled “What happens after you save”A new BOM is inactive by default. While inactive, Shopify orders that include the finished-good variant skip the BOM entirely — no inventory side-effects, no execution log row.
Activating the BOM doesn’t fire anything immediately. The next order that includes the variant will run the BOM through its execution model.
You can edit a BOM’s components or settings at any time, even after activation. Edits apply to the next order — orders already processed are unaffected.
Common gotchas
Section titled “Common gotchas”- “Variant already linked” warning. A variant can only be in one BOM. If you accidentally link to the wrong one, switch the existing BOM’s variant first instead of overriding here.
- Inactive BOM doesn’t fire and doesn’t log. If you’re testing and the execution log is empty, check that the BOM is active.
- Component without a location runs against the shop default. If you have multi-location inventory and a component should always come from “Warehouse B”, set the location on the component reference. Otherwise it pulls from your default location.
- Waste percentage compounds. If a sub-assembly has a 5% waste on its raws, and the parent BOM has a 5% waste on the same raw via a different path, both compound — you’ll consume slightly more than naively expected. See Composition for the precise math.
Where to next
Section titled “Where to next”- Composition — understand exactly what each component type does at execution time.
- Settings reference — every toggle, what it does, defaults.
- Execution model — what happens when an order arrives.