Inventory tracking
Stock does not all live in one place, and the difference matters when a number looks wrong. Assemblified keeps track of five kinds of stock:
- Shopify stock, for Shopify-linked materials. Shopify is the source of truth and Assemblified reads it live, per location.
- Virtual stock, for 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 → . Assemblified owns it, per location.
- Shelf stock, for finished goods and assembly bills you have already built ahead of demand. Assemblified owns it, per location. See Pre-assembled inventory.
- Rounding remainders, the fractions left over when a build run or a safety-stock reservation cannot use a whole unit. Assemblified keeps them so they are not lost.
- The local index, Assemblified’s own mirror of your Shopify stock. Off by default. It exists so that high-volume shops do not have to read Shopify on every calculation, and it is what Reconcile inventory compares against Shopify.
This page explains how they fit together.
On this page
Section titled “On this page”- The five kinds of stock
- The local index and Reconcile inventory
- Multi-location rules
- When stock changes outside Assemblified
- Common gotchas
The five kinds of stock
Section titled “The five kinds of stock”| Kind of stock | Who owns the number | What it covers |
|---|---|---|
| Shopify stock | Shopify | Every Shopify-linked material, at every Shopify location. |
| Virtual stock | Assemblified | Every virtual material, at every location. |
| Shelf stock | Assemblified | Finished goods and assembly bills already built and waiting. |
| Rounding remainders | Assemblified | Fractions carried over from build runs and safety-stock reservations. |
| The local index | Assemblified (a mirror of Shopify) | A copy of Shopify’s numbers, for shops that switch it on. |
Every one of them is per-location. An adjustment at one location never touches another.
Three more figures appear beside these on the list and on the material page, and none of them is a separate pot of stock — they are views onto where your material has gone:
- Committed to orders — how much open orders still hold.
- Safety stock — how much your safety-stock reservations hold.
- Allocated in shelf stock and Allocated in work orders — how much of the material is already inside something on a shelf, or already picked (or still to be picked) by an open work order.
None of these is subtracted from Available for you. They tell you where your stock is, not what is left.
The local index and Reconcile inventory
Section titled “The local index and Reconcile inventory”Settings → General → Beta features → Use Assemblified’s local index turns on a mirror of your Shopify stock inside Assemblified. Calculations then read the mirror instead of asking Shopify every time, which helps shops where Shopify inventory reads have become a bottleneck. Shopify is still updated normally.
Because a mirror can drift, switching it on also gives you Reconcile inventory — on a material’s row menu, on the material page, and as a bulk action. It shows you, per location, what the local index holds, what Shopify reports, and the difference. You then choose which side wins:
- Shopify wins. The local index is rewritten from Shopify.
- The local index wins. Its numbers are pushed to Shopify.
Nothing moves until you confirm, and the dialog shows the before-and-after per location first. A material whose Shopify variant no longer exists is refused rather than reconciled to zero.
Multi-location rules
Section titled “Multi-location rules”For Shopify-linked materials, multi-location follows Shopify’s model directly: each Shopify location has its own stock, and Assemblified writes its changes per location.
For virtual materials, Assemblified keeps the same per-location structure itself.
When a bill of materials runs, the location each component is taken from is resolved in this order:
- The component’s own pinned location. If the recipe line names a location, that material always comes from there.
- The nearest pinned assembly above it. A component under an assembly bill that is pinned to a location is taken from that location too, unless it carries a pin of its own.
- The order’s location, when Settings → General → Respect order and fulfillment locations when available is switched on.
- Your default location, as the fallback.
See Location rules for how to pin a component or a whole branch.
When stock changes outside Assemblified
Section titled “When stock changes outside Assemblified”Someone edits a quantity in the Shopify admin, or another app syncs stock in. What happens next:
- Shopify’s product update reaches Assemblified. The material’s mirrored figures — product and variant name, SKU, unit price, unit cost, stock quantity, product type and vendor — are refreshed from what Shopify sent.
- If the quantity actually moved and Settings → General → Auto-update on inventory change is switched on, Assemblified recalculates every finished good that uses the material, so its displayed availability follows. With the setting off, the figure is refreshed but nothing is recalculated.
A change to the material’s cost, weight or inventory tracking in Shopify arrives on a separate path and refreshes the mirrored cost, SKU and weight. Assemblified never writes weight back to Shopify.
Virtual materials have no Shopify side, so there is nothing to be picked up: every change to a virtual material’s stock is made in Assemblified in the first place — on the material page, through Restock materials, through an order or a build run, or through the API.
Common gotchas
Section titled “Common gotchas”- Negative stock depends on a setting. For Shopify-linked materials Shopify’s own rules apply. For virtual materials, shelf stock and capacity calculations, Assemblified clamps at zero unless Settings → General → Allow negative inventory in Assemblified calculations is switched on.
- Rounding remainders only matter for work orders and reservations. Order execution does not round: fractional quantities are consumed exactly as calculated.
- A bill can execute at several locations in one order. Components pinned to different locations are written to each of those locations in the same run.
- A failed Shopify write does not roll back Assemblified’s own state. Shelf stock is drawn down before the Shopify call. If Shopify then refuses, Assemblified has already moved; the failure is recorded on the order’s execution log and the fix is a reconcile or a restock.
Where to next
Section titled “Where to next”- Shopify-linked materials — the Shopify side in detail.
- Virtual materials — the Assemblified side in detail.
- Restocking and stock counts — how to move stock in bulk.
- Safety-stock reservations — holding stock back for a buildable buffer. A reservation already reduces what is available, so it is never subtracted twice.