Sub-Assemblies
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 → is a reusable bundle of components. Define it once, drop it into any number of BOMs. When a BOM that contains the sub-assembly executes, the sub-assembly is recursively expanded into its own components.
Sub-assemblies sit between raw materials (the leaves) and BOMs (the finished goods you sell). They have no Shopify variant of their own, so they don’t appear in your storefront — they’re pure recipe.
On this page
Section titled “On this page”- When to use a sub-assembly vs a flat BOM
- How sub-assemblies relate to BOMs and raw materials
- Pre-assembled stock at the sub-assembly level
- Capability snapshot — every page in this section
When to use a sub-assembly
Section titled “When to use a sub-assembly”Reach for a sub-assembly when:
- Multiple BOMs share the same component group. If 20 of your candle BOMs all use the same wick + wax + jar, define a “Candle base” sub-assembly once and reference it in every BOM.
- You build the bundle ahead of orders. A sub-assembly can carry its own pre-assembled stockPre-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 → . Builds you finish ahead of time go on the shelf; the next BOM that needs the sub-assembly draws from the shelf first.
- You want to model a step in your assembly process. Sub-assemblies don’t have to map to a sellable product. They can represent any stage that you complete and stock separately.
- The recipe is shared but the finished product varies. 20 different candle scents share the same physical assembly recipe but have different scent-oil components. A “candle base” sub-assembly + per-scent oil component reduces duplication dramatically.
You don’t need a sub-assembly when each BOM has unique components — flat BOMs are fine.
How sub-assemblies fit in
Section titled “How sub-assemblies fit in”BOM (sells one finished good) ├── Raw material X (qty 2) ├── Sub-assembly Y (qty 1) │ ├── Raw material A (qty 3) │ ├── Raw material B (qty 5) │ └── Sub-assembly Z (qty 1) ← nesting │ └── Raw material C (qty 1) └── Raw material V (qty 1) ← virtual material possible tooWhen the BOM executes, this whole tree is walked, multiplying the parent quantity through each layer.
Pre-assembled at the sub-assembly level
Section titled “Pre-assembled at the sub-assembly level”Sub-assemblies have their own pre-assembled shelves with the same dual-storage as BOMs (an aggregate count + per-location entries). When a parent BOM expands the sub-assembly during execution:
- The sub-assembly’s pre-assembled stock is consumed first.
- Only the remainder pulls the sub-assembly’s own components.
This drawdown is per-layer, recursively. A BOM with two layers of nested sub-assemblies has two opportunities for pre-assembled stock to absorb the requirement before raw materials are touched.
See Sub-Assemblies → Pre-assembled stock.
What you can do with one
Section titled “What you can do with one”Where to next
Section titled “Where to next”- New to sub-assemblies? Read creating a sub-assembly to walk through your first one.
- Already have BOMs and want to factor out shared components? Build the sub-assembly first, then update the BOMs to reference it.
- Curious about cancel/refund behavior? Jump to keep-assembled cascade for the table.