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.
On this page
Section titled “On this page”- Manufacturing
- Bill of materials
- Sales
- Inventory
- The summaries
Manufacturing
Section titled “Manufacturing”Build output
Section titled “Build output”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.
| Column | What it is | Shown by default |
|---|---|---|
| Item | The finished good, subassembly or variant that was built | Yes |
| Location | The production location the run happened at | Yes |
| Item type | BOM, Subassembly or Variant | Yes |
| Units built | Units produced by build runs in the build direction | Yes |
| Units reworked | Units run again as rework | Yes |
| Units disassembled | Units taken apart again | Yes |
| Net units | Units built minus units disassembled. Rework is replacement, not new output, so it stays out | Yes |
| Work orders | How many work orders contributed | Yes |
| Build runs | How many build runs contributed | Yes |
| Average per run | Built plus rework, divided by the build-direction runs | Yes |
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.
Scrap and quality
Section titled “Scrap and quality”What quality control approved, failed, scrapped and sent back for rework, per item.
One row per item and period.
| Column | What it is | Shown by default |
|---|---|---|
| Item | The finished good, subassembly or variant reviewed | Yes |
| Item type | BOM, Subassembly or Variant | Yes |
| Approved | Units the reviewer passed | Yes |
| Failed | Units the reviewer failed | Yes |
| Scrapped | Failed units the reviewer scrapped | Yes |
| Sent to rework | Failed units the reviewer sent back | Yes |
| Scrap rate | Scrapped as a share of what was reviewed | Yes |
| Top failure category | The failure category with the largest quantity on this row | Yes |
| Reviews | How many reviews contributed | No |
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.
Cost per build
Section titled “Cost per build”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.
| Column | Shown by default |
|---|---|
| Work order | Yes |
| Completed | Yes |
| Units completed | Yes |
| Current planned cost | Yes |
| Actual cost | Yes |
| Actual cost per unit | Yes |
| Variance | Yes |
| Current planned material cost · Current planned subassembly cost · Current planned labour cost · Current planned overhead | No |
| Actual material cost · Actual subassembly cost · Actual labour cost · Planned overhead retained in actual cost | No |
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.
Manufacturing consumption
Section titled “Manufacturing consumption”What manufacturing picked, consumed and returned, per material and location.
One row per material, period and location.
| Column | What it is | Shown by default |
|---|---|---|
| Material | The material, subassembly or finished good consumed | Yes |
| Location | Where the movement happened | Yes |
| Material type | Material, Subassembly or BOM | Yes |
| Picked | Units picked for a run | Yes |
| Consumed | Units actually consumed, net of any reversal | Yes |
| Returned | Units returned to stock | Yes |
| Cost at consumption | What those units cost at the moment they moved | Yes |
| Work orders | How many work orders contributed | Yes |
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.
Throughput
Section titled “Throughput”How long work orders took from creation to completion, and how many met their due date.
One row per completed work order.
| Column | What it is | Shown by default |
|---|---|---|
| Work order | The completed work order the row measures | Yes |
| Created · Started · Completed · Due | The work order’s own timestamps | Yes |
| Lead time | Creation to completion | Yes |
| On time | Whether completion fell on or before the due date | Yes |
| Wait before start | Creation to start | No |
| Time in build | Start to completion | No |
| Units completed | Units the work order finished | No |
| In progress at period end | How 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 by | No |
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.
Bill of materials
Section titled “Bill of materials”All five read what your order executions demanded. Three of them also answer on the Sold basis; see Basis.
Finished goods demand
Section titled “Finished goods demand”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.
| Column | What it is | Shown by default | Basis |
|---|---|---|---|
| Finished good | The finished good the orders demanded | Yes | Both |
| Location | The location the execution resolved to | Yes | Both |
| Net units | Demanded minus restored | Yes | Both |
| Orders (counted per bill) | Distinct orders touching this bill | Yes | Both |
| Executions | How many executions contributed | No | Executed only |
| Units demanded | What orders asked for | No | Executed only |
| Units restored | What refunds and cancellations put back | No | Executed only |
| From the shelf | Units met from pre-assembled stock | No | Executed only |
| From components | Units built out of components at order time | No | Executed only |
| Revenue | The discounted total of the units sold, net of refunds and edits | No | Sold 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.
Subassembly demand
Section titled “Subassembly demand”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.
| Column | What it is | Shown by default | Basis |
|---|---|---|---|
| Subassembly | The subassembly the executions demanded | Yes | Both |
| Location | The location the execution resolved to | Yes | Both |
| Demanded | What executions asked for | Yes | Both |
| Parent finished goods | How many bills demanded it | Yes | Both |
| Orders (counted per subassembly) | Distinct orders touching this subassembly | Yes | Both |
| From the shelf | Met from pre-assembled stock | No | Executed only |
| From components | Built out of its own components | No | Executed only |
| Shortfall | Demanded but met by neither | No | Executed only |
| Cut off | How many executions found this subassembly limited to its pre-assembled stock — the Only consume pre-assembled setting | No | Executed only |
| Shelf share | From the shelf as a share of demanded | No | Executed 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.
Material demand
Section titled “Material demand”What orders consumed of each material, what refunds put back, and what it is worth.
One row per material, period and location. Two bases.
| Column | What it is | Shown by default | Basis |
|---|---|---|---|
| Material | The material the orders demanded | Yes | Both |
| Location | The location the material was demanded at | Yes | Both |
| Net demand | Demanded minus restored | Yes | Both |
| Orders (counted per material) | Distinct orders touching this material | Yes | Both |
| Finished goods | How many bills demanded it | Yes | Both |
| Unit cost | The material’s cost per unit today | Yes | Both |
| Demand value | Demanded quantity at today’s unit cost. Marked Estimate | Yes | Both |
| Demanded | What executions asked for | No | Executed only |
| Restored | What refunds and cancellations put back | No | Executed 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.
Pre-assembled usage
Section titled “Pre-assembled usage”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.
| Column | What it is | Shown by default |
|---|---|---|
| Assembly | The bill or subassembly | Yes |
| Assembly type | BOM or Subassembly | Yes |
| Demanded | What executions asked for | Yes |
| From the shelf | Met from pre-assembled stock | Yes |
| From components | Built out of components | Yes |
| Shelf share | From the shelf as a share of demanded | Yes |
| Shortfall | Demanded but met by neither | Yes |
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.
Execution health
Section titled “Execution health”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.
| Column | What it is | Shown by default |
|---|---|---|
| Period | The week, day or month | Yes |
| Executions | Executions that ran | Yes |
| Failed | Executions that failed | Yes |
| Nothing to build | Executions that matched no bill at all | Yes |
| Average processing time | How long the app itself took | Yes |
| Average time from order to done | From the order notification arriving to the execution finishing | Yes |
Totals strip: Executions · Failed · Average processing time.
Both sales reports read a local copy of your Shopify orders. See Order sync.
Unmodelled sales
Section titled “Unmodelled sales”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.
| Column | Shown by default |
|---|---|
| Product | Yes |
| SKU | Yes |
| Units sold | Yes |
| Orders | Yes |
| Revenue | Yes |
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 without execution
Section titled “Orders without execution”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.
| Column | What it is | Shown by default |
|---|---|---|
| Order | The order number. Selecting it opens the Historical Orders tool with that order already selected | Yes |
| Created | When the order was placed | Yes |
| Modelled lines | How many lines on it match a bill | Yes |
| Units | How many units those lines carry | Yes |
| Status | Never seen, or Seen, no BOM matched | Yes |
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.
Inventory
Section titled “Inventory”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.
On hand: finished goods
Section titled “On hand: finished goods”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.
| Column | What it is | Shown by default |
|---|---|---|
| Finished good | The finished good on the shelf | Yes |
| SKU | Its SKU | Yes |
| On hand | Units on the pre-assembled shelf, across all your locations | Yes |
| Published in Shopify | The 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 valued | Yes |
| Materials per unit | What the materials in one unit cost at today’s recipe, waste included, through every level of subassemblies | Yes |
| Value without labour | On hand times materials per unit | Yes |
| Value with labour | Value without labour plus the labour value | Yes |
| Value including additional costs | Value with labour plus the additional costs value | Yes |
| In progress | Units of this item picked into a build run that has not finished | Yes |
| Work in progress value | In progress at materials cost | Yes |
| Awaiting quality control | Units built and waiting for a quality-control review. Not valued and not in the totals | Yes |
| Cost incomplete | See above | Yes |
| Quantity from | Pre-assembled shelf, or Pre-assembled total where the shelf has no per-location stock | No |
| Labour per unit · Additional costs per unit | The two cost layers for one unit | No |
| Labour value · Additional costs value | Those layers times On hand | No |
| Labour split unknown | Yes 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 labour | No |
| Other bills for this variant | How many other bills share this product variant and were not valued | No |
Totals strip: Finished goods · Without labour · With labour · Including additional costs · Work in progress, materials.
On hand: subassemblies
Section titled “On hand: subassemblies”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.
| Column | What it is | Shown by default |
|---|---|---|
| Subassembly | The subassembly on the shelf | Yes |
| SKU | Its SKU | Yes |
| On hand | Units on the pre-assembled shelf, across all your locations | Yes |
| Materials per unit | What the materials in one unit cost at today’s recipe, waste included, through every level of nesting | Yes |
| Value without labour | On hand times materials per unit | Yes |
| Value with labour | Value without labour plus the labour value | Yes |
| Value including additional costs | Value with labour plus the additional costs value | Yes |
| In progress | Units of this subassembly picked into a build run that has not finished | Yes |
| Work in progress value | In progress at materials cost | Yes |
| Awaiting quality control | Units built and waiting for a quality-control review. Not valued and not in the totals | Yes |
| Cost incomplete | See above | Yes |
| Quantity from | Pre-assembled shelf, or Pre-assembled total where the shelf has no per-location stock | No |
| Labour per unit · Additional costs per unit | The two cost layers for one unit | No |
| Labour value · Additional costs value | Those layers times On hand | No |
Totals strip: Subassemblies · Without labour · With labour · Including additional costs · Work in progress, materials.
On hand: materials
Section titled “On hand: 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.
| Column | What it is | Shown by default |
|---|---|---|
| Material | The material | Yes |
| SKU | Its SKU | Yes |
| Material type | Shopify-linked or Virtual | Yes |
| On hand | The quantity counted, as described above | Yes |
| Unit | The material’s unit | Yes |
| Quantity from | Shopify, Assemblified locations, or Assemblified total | Yes |
| Unit cost | The material’s cost per unit today | Yes |
| Stock value | On hand times unit cost | Yes |
| In progress | Units picked into a build run that has not finished | Yes |
| Work in progress value | In progress at unit cost | Yes |
| Cost incomplete | Yes when the material has no cost | Yes |
| Locations differ from total | Yes when a virtual material’s per-location stock does not add up to its stored total. The per-location figure is the one counted | No |
| Marked as a finished good | Yes when the material is still marked as a finished good although no bill uses its variant. It is counted as a material | No |
Totals strip: Materials · Stock value · Work in progress, materials.
Questions about the On hand reports
Section titled “Questions about the On hand reports”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.
The summaries
Section titled “The summaries”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.
Manufacturing summary
Section titled “Manufacturing summary”| Figure | Where it comes from |
|---|---|
| Units built | Build output |
| Scrap rate | Scrap and quality |
| Cost per unit | Cost per build |
| On time | Throughput |
| Consumption cost | Manufacturing consumption |
Carries the period control and the location scope.
Sales summary
Section titled “Sales summary”| Figure | Where it comes from |
|---|---|
| Net units sold | Your orders, net of refunds and removed units |
| Revenue | Your orders, net of refunds and edits |
| Orders | Distinct orders with at least one line still sold |
| Unmodelled units | Unmodelled sales |
| Orders without execution | Orders 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.
Where to next
Section titled “Where to next”- 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.