Skip to content

The reports

This is the reference for all seventeen reports. For each one: what a row is, the columns it ships with, the columns you can add from Display options → Columns, the figures in the totals strip, and what a row breakdown opens.

  • Manufacturing
  • Bill of materials
  • Sales
  • Inventory
  • The summaries

What your store built in the period, per item, with the work orders and build runs behind it.

One row per item, period and location.

ColumnWhat it isShown by default
ItemThe finished good, subassembly or variant that was builtYes
LocationThe production location the run happened atYes
Item typeBOM, Subassembly or VariantYes
Units builtUnits produced by build runs in the build directionYes
Units reworkedUnits run again as reworkYes
Units disassembledUnits taken apart againYes
Net unitsUnits built minus units disassembled. Rework is replacement, not new output, so it stays outYes
Work ordersHow many work orders contributedYes
Build runsHow many build runs contributedYes
Average per runBuilt plus rework, divided by the build-direction runsYes

Totals strip: Units built · Build runs · Units reworked · Units disassembled · Items.

Breakdown: every build run behind the row, named by its work order and run id, with the units it contributed. A disassembly counts negative, so the lines sum to built plus rework minus disassembled.

What quality control approved, failed, scrapped and sent back for rework, per item.

One row per item and period.

ColumnWhat it isShown by default
ItemThe finished good, subassembly or variant reviewedYes
Item typeBOM, Subassembly or VariantYes
ApprovedUnits the reviewer passedYes
FailedUnits the reviewer failedYes
ScrappedFailed units the reviewer scrappedYes
Sent to reworkFailed units the reviewer sent backYes
Scrap rateScrapped as a share of what was reviewedYes
Top failure categoryThe failure category with the largest quantity on this rowYes
ReviewsHow many reviews contributedNo

Voided reviews are excluded entirely, so a reversed build run’s approvals and failures leave the figures.

Totals strip: Approved · Failed · Scrapped · Sent to rework · Items.

Breakdown: the failure categories behind the row, with the units failed under each. A failure with no category reads Uncategorized.

Planned against actual cost for every completed work order, with the variance per unit.

One row per completed work order. Work orders in progress are not in this report.

ColumnShown by default
Work orderYes
CompletedYes
Units completedYes
Current planned costYes
Actual costYes
Actual cost per unitYes
VarianceYes
Current planned material cost · Current planned subassembly cost · Current planned labour cost · Current planned overheadNo
Actual material cost · Actual subassembly cost · Actual labour cost · Planned overhead retained in actual costNo

Variance is measured against the latest plan, not the plan as it stood when the work order was created: editing a material or a quantity recomputes the planned figure.

Units completed counts units built. Units a disassembly run took apart again are not counted, so Actual cost per unit divides the actual cost by what was really built. The variance compares that actual cost with the whole plan: a work order planned at 2 units for $10 each that built 1 and disassembled 1 reads $20 planned, $10 actual, −50 %. The plan still prices the second unit, and nothing was spent on it.

Planned labour is the labour the work order is planned with: the figure you typed on the work order if you set one, otherwise the labour worked out from the bills’ labour cost rates. Planned overhead is what remains of the planned total after materials, sub-assemblies and that labour.

A work order that recorded no consumption at all — a material-list-only one, for instance — reports no actual cost rather than zero, and its units leave the average.

Totals strip: Actual cost · Current planned cost · Average cost per unit · Units completed · Work orders.

Breakdown: the work order’s items, each with the units completed, the unit cost it was costed at, and the quantity scrapped.

What manufacturing picked, consumed and returned, per material and location.

One row per material, period and location.

ColumnWhat it isShown by default
MaterialThe material, subassembly or finished good consumedYes
LocationWhere the movement happenedYes
Material typeMaterial, Subassembly or BOMYes
PickedUnits picked for a runYes
ConsumedUnits actually consumed, net of any reversalYes
ReturnedUnits returned to stockYes
Cost at consumptionWhat those units cost at the moment they movedYes
Work ordersHow many work orders contributedYes

This is the one report whose money is the cost at the moment of the event rather than today’s cost. A fully reversed run reads nothing consumed beside what it returned. Disassembly runs are not counted as consumption: taking a finished good apart uses up no materials, so neither the finished good it takes apart nor the components it puts back appear here. There is no scrap column here: scrapped units are Scrap and quality’s question.

Totals strip: Consumed · Consumption cost · Returned · Materials.

Breakdown: the work orders behind the row, each with what it consumed, picked and returned.

How long work orders took from creation to completion, and how many met their due date.

One row per completed work order.

ColumnWhat it isShown by default
Work orderThe completed work order the row measuresYes
Created · Started · Completed · DueThe work order’s own timestampsYes
Lead timeCreation to completionYes
On timeWhether completion fell on or before the due dateYes
Wait before startCreation to startNo
Time in buildStart to completionNo
Units completedUnits the work order finishedNo
In progress at period endHow many work orders were still open when the period (or bucket) closed. Marked Estimate, because exactly where the boundary falls changes it. Only meaningful with a Group byNo

On time compares calendar days in your store’s time zone on both sides, because a due date is a day and not an instant. A work order that is re-opened counts as work in progress again.

Totals strip: Work orders · Average lead time · On time · Units completed.

Breakdown: the work order’s lifecycle steps in order — Created, Marked ready, Started, Paused, Sent to quality control, Completed and the rest — with the time each one took.

All five read what your order executions demanded. Three of them also answer on the Sold basis; see Basis.

What orders demanded of each finished good, and how much of it came off the shelf.

One row per finished good, period and location. Two bases.

ColumnWhat it isShown by defaultBasis
Finished goodThe finished good the orders demandedYesBoth
LocationThe location the execution resolved toYesBoth
Net unitsDemanded minus restoredYesBoth
Orders (counted per bill)Distinct orders touching this billYesBoth
ExecutionsHow many executions contributedNoExecuted only
Units demandedWhat orders asked forNoExecuted only
Units restoredWhat refunds and cancellations put backNoExecuted only
From the shelfUnits met from pre-assembled stockNoExecuted only
From componentsUnits built out of components at order timeNoExecuted only
RevenueThe discounted total of the units sold, net of refunds and editsNoSold only

Totals strip (Executed): Net units · Units demanded · Units restored · From the shelf · Finished goods. Totals strip (Sold): Net units · Orders · Revenue · Finished goods.

Breakdown: the components one level below this bill — its subassemblies and materials — with what each was demanded for. Not available on the Sold basis.

What executions demanded of each subassembly, and whether it came off the shelf, out of components, or fell short.

One row per subassembly, period and location. Two bases.

ColumnWhat it isShown by defaultBasis
SubassemblyThe subassembly the executions demandedYesBoth
LocationThe location the execution resolved toYesBoth
DemandedWhat executions asked forYesBoth
Parent finished goodsHow many bills demanded itYesBoth
Orders (counted per subassembly)Distinct orders touching this subassemblyYesBoth
From the shelfMet from pre-assembled stockNoExecuted only
From componentsBuilt out of its own componentsNoExecuted only
ShortfallDemanded but met by neitherNoExecuted only
Cut offHow many executions found this subassembly limited to its pre-assembled stock — the Only consume pre-assembled settingNoExecuted only
Shelf shareFrom the shelf as a share of demandedNoExecuted only

Totals strip (Executed): Demanded · From the shelf · From components · Shortfall · Subassemblies. Totals strip (Sold): Demanded · Parent finished goods · Orders · Subassemblies.

Breakdown: the finished goods this subassembly was demanded by, with the quantity each one demanded. Not available on the Sold basis.

What orders consumed of each material, what refunds put back, and what it is worth.

One row per material, period and location. Two bases.

ColumnWhat it isShown by defaultBasis
MaterialThe material the orders demandedYesBoth
LocationThe location the material was demanded atYesBoth
Net demandDemanded minus restoredYesBoth
Orders (counted per material)Distinct orders touching this materialYesBoth
Finished goodsHow many bills demanded itYesBoth
Unit costThe material’s cost per unit todayYesBoth
Demand valueDemanded quantity at today’s unit cost. Marked EstimateYesBoth
DemandedWhat executions asked forNoExecuted only
RestoredWhat refunds and cancellations put backNoExecuted only

Demand value is priced at today’s cost, because the demand record stores quantities and not the price of the day. For what a consumption actually cost when it happened, read Manufacturing consumption.

Totals strip (Executed): Net demand · Demanded · Restored · Demand value · Materials. Totals strip (Sold): Net demand · Demand value · Orders · Materials.

Breakdown: the assemblies the material was pulled through, with the quantity each path carried. A material that hangs off the bill itself is reported under that bill. Not available on the Sold basis.

How much of what your store assembled came off the pre-assembled shelf instead of being built from components.

One row per assembly and period, where an assembly is a finished good or a subassembly at any depth. One basis. No Location column, though the location scope still decides which executions count.

ColumnWhat it isShown by default
AssemblyThe bill or subassemblyYes
Assembly typeBOM or SubassemblyYes
DemandedWhat executions asked forYes
From the shelfMet from pre-assembled stockYes
From componentsBuilt out of componentsYes
Shelf shareFrom the shelf as a share of demandedYes
ShortfallDemanded but met by neitherYes

Totals strip: From the shelf · From components · Shortfall · Assemblies · Shelf share. The strip’s shelf share is the ratio over the whole period, not the average of the per-row shares, so a one-unit assembly does not weigh as much as a thousand-unit one.

Breakdown: the orders the assembly was pulled for, with what each demanded and how it was met.

How many order executions ran in each period, how many failed, and how long they took.

One row per period. It is the one report whose row is a stretch of time rather than a thing, so it opens grouped by week. It has no location control (one execution can touch several locations), no search box (there is no name in it) and no row breakdown — a stretch of time has no named parts to open.

ColumnWhat it isShown by default
PeriodThe week, day or monthYes
ExecutionsExecutions that ranYes
FailedExecutions that failedYes
Nothing to buildExecutions that matched no bill at allYes
Average processing timeHow long the app itself tookYes
Average time from order to doneFrom the order notification arriving to the execution finishingYes

Totals strip: Executions · Failed · Average processing time.

Both sales reports read a local copy of your Shopify orders. See Order sync.

Variants you sold in the period that have no bill of materials behind them.

One row per variant and period. No location control: a variant with no bill consumes nothing anywhere.

ColumnShown by default
ProductYes
SKUYes
Units soldYes
OrdersYes
RevenueYes

This is the list of things you might want to model. Sorted by units sold, the top of it is where modelling pays off first.

Totals strip: Units sold · Revenue · Variants.

Breakdown: the orders this variant was sold on, with the units on each.

Orders that contain a finished good you model, and for which no bill of materials was ever executed.

One row per order, newest first. No location control, and no row breakdown.

ColumnWhat it isShown by default
OrderThe order number. Selecting it opens the Historical Orders tool with that order already selectedYes
CreatedWhen the order was placedYes
Modelled linesHow many lines on it match a billYes
UnitsHow many units those lines carryYes
StatusNever seen, or Seen, no BOM matchedYes

The two statuses mean different things:

  • Never seen. The app has no record of the order at all. Either it was placed before you installed the app, or its notification never arrived.
  • Seen, no BOM matched. The app processed the order and executed nothing, because nothing on it matched a bill of materials at the time.

To take several at once, tick their rows and choose Replay selected, which opens the same tool with all of them loaded.

The report never replays anything itself. The Historical Orders tool checks each order first, tells you which ones it will skip and why, and asks you to confirm, because replaying an order consumes its components for real and cannot be undone.

Totals strip: Orders · Units.

The three On hand reports answer a different question from every other report. They do not ask what happened over a period; they ask what the stock you hold right now is worth. So they have no period control, no Group by, no chart and no location scope: each one reads your whole shop as it stands the moment you open the page, and opening it again tomorrow gives tomorrow’s answer. They have no row breakdown. Search, filters, columns, saved views and export work as on any other report, and export takes every row.

Each of the three shows a short note above the table saying what its figures leave out. Read it before you quote a number from the report.

What all three have in common:

  • Today’s costs. Every value uses today’s recipes and the costs held in the app’s cost fields right now. Change a material’s cost and the value changes the next time the report is opened.
  • No tax. Costs are used exactly as you entered them. Nothing is added or removed for sales tax or GST.
  • Reserved and safety stock units are not shown. Units held back for open orders or as safety stock are not in any column.
  • Work in progress is kept apart. Units picked into a build run that has not finished yet sit in their own In progress columns, valued at materials cost, and are never added to the stock value. The totals strip shows them as a separate figure.
  • Which rows appear. One row per item that has stock on hand, or units in progress or awaiting quality control. An item with a negative quantity is listed, so overselling is visible, but it counts as zero in the totals strip rather than subtracting from it.
  • Cost incomplete. A row reads Yes here when its value could not be fully worked out: a material in it has no cost, its recipe loops back on itself, or it nests more than ten levels deep. Add the filter Cost incomplete is Yes to find the rows to fix.

In the two assembly reports, labour is the cost of your Labour-kind additional costs and additional costs is the cost of your Overhead-kind ones. Each step of the value builds on the one before it: without labour, then with labour, then including additional costs.

What the finished goods on your pre-assembled shelf are worth right now, with and without labour.

One row per finished good.

Only the pre-assembled shelf is counted. The quantity your product shows in Shopify can include what you could still build from components, which is not stock you hold, so it appears in its own column, Published in Shopify, and is never valued. When several bills share one product variant, its shelf is valued once, on one of them, and Other bills for this variant counts the rest.

ColumnWhat it isShown by default
Finished goodThe finished good on the shelfYes
SKUIts SKUYes
On handUnits on the pre-assembled shelf, across all your locationsYes
Published in ShopifyThe quantity Shopify showed for this product when the app last read it. Shown beside On hand so the two are read as different numbers. Never valuedYes
Materials per unitWhat the materials in one unit cost at today’s recipe, waste included, through every level of subassembliesYes
Value without labourOn hand times materials per unitYes
Value with labourValue without labour plus the labour valueYes
Value including additional costsValue with labour plus the additional costs valueYes
In progressUnits of this item picked into a build run that has not finishedYes
Work in progress valueIn progress at materials costYes
Awaiting quality controlUnits built and waiting for a quality-control review. Not valued and not in the totalsYes
Cost incompleteSee aboveYes
Quantity fromPre-assembled shelf, or Pre-assembled total where the shelf has no per-location stockNo
Labour per unit · Additional costs per unitThe two cost layers for one unitNo
Labour value · Additional costs valueThose layers times On handNo
Labour split unknownYes when another finished good is used as a component of this one. That component is priced at its Shopify cost, which cannot be split into materials and labourNo
Other bills for this variantHow many other bills share this product variant and were not valuedNo

Totals strip: Finished goods · Without labour · With labour · Including additional costs · Work in progress, materials.

What the subassemblies on your pre-assembled shelf are worth right now, with and without labour.

One row per subassembly.

Only the pre-assembled shelf is counted. What a subassembly could still be built into from its components is not stock, so it is not in this report.

ColumnWhat it isShown by default
SubassemblyThe subassembly on the shelfYes
SKUIts SKUYes
On handUnits on the pre-assembled shelf, across all your locationsYes
Materials per unitWhat the materials in one unit cost at today’s recipe, waste included, through every level of nestingYes
Value without labourOn hand times materials per unitYes
Value with labourValue without labour plus the labour valueYes
Value including additional costsValue with labour plus the additional costs valueYes
In progressUnits of this subassembly picked into a build run that has not finishedYes
Work in progress valueIn progress at materials costYes
Awaiting quality controlUnits built and waiting for a quality-control review. Not valued and not in the totalsYes
Cost incompleteSee aboveYes
Quantity fromPre-assembled shelf, or Pre-assembled total where the shelf has no per-location stockNo
Labour per unit · Additional costs per unitThe two cost layers for one unitNo
Labour value · Additional costs valueThose layers times On handNo

Totals strip: Subassemblies · Without labour · With labour · Including additional costs · Work in progress, materials.

What your materials, Shopify-linked and virtual, are worth at cost right now.

One row per material.

A Shopify-linked material counts the quantity Shopify reported the last time the app read it, for the whole shop. 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 → counts the app’s own stock across its locations, or its total where it has no per-location stock. Product variants that are finished goods are not materials and are left out. Materials have no labour, so there is one value: the stock value at cost.

ColumnWhat it isShown by default
MaterialThe materialYes
SKUIts SKUYes
Material typeShopify-linked or VirtualYes
On handThe quantity counted, as described aboveYes
UnitThe material’s unitYes
Quantity fromShopify, Assemblified locations, or Assemblified totalYes
Unit costThe material’s cost per unit todayYes
Stock valueOn hand times unit costYes
In progressUnits picked into a build run that has not finishedYes
Work in progress valueIn progress at unit costYes
Cost incompleteYes when the material has no costYes
Locations differ from totalYes when a virtual material’s per-location stock does not add up to its stored total. The per-location figure is the one countedNo
Marked as a finished goodYes when the material is still marked as a finished good although no bill uses its variant. It is counted as a materialNo

Totals strip: Materials · Stock value · Work in progress, materials.

Why doesn’t this match Shopify’s inventory value?

The two answer different questions, so they rarely agree:

  • Different costs. These reports value finished goods and subassemblies at today’s recipe and the costs held in the app, and materials at the cost held on the material in the app. Shopify uses the cost per item set on each product in Shopify.
  • Different finished-good quantities. Shopify values the quantity it shows for a product. For a finished good the app counts only the pre-assembled shelf, because the quantity in Shopify can include units that are not built yet.
  • Units set aside. Units reserved for open orders or held as safety stock are not shown here.
  • Stock Shopify never sees. Virtual materials and subassemblies are kept in the app and have no product in Shopify, so they are in these reports and not in Shopify’s.
  • Labour and additional costs. The assembly reports show values with labour and including additional costs, which Shopify has no figure for. Compare Shopify’s number with Value without labour, never with a total that includes labour.
  • Timing. Shopify-linked quantities are as the app last read them, so a change made in Shopify a moment ago may not be counted yet.

Can I see what my stock was worth last month?

No. Each report is a reading of right now, and nothing is stored between readings, so a past date cannot be reconstructed afterwards. To keep a month-end figure, open the report on the 1st of the month, or on the last day, and export it. The exported file is your record.

Both are scorecards: five figures for the period, and the same five for the period before it. They have no rows, so no Group by, no filters, no columns, no breakdown and no export.

FigureWhere it comes from
Units builtBuild output
Scrap rateScrap and quality
Cost per unitCost per build
On timeThroughput
Consumption costManufacturing consumption

Carries the period control and the location scope.

FigureWhere it comes from
Net units soldYour orders, net of refunds and removed units
RevenueYour orders, net of refunds and edits
OrdersDistinct orders with at least one line still sold
Unmodelled unitsUnmodelled sales
Orders without executionOrders without execution

Carries the period control only. There is no location scope: an order line has no location of its own, only its shipments do, and this scorecard counts the store.

  • Reading a report — the toolbar, charts, saved views and export.
  • Order sync — the copy of your Shopify orders the sales reports read.
  • Overview — the catalogue, the three families and the On hand reports.