Weight
Every raw materialRaw 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 →
can carry an optional physical weight — a value plus a weight unit (2.5 kg, 300 g, 8 oz). It’s separate from the unit of measure: the unit is how the material is counted in a recipe (m, pcs, L); the weight is how much one of those units physically weighs.
From the per-material weights, Assemblified derives a calculated weight for every 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 → and 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 → — the summed, unit-converted weight of everything the recipe consumes. Planning, inventory, cost, and execution are unaffected; weight is purely informational.
On this page
Section titled “On this page”- The weight field — value, unit, and “blank vs zero”
- Editable (virtual) vs mirrored from Shopify (linked)
- Calculated weight on BOMs and sub-assemblies
- Where weight shows up
- Import / export
- Common gotchas
The weight field
Section titled “The weight field”A raw material’s weight is two pieces:
- Weight value — a number ≥ 0. Blank means unknown (not zero). An explicit
0is a valid weight and stays distinct from blank. - Weight unit — must be an active unit in the
weightcategory (kg,g,mg,lb,oz). It’s chosen from its own dropdown, independent of the material’s consumption unit.
The two travel together: a value with no unit is rejected, and a unit with no value is dropped. Validation uses these exact messages:
Weight must be a number greater than or equal to 0.Weight unit is required when weight is set.
Editable vs mirrored
Section titled “Editable vs mirrored”Where a material’s weight comes from depends on its type — the same split as unit cost.
| Material type | Weight source | In the edit sheet |
|---|---|---|
| Virtual | Assemblified-managed — you type it in. | Editable. |
| Shopify-linked | Mirrored from the Shopify variant. | Read-only. |
For a Shopify-linked material, weight is pulled from the variant’s Shopify weight (Measurement → Weight) and kept current automatically — you don’t (and can’t) edit it in Assemblified:
| When | What happens |
|---|---|
| You add the variant (resource picker) | Weight is copied from Shopify alongside name, SKU, and cost. |
| You click Refresh info | Weight is re-pulled from Shopify with the other variant fields. |
| Stock/variant changes in Shopify | The INVENTORY_ITEMS_UPDATE webhook refreshes the mirrored weight. |
Calculated weight
Section titled “Calculated weight”For a BOM or sub-assembly, Assemblified computes a calculated weight on read — it’s never stored. The math is one recursive pass:
finished weight = Σ ( component quantity × component weight ), converted to the canonical weight unit.
- Canonical unit. The first active
weight-category unit (normallykg). Every component’s weight is converted into it before summing, so a recipe mixinggandlbcomponents still produces one clean total. - Waste is excluded. Unlike the cost roll-up, the weight roll-up ignores each component’s waste percentage — scrap isn’t part of the shipped product’s weight. (This is a deliberate divergence from cost, which includes waste.)
If the total can’t be computed, the roll-up reports unavailable with a specific reason instead of a number:
| Message | Cause |
|---|---|
Calculated weight unavailable: no active weight units. | No weight-category unit is active, so there’s no canonical unit to convert into. |
Calculated weight unavailable: circular sub-assembly reference. | A sub-assembly references itself (directly or via a cycle). |
Calculated weight unavailable: missing weight unit conversion. | Two component weight units have no conversion between them (define one under unit conversions). |
Calculated weight unavailable: one or more components have no weight. | At least one component’s weight is blank/unknown. |
The reasons are checked in that order — the first one that applies is the one you’ll see.
Where weight shows up
Section titled “Where weight shows up”- Raw-material detail page — the Overview tab shows the material’s own weight, read-only (
2.5 kg, or—when unknown;0 kgstays distinct from blank). - Edit sheet — a Weight + Weight Unit pair. Editable for virtual materials, read-only for Shopify-linked.
- Raw-material export (CSV / XLSX) —
WeightandWeight Unitcolumns. - BOM and sub-assembly exports — the calculated weight as
Weight+Weight Unitcolumns (or the exact unavailable message in the Weight column when it can’t be computed).
Import / export
Section titled “Import / export”The raw-material CSV/XLSX template carries two optional columns:
Weight— a non-negative number, or blank if unknown. Requires a Weight Unit.Weight Unit— a weight-unit short name. It must resolve to an active weight unit (kg,g,lb,oz, …).
Blank weight is kept as unknown (never coerced to 0); an explicit 0 round-trips back as 0. Exporting raw materials and re-importing the file preserves weights unchanged.
BOM and sub-assembly exports include the derived weight columns, but their imports never set entity weight — calculated weight is computed from the components, never written directly.
Common gotchas
Section titled “Common gotchas”- Weight unit ≠ consumption unit. A material counted in
m(the consumption unit) can weigh0.3 kgper metre (the weight). They’re independent fields with independent dropdowns. - Blank is not zero. A blank weight means “unknown,” and any roll-up that includes the material reports one or more components have no weight. If a component genuinely weighs nothing, enter
0explicitly. - Shopify weight is read-only here. To change a Shopify-linked material’s weight, edit it on the Shopify variant — Assemblified mirrors it back on the next sync. It won’t accept an edit from the Assemblified side.
- Mixed weight units need a conversion. If components weigh in different units (
gandlb), the roll-up needs a conversion between them and the canonical unit. Missing one yields missing weight unit conversion. The five seeded weight units (kg/g/mg/lb/oz) all convert tokgout of the box.
Where to next
Section titled “Where to next”- Units of Measurement — the consumption unit and the weight-unit category.
- Unit conversions — the factors the weight roll-up uses to combine mixed weight units.
- Shopify-linked materials — what else is mirrored from the Shopify variant.
- Virtual materials — where weight is yours to edit.