Skip to content

Creating a BOM

There are two paths to a working BOM. Pick the one that fits your situation.

  • 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

This is what you’ll use the first few times.

  1. Open the BOM list page. From the Assemblified app sidebar, click “Bill of Materials”. This is the list of every BOM in your shop.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

For catalogs of many similar BOMs (e.g., 50 candle scents that share the same wax/wick/jar recipe), use bulk upload.

  1. Open the BOM list page and click “Upload BOMs”.

  2. 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.

  3. Review the dry-run. Before insert, the upload UI shows you what’s about to be created and warns about duplicates or invalid variants.

  4. Confirm. Assemblified creates the BOMs in a batch. The list page revalidates and shows the new entries.

  5. 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.

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.

  • “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.