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 bill of materials or an assembly bill. Two flavours: a Shopify-linked variant, whose inventory Shopify tracks, or a virtual material, which Assemblified tracks on its own and Shopify never sees. Both sit in the same component picker and are consumed the same way.
Read more →
, assembly billsSub-assemblyA reusable assembly block that composes into bigger bills: define it once, include it in any bill of materials, and Assemblified expands it into its own components at execution time. The app now calls it an assembly bill.
Read more →
(also called sub-assemblies), 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 executionEverything Assemblified does when a Shopify order containing a bill-bound variant is created, edited, cancelled or refunded: draw down pre-assembled stock, deduct or restore components, push the changes to Shopify, and cascade dynamic adjustment. It runs in the background, writing 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-bill toggle that recalculates the bill's Shopify-displayed quantity after every order: the bottleneck-resource count plus pre-assembled stock. One of three mutually exclusive toggles — switching it on switches only-sell-pre-assembled and maintain inventory level off.
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 goods and assembly bills already built and on the shelf, counted per location. A work order draws assembly bills from the shelf first, building fresh only if it runs short; an order consumes a finished good's shelf before its components.
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 deliberate-build 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.
Assembly bills (sub-assemblies)
Reusable component bundles. Define once; embed in any BOM. They expand recursively at execution time.
The app nav calls them Assembly Bills and gives them their own list page; inside a bill of
materials the older word sub-assembly is still what you will read on the card and in the
component picker. Same thing, two names.
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 percentagePlanned quantityHow much of a material a work order intends to consume: the bill's quantity, editable per material in the Planned column but never below what has already been consumed. Pick lists and Adjusted cost read it. "Effective quantity" is the older name.
Read more →
and per-component locations.
Click Bill of Materials in the Assemblified navigation. The page is titled Finished goods and
it’s one table of every BOM in your shop. A few things worth knowing before you start:
The counters at the top. Four numbers — Inactive, Not linked, Low margin and Low
stock — each of which filters the table down to exactly those BOMs when you click it.
Views. Along the top is a row of views. Three are built in: All (identity, status, what
Shopify sells, what could be built, pre-assembled stock, cost and composition), Inventory (what Shopify sells,
pre-assembled stock, max buildable and the bottleneck — the pre-assembled number is highlighted
where it disagrees with Shopify) and Settings (status and every per-BOM setting side by side,
plus the location-rule count). Set up a search, some filters and a column layout you use often,
then Save as new view and it becomes a tab of its own. You can rename a view, set one as your
default, or reset it back; the three built-in ones can’t be changed. Your default view is the one
that opens whenever you come back to the page, and it’s marked with a star in the row of views. The
same menu offers Remove as default when you want the page to open on All again.
Search and filters. The search box matches the BOM name, the Shopify product and variant name,
the SKU and the description. Add filter builds precise conditions — status, tags, margin,
pre-assembled stock, whether the BOM is linked to Shopify, each of the settings, and more. Every
filter you add becomes a chip you can edit or remove, with Clear all to start over.
Columns.Display options opens the column picker: show, hide, pin and reorder any column.
Cost, margin, pre-assembled, max buildable, bottleneck and 30-day usage are all available.
Bottleneck. The component that actually caps Max buildable, wherever it sits in the recipe.
Waste is counted, pre-assembled sub-assembly stock is used up first, and non-essential materials
are ignored. A material inside a sub-assembly is named with that sub-assembly shown underneath it;
when a sub-assembly is set to consume pre-assembled units only, its shelf itself can be the
bottleneck. Hover the cell to see how much is on hand and how much more you would need for one
extra unit; with several locations, the popover names the bottleneck at each one.
Locations. If you run multiple locations, the location control in the toolbar narrows the
quantity columns to the locations you pick. It’s a scope, not a filter — it changes what the
numbers mean, not which rows you see.
Doing something to many at once. Select a few rows, a page, or every result your search and
filters match. The bulk action hub brings recipe edits, settings, stock,
costs, maintenance and exports together over that selection.
Seeing several as one graph.Open structure in that same bar draws every ticked BOM on one
canvas, with shared materials pooled into a single node, so you can see what a whole group of
finished goods consumes. Up to 50 at a time; select more and the page says so rather than drawing
part of your selection. See Structure panel.
One row at a time. Hover a row and its More actions (⋯) menu on the right offers
Quick assemble, Duplicate, Adjust pre-assembled, Add to group, Pick list,
Shortage report and Delete. Quick assemble opens the same dialog as the bulk bar’s, for
that one BOM; it and Adjust pre-assembled are unavailable for a BOM with no Shopify variant.
To have it one click away on every row, add the Assemble column to your view: in Display
options it is listed under Inventory. Clicking the name opens the detail page.
Everything else sits in the page’s title bar. Create opens the create dialog, Export
opens the exporter, and More actions holds Import from CSV/XLSX, Import from
bundles.app, Manage groups and Create in bulk. The two maintenance runs (refresh variant
info, validate and repair) are not here — they live in the bulk bar, which can select every row
your filters match and so already covers the whole shop.
The Finished goods list is a place to act on your range as well as browse it. Search and filter to
find the right BOMs, select them, then choose from the bulk action bar:
Menu
What you can do with the selection
Edit
Edit materials across BOMs, update tags and add bills to a group.
BOM settings
Activate or deactivate bills, change inventory behavior and apply location rules.
Inventory
Quick assemble (also in a row’s ⋯ menu), create or release safety-stock reservations, reconcile pre-assembled stock and sync with raw materials.
Cost
Add cost factors, and sync the calculated cost to Shopify.
Maintenance
Refresh variant information, validate and repair bills, and save recipe versions.
Integrations
Reach Logistified and Alertified actions when those connections are enabled.
Export
Export BOM data, a pick list or a shortage report.
Open structure shows selected bills together, with shared materials pooled on one canvas.
Delete sits after the other actions and always starts with a preview. Some actions require
Enhanced or a shop setting; the relevant control names the requirement.
To create a new range, choose More actions → Create in bulk in the page header. The
bulk builder combines a component grid, reusable rules
and saved sessions. It creates new BOMs; use Edit → Edit materials to work on existing recipes.
Delete never acts on the spot. It first checks what depends on the selected BOMs and shows you
the answer in three parts before asking you to confirm:
What will be deleted. The number of BOMs, then everything that goes with them: components,
assembly bill references, cost-factor links, pre-assembled units, per-location rules, Logistified
sync history and so on. A line only appears when there is something to count.
Blocked BOMs. A table naming every BOM that cannot be deleted, why (an open work order, an
unreversed work-order push, an active safety-stock reservation, an open order that still holds
stock) and where to go to clear it. Blocked rows are simply left out; the rest are still deleted.
Other effects. What changes elsewhere: Shopify tags and the variant metafield, alerts, the
multi-store link, and notes such as dynamic adjustment stopping for the product.
Where a blocker can be cleared for you, a checkbox offers it: detach from the work orders,
release the reservations first, and, for BOMs whose orders were synced to Logistified, also
remove the synced orders from Logistified. That last one is a choice, never automatic. Untick it
and the retrospective orders stay in Logistified.
If some rows fail, the dialog stays open and names them, and Retry the failed rows aims only at
those. Deleting cannot be undone.
Clicking a BOM’s name opens its detail page. Everything about that one finished good lives here, in
one full-width column with a row of tabs across the top. There is no sidebar: every fact belongs to
one of the tabs.
The tabs, in order:
Tab
What it holds
Overview
What the bill is: the Shopify link and status, its name and notes, stock per location, the cost and margin, and a preview of its structure.
Materials
What the bill is made of: raw materials, assembly bills, additional costs.
Locations
Per-location rules. Only shown if your shop runs multi-location adjustments.
Reservations
Safety-stock reservations for this bill.
Settings
The per-BOM switches, and the alert thresholds.
History
The stock ledger for this bill’s Shopify variant.
Versions
Saved copies of the recipe.
The title bar holds the actions. Pre-manufacture is the primary one — see Overview
tab below. Behind More actions sit Open in Shopify (only when the bill is
linked), Open editor (the full-screen structure canvas) and Delete. Ask AI opens the
assistant with this bill already in view.
Shopify Integration. The product and variant this bill is bound to, with its image, SKU, price,
the cost Shopify holds, the unit cost Assemblified calculated, the difference between the two and
the margin. The BOM’s Status switch (active or inactive) is here, next to a badge showing the
current state — it is part of the page’s form, so flipping it arms the Save bar rather than
applying on the spot. The card’s menu links, changes or unlinks the variant; on an unlinked bill it
is a single Link button instead.
Basic information. Name, description and notes. A form: change one and a Save/Discard bar
appears at the bottom of the screen. Nothing is written until you press Save, and Assemblified
will stop you navigating away with unsaved changes.
Stock by location. One row per location with what Shopify currently shows as available, the
pre-assembled count, how many can be built from components on hand, and which component
runs out first (wherever it sits in the recipe, assembly bills included). Click the pencil on a
row to adjust that location’s pre-assembled figure — a correction that records what’s on the shelf
and pushes the number to Shopify without consuming any components. Reconcile… is the other
action here, for when the shelf and Shopify disagree.
Financial breakdown. What the bill costs to build and what margin it earns.
Structure. A read-only preview of the component graph. Its Open action takes you to the
full canvas, where the same recipe can be edited as a graph (Structure
panel).
Pre-manufacture, the title-bar action, is the counterpart to the pencil above, and it is the one
that does consume: it builds units from the recipe, deducts the components, and adds the result to
the pre-assembled shelf. It can also run in reverse to disassemble finished units back into
components, or save the run as a draft work order if you’d rather plan the batch than build it
now. Everything it shows — the shelf, the recipe, whether a location rule switches the bill off there
— is read for the location you pick in it.
Raw materials. One row per component, with its availability, the quantity you consume per
finished unit, a waste percentage, its unit cost, the row total, and a Location
override. Quantity, waste and the override are edited straight in the table; the ⓘ on the
Location override header explains which fallback applies when you leave a row blank. Select rows
with the checkboxes to change or clear several at once. Add materials in the heading offers four
sources: Shopify materials, Virtual materials, New virtual material (creates one without
leaving the page) and Import from CSV/XLSX (adds components to this bill from a spreadsheet).
Assembly bills. The sub-assemblies this bill embeds, with the quantity of each and how many of
each are currently buildable.
Additional costs. Cost factors attached to this bill — labour, packaging, overhead. Requires the
Enhanced plan. See Cost factors.
A warning banner appears above these cards when a material has no usable location: no location set
and no default configured, not stocked at the default location, or a location rule pointing at a
location your store no longer has. Building the bill can fail while that is true.
Edits here are part of the same form as the Overview tab’s identity fields: one Save/Discard bar,
one save.
Per-location rules — running a bill differently at one location than at another, including its cost
there. This tab only appears while your shop has multi-location adjustments switched on; without
that setting a per-location rule cannot be written at all, so the tab is absent rather than greyed
out. Full reference: Location rules.
If you switch the setting off after writing rules, the rules are not deleted — the Settings tab shows
a banner saying they are configured but inactive, so you can go and clear them.
Safety-stock reservations — raw materials held back at a location so a fixed number of units stays
buildable on demand. Each row shows the location, the target units, the materials reserved under it,
its status and its store-sync state; expanding a row lists the reserved materials, the reservation’s
value and its activity. Add reservation creates one; the row menu edits, releases or retries a
failed store sync. Nothing here goes through the Save bar — every control is an operation with its own
confirmation. See Safety-stock
reservations.
The per-BOM toggles, in two groups that behave differently on purpose.
Preferences — keep assembled on return, maintain inventory level, auto-generate material list.
These are a form: flip a switch and the Save/Discard bar appears; nothing changes until you save.
Inventory behaviour — dynamic adjustment (with its Synchronize with Raw Materials action)
and only sell pre-assembled quantities. These take effect immediately, because each one changes what
your store shows as available. They ask first, and the confirmation names anything it will switch
off.
Below them sits alert configuration — thresholds that email or notify you when pre-assembled or
Shopify stock runs low, one section per kind, with a summary above them. Alerts need the Alertified
integration: without it the sections are not shown at all. See Alertified.
The stock ledger for this bill’s Shopify variant, newest first: the date, the change, the
level before and after, the type of movement, the reason, and a reference — a link
through to the order or run that caused it. A location filter narrows it to one location. Read-only;
nothing here can be edited.
Create a BOMPick the Shopify product, tick the variants, add components — the two-step create dialog, field by field.
Import BOMs from a spreadsheetOne CSV or XLSX file with a row per component: upload, map the columns, review what it describes, create.
Composition deep diveThe four component types in detail — quantity, waste %, per-component 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.
Safety-stock reservationsHold raw materials per-location so a fixed number of units stays buildable on demand. Two release modes: restore to available or convert to pre-assembled.
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 bill of materials or an assembly bill. Two flavours: a Shopify-linked variant, whose inventory Shopify tracks, or a virtual material, which Assemblified tracks on its own and Shopify never sees. Both sit in the same component picker and are consumed the same way.
Read more →
and assembly billsSub-assemblyA reusable assembly block that composes into bigger bills: define it once, include it in any bill of materials, and Assemblified expands it into its own components at execution time. The app now calls it an assembly bill.
Read more →
(the app’s older word for those is sub-assembly).
Pre-assembled inventoryPre-Assembled InventoryStock of finished goods and assembly bills already built and on the shelf, counted per location. A work order draws assembly bills from the shelf first, building fresh only if it runs short; an order consumes a finished good's shelf before its components.
Read more →
is finished stock built ahead of orders. Orders consume from this shelf first.
Dynamic adjustmentDynamic adjustmentA per-bill toggle that recalculates the bill's Shopify-displayed quantity after every order: the bottleneck-resource count plus pre-assembled stock. One of three mutually exclusive toggles — switching it on switches only-sell-pre-assembled and maintain inventory level off.
Read more →
recalculates your Shopify-displayed quantity from current component availability after every order.
Maintain inventory levelMaintain inventory levelA per-bill toggle that keeps the Shopify-displayed quantity flat after orders: Assemblified pushes a positive delta back to the bill's variant equal to what was consumed. Components decrement underneath. One of three mutually exclusive toggles: switching it on switches dynamic adjustment and only-sell-pre-assembled off.
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 record of one run Assemblified made — usually an order, sometimes a stock adjustment or a flow. It carries the run's outcome (Succeeded, Pending, Failed or Skipped), what triggered it, which bills it processed and skipped, the exact component changes it calculated and whether those reached Shopify, any pre-assembled stock it used, and any errors. Every run is listed on the **Logs** page and opens to its own detail page.
Read more →
is the audit trail — every order writes one row capturing the full webhook → inventory pipeline.