A bill of materialsBill of MaterialsA bill of materials tells Assemblified how to build one unit of a finished good. When a customer orders the finished-good variant, Assemblified deducts the right component quantities from inventory automatically.
Read more →
tells Assemblified how to build one unit of a finished good. When a customer orders the finished-good variant, Assemblified deducts the right component quantities from inventory automatically — across raw materialsRaw materialThe atomic component of a BOM or sub-assembly. Two flavors: a Shopify-linked variant (inventory tracked in Shopify) or a virtual material (DO-side inventory only). Both kinds appear in the same component picker and are consumed identically when a BOM fires — except virtual materials never trigger a Shopify call.
Read more →
, sub-assembliesSub-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 →
, and virtual materialsVirtual 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 →
. No manual bookkeeping; no spreadsheet at the end of the day.
A BOM is the recipe. The executionBOM executionThe pipeline that runs when a Shopify order containing a BOM-bound variant is created, edited, cancelled, or refunded. Webhook → queue → DO handler → Shopify inventory adjustment, plus pre-assembled drawdown, sub-assembly recursion, and dynamic adjustment cascade. Every run writes one execution log row.
Read more →
is what happens when an order arrives. The two are separate concepts: you set up a recipe once, and Assemblified runs it for every order from that point on.
You sell a Shopify product that’s assembled from components (a candle from wax, wick, jar, label; a kit from individual SKUs).
You want automatic inventory deductions the moment a customer orders, without anyone in the warehouse touching a spreadsheet.
You need dynamic adjustmentDynamic adjustmentA per-BOM toggle that recalculates the BOM's Shopify-displayed quantity from current component availability after every order. The displayed quantity is the bottleneck-resource count plus pre-assembled stock — your storefront never sells more than you can build.
Read more →
— your Shopify product page should never sell more than you can build.
You manage pre-built stock (pre-assembled inventoryPre-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 →
) and want orders to draw from it first.
If instead you’re tracking a multi-step physical build that needs picks, QC, and a paper trail, that’s a job for Work Orders, not a BOM. BOMs are for the order-driven case; work orders are for the assemble-bench case.
A BOM has one finished good (a Shopify product/variant) and a list of components. Components come in three kinds — four if you count nesting:
Shopify-linked raw materials
A real Shopify variant tracked in Shopify inventory. When the BOM fires, Assemblified writes inventory adjustments through the Shopify Admin API.
Virtual materials
Internal to Assemblified — no Shopify variant. Use for consumables (tape, glue, screws) you don’t want in your Shopify catalog.
Sub-assemblies
Reusable component bundles. Define once; embed in any BOM. They expand recursively at execution time.
Other BOMs (BOM-as-raw)
A finished-good variant from another BOM can be referenced as a raw material. Useful for catalogs where one product becomes a component of another.
See Composition for the full mechanics, including waste percentageEffective QuantityThe quantity actually consumed by the work order, after operator overrides. Starts equal to the original BOM quantity, but can be adjusted up or down per material as plans change. The effective quantity is what the pick list and cost calculations use.
Read more →
and alternative items.
Create a BOMTwo paths: pick a Shopify variant and add components manually, or upload a CSV. Walkthrough of every field.
Composition deep diveThe four component types in detail — quantity, waste %, alternatives, locations, BOM-as-raw.
Settings referenceEvery per-BOM toggle in one place: status, dynamic adjustment, maintain inventory level, keep assembled, only sell pre-assembled, auto-generate.
Execution modelWhat happens from the moment a Shopify order is placed to the inventory adjustment hitting Shopify. Pre-fulfillment vs post-fulfillment, multi-location, the audit log.
Pre-assembled inventoryThe shelf of pre-built stock that orders draw from first. Manual adjustment, drawdown semantics, the only-sell-preassembled mode.
Refunds & cancellationsThe Keep Assembled on Return setting and how it cascades through nested sub-assemblies. Partial vs full refunds.
Dynamic adjustmentHow Assemblified recomputes your displayed Shopify quantity from current component availability after every order.
You’ll see these terms throughout the BOM section. Hover any of them anywhere in these docs for a quick definition, or jump to the glossary.
A BOMBill of MaterialsA bill of materials tells Assemblified how to build one unit of a finished good. When a customer orders the finished-good variant, Assemblified deducts the right component quantities from inventory automatically.
Read more →
binds a Shopify variant to a recipe of raw materialsRaw materialThe atomic component of a BOM or sub-assembly. Two flavors: a Shopify-linked variant (inventory tracked in Shopify) or a virtual material (DO-side inventory only). Both kinds appear in the same component picker and are consumed identically when a BOM fires — except virtual materials never trigger a Shopify call.
Read more →
and sub-assembliesSub-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 →
.
Pre-assembled inventoryPre-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 →
is finished stock built ahead of orders. Orders consume from this shelf first.
Dynamic adjustmentDynamic adjustmentA per-BOM toggle that recalculates the BOM's Shopify-displayed quantity from current component availability after every order. The displayed quantity is the bottleneck-resource count plus pre-assembled stock — your storefront never sells more than you can build.
Read more →
recalculates your Shopify-displayed quantity from current component availability after every order.
Maintain inventory levelMaintain inventory levelA per-BOM toggle that keeps the Shopify-displayed BOM quantity flat after orders. After execution, Assemblified pushes a positive delta back to the BOM variant equal to what was consumed. Components still decrement underneath — only the displayed quantity is replenished. Mutually exclusive with dynamic adjustment.
Read more →
is the inverse — keep the displayed quantity flat by replenishing from raws.
Keep Assembled on ReturnKeep Assembled on ReturnA toggle on BOMs and sub-assemblies that controls cancel/refund behavior. When on, returned units restore the entity's pre-assembled shelf instead of breaking back into raws. Cascades through nested sub-assemblies — traversal halts at any node with the flag set.
Read more →
controls what happens on cancel: do components break back down into raws, or do finished units restore to the pre-assembled shelf?
The execution logBOM execution logThe audit trail for one BOM execution — one row per order webhook → DO → Shopify cycle. Captures webhook receipt timestamps, queue lifecycle, DO execution, BOM processing metadata, calculated material changes, Shopify sync status, dynamic-adjustment results, refund history, and pre-assembled consumption. Surfaced in the BOM detail page.
Read more →
is the audit trail — every order writes one row capturing the full webhook → inventory pipeline.