Skip to content

Virtual materials

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 → is a material with no Shopify variant. Assemblified owns its stock entirely — no Shopify product or Shopify inventory is created for it. When you create one, Assemblified checks your Shopify locations to place its opening stock.

Virtual materials appear in the same component picker as Shopify-linked ones, and they’re consumed in exactly the same way when an order executes. The only difference is that nothing is sent to Shopify for them.

  • When to use a virtual material
  • Creating one
  • Adjusting stock
  • What happens at execution time
  • Multi-location
  • Gotchas

Pick virtual when:

  • Consumables. Tape, glue, screws, packaging — things you don’t want cluttering your Shopify catalogue.
  • Trace components. Tiny per-assembly quantities where setting up a Shopify product is overkill.
  • Non-Shopify suppliers. You buy from a vendor that doesn’t sit in Shopify, but you still want to track depletion.
  • Internal-only items. Materials that should never appear in any storefront, even hidden.
  • Labour. An hour of someone’s time, priced per hour. See Track building cost.

Pick Shopify-linked when:

  • You also sell the material on its own.
  • You want Shopify’s location and inventory features (transfers, and anything else Shopify does natively).
  • Something outside Assemblified manages the stock.
  1. Go to Materials. Create virtual material is the primary button in the title bar, and it’s there in every view — you don’t have to switch to the Virtual materials view first.
  2. Choose what you are adding: One material, A product with several variants, or Upload a spreadsheet (which hands you over to the importer).
  3. For One material, fill in the form:
    • Product name and Variant name (both required) — Assemblified keeps the same product-and-variant shape Shopify uses, so a material can have several variants under one name.
    • SKU (optional) — yours to choose, not bound to Shopify.
    • Unit — how BOMs measure this material (pcs, kg, m, L, …). Fifteen are seeded by default; add your own under Settings → Units.
    • Weight and Weight unit (optional) — the physical weight of one unit. On a virtual material this is yours to edit, unlike a Shopify-linked one where it is mirrored.
    • Unit cost and Selling price (optional but recommended) — what one unit costs you, and what it sells for if it’s ever sold on its own.
    • Vendor (optional) — the supplier.
    • Product type and Category (optional) — used to group materials on pick lists. Pick from the values already in use in your store, or type your own.
    • Specifications — free-form notes.
    • Image URL (optional).
    • Non-essential material — see Non-essential materials.
  4. Fill in Opening stock: one Opening quantity per location, right there in the dialog. Leave a location blank if the material is not stocked there.
  5. Save the material. For a product with several variants, follow the numbered sections below.
  1. Choose A product with several variants.
  2. In Product, enter the five shared fields: Product name, Unit, Vendor, Product type and Category. Product name and unit are required. This information applies to every variant.
  3. In Variant 1, enter its variant name, then its own SKU, unit cost, selling price, weight and weight unit, specifications, image URL, non-essential flag and opening stock at each location. Variant name is required; the other details are optional or start with defaults. Enter stock for this variant only.
  4. Select Add another variant to open Variant 2 and enter its own details and opening stock. Repeat for any further variants.
  5. Select Create variants. Every numbered section creates one material under the shared product. Variant 1 and Variant 2 create exactly two materials. The Product section supplies shared information and does not create an additional material.

The material is now usable in any bill of materials or assembly BOM.

Each new material and its opening stock are saved together. If Shopify’s locations cannot be checked, or your store has no locations, creation is refused before the material is saved. Nonzero opening quantities appear in History; empty locations do not add zero-change entries.

If some variants succeed and others do not, the dialog keeps the results open for review. Correct the rows marked refused and use Retry refused rows; already created rows are left alone. An outcome unknown means the app could not confirm what happened. Check Materials and the material’s opening stock before creating it again.

A warning about Logistified or Fulfillified after creation means the material and its opening stock are saved in Assemblified, but the connected app may still need attention. Review that warning without creating the material again. Keep the dialog open while reviewing results: refreshing or leaving the page does not preserve its draft and results.

Assemblified holds a virtual material’s stock per location. You change it from:

  • The material page. In Stock per location, click the Available figure for a location, type the new one and press Enter. It’s written immediately for that location.
  • The row’s Restock action, or Adjust stock in the title bar or the bulk bar. Both open Adjust stock, the grid that changes many materials and locations at once, with Adjust by and Set to modes and a filled-template upload.
  • The create dialog’s Opening stock table, when the material is new.
  • The API, for custom workflows.

Every change is recorded on the material page’s History tab, with what caused it.

When a bill contains a virtual material:

  1. It’s expanded exactly like a Shopify-linked one — the same quantity, the same location rules.
  2. Nothing is sent to Shopify for it.
  3. Assemblified’s own stock for the material is updated instead.
  4. The order’s execution log records the change in the same list as every other component, so the audit trail is complete.

From the customer’s side there’s no difference. On the Shopify side, no inventory moves — there’s no variant for it to move on.

Virtual materials are per-location like everything else: each location has its own available and committed figures, and you edit each one directly on the material page or through the stock adjustment grid.

In practice most stores use virtual materials at one location only. If you run several, the All locations control in the stock adjustment grid’s toolbar narrows it to the ones you care about.

  • They aren’t in Shopify at all. No product, no variant — searching the Shopify admin will never turn one up, and the external-change refresh that Shopify-linked materials get doesn’t apply either. Every change is one you (or an order, a build run or the API) made in Assemblified, and the material page is where it lives.
  • They can’t be sold on their own. If you want to sell the material directly, create a Shopify product and register the variant as a Shopify-linked material instead.
  • Cost is yours to maintain. There’s no cost sync from Shopify. Set the unit cost when you create the material, and update it when prices change.
  • Negative stock is clamped at zero, unless Settings → General → Allow negative inventory in Assemblified calculations is switched on. With it on, a virtual material can stay below zero instead of being clamped.