Skip to content

Reservation backfill

When you switch on Track BOM materials as Shopify-reserved between routing and fulfillment, it applies to orders from that moment on. Orders that were already sitting there waiting for fulfillment never got a reservation, and they never will on their own.

Settings → Tools → Reservation backfill is the tool that catches them up. A switch at the top of the page picks which orders it works on:

  • Orders waiting for fulfillment (the default) — orders Assemblified recorded as waiting for fulfillment that never got a reservation. Most of this page is about this source.
  • Open Shopify orders — open orders Assemblified never handled at all, because their bills were inactive when the order came in or the app was not installed yet. See Open Shopify orders below.

Both work in three stages: scan, preview, execute. Nothing is written until you have seen the exact material movements and said yes.

  • Stage 1 — Scan
  • Stage 2 — Preview
  • The sheet filter
  • Stage 3 — Execute
  • If something goes wrong
  • Open Shopify orders

Scan takes every order the app has recorded as waiting for fulfillment and checks it live against Shopify: is it still unfulfilled, is it still not cancelled, does it still have open fulfillment orders? A count under the table splits the result three ways — eligible, need review, skipped.

Waiting records whose order Shopify no longer returns are left out of the table entirely; a line under the counts says how many were dropped for that reason, so the number is never simply missing.

VerdictWhat it means
EligibleCan be backfilled. Selected by default.
Partially fulfilled: manual reviewPart of the order has shipped, so it needs a look by hand before anything is reserved. Shown, but not selectable.
In progress: opt in to includeHas a fulfillment order already in progress. Tick its Run box to include it.
Has reservationsAlready reserved
Already executedThe materials were already consumed
Cancelled in Shopify / Fulfilled in Shopify / Not found in ShopifyNo longer a candidate
No open fulfillment ordersNothing left to reserve against
No BOM in orderNothing in the order is built from components
All BOMs inactive: reactivate and re-scanReactivate the bills first, then scan again
Migrated from open orders: continue under Open Shopify ordersThe order was migrated with the Open Shopify orders source; anything left to do for it happens there

A row can carry extra notes: how many of its fulfillment orders are already reserved, and the statuses of the reservations it already has.

Orders that are eligible but have a mix of open and in-progress fulfillment orders get a separate Include checkbox. Leave it clear and the order runs without its in-progress part.

The skipped rows are collapsed behind a Show n skipped orders control, so the table opens on what you can act on.

Preview reservations runs the whole thing as a dry run, computed exactly the way the real backfill will be, and shows you precisely what would move:

  • Aggregated material movements — the totals, one line per material and location
  • Per-order detail — the same movements broken down by order and fulfillment order, including the lines that were dropped, the orders that resolve to no movements at all, and any inactive bills that were skipped

Movements are labelled by kind: available → reserved for real Shopify stock, virtual stock deduction 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 → , and preassembled pool draw for pre-assembledPre-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 → stock.

You can archive the preview before committing to it. Download confirmation (PDF), CSV and XLSX all export what is on screen. Back to scan returns to the selection without running anything.

Sometimes only part of an order should be reserved. Edit a downloaded Detail export down to the rows you want, then upload it under Sheet filter. Only the materials the sheet still lists are reserved.

Uploading runs nothing. You still preview and still execute.

The page tells you what the sheet matched: how many rows were skipped for missing identifiers, which orders in the sheet are not actionable, and which are in progress and need their Run box ticked to opt in.

Execute backfill asks for confirmation and names the number of orders. Reservations are then created live.

Execution runs in the background. The page follows it and reports progress — how many fulfillment orders have been processed out of how many expected, and the state of the stock adjustment that follows them. That state reads waiting for all orders to finish, running, completed, completed (some queue messages timed out), failed: check the execution logs, or not needed (no affected BOMs).

When it finishes, the page re-scans, so the orders it handled leave the actionable list.

Failures appear as one notice at the top of the page, and the notice says what went wrong. A separate caution appears when the shop’s state has moved since your scan — new fulfillments, new cancellations — because acting on a stale scan is the one way to reserve the wrong thing. Re-scan and start again; a scan and a preview both write nothing.

Activating a bill only affects orders Shopify sends from then on. Orders that were already open when you activated — or when you installed Assemblified — were never handled, so they have no reservation and no record waiting for fulfillment. The Open Shopify orders source finds them directly in Shopify instead.

It runs the same three stages, with these differences:

  • Scan searches Shopify for open, not yet fulfilled orders. Narrow it with Created from / Created to, or drop a CSV of order numbers to scan only those.
  • Verdicts are its own: an order can be Eligible, Eligible: on hold, Needs a decision, or blocked (not routed, inactive bills, not stocked, not enough stock, incomplete read), and every blocker on the order is listed so you can fix them all before re-scanning.
  • Only the units still to ship are reserved. Units that shipped before the migration are never reserved and never deducted later; fulfillment orders that are already in progress need no opt-in.
  • Orders Assemblified already deducted ask for a decision per order: Reserve from the new count, The old deduction stands, or Leave out of this run.
  • Accounted for externally — from a row’s ⋯ menu you can mark the whole order, or selected materials, as already dealt with outside Assemblified, with a reason. Those materials never move.
  • Execute is Reserve orders. A run that could not finish some orders names each one in Some orders could not be migrated; the next run picks up where it stopped.

The full walk-through — counting stock, activating, what every verdict and decision means, and the limits — is the guide Bring open orders under Assemblified after a stocktake.