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 stockStock of finished goods and subassemblies already built and on the shelf, counted per location. For Shopify-linked finished goods, these units are part of the applicable on-hand balance, not extra stock to add to it. A work order draws subassemblies 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 store’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: not now, not when the order ships, and not if it is refunded or cancelled. To mark many orders at once, select them and choose Mark as accounted for… in the table header; one reason applies to all of them, and orders that must be decided one by one are listed and left alone.
  • Already took the stock off by hand? An order whose materials you deducted yourself often shows not enough stock. It can still be marked Accounted for for the whole order (or, if Assemblified deducted it, The old deduction stands): those choices move nothing, so the shortage does not block them. You can also mark only selected materials, as long as you include every material that is short; the materials you don’t mark are reserved as usual.
  • 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.