Material metafield tracking
Assemblified lets you attach custom fields — lot numbers, expiry dates, supplier IDs, calibration dates, inspection flags — to raw materialsRaw materialThe atomic component of a BOM or sub-assembly. Two flavors: a Shopify-linked variant (inventory tracked in Shopify) or a virtual material (DO-side inventory only). Both kinds appear in the same component picker and are consumed identically when a BOM fires — except virtual materials never trigger a Shopify call. Read more → , then capture per-production-batch values inside work ordersWork OrderA planned production run: pick materials, build the items, do QC, and complete — all tracked together. Use work orders when you're building stock ahead of demand or running a multi-day project. Read more → . The system has three layers: a definition you create once, a default value you set on each material, and a per-batch value entered when a work order is built. Linking a definition to Shopify is optional.
On this page
Section titled “On this page”- What a material metafield is
- Create a metafield definition
- Connect a definition to Shopify (optional)
- Set a default value on a raw material
- Track per-production-batch values in work orders
- Common use cases
What a material metafield is
Section titled “What a material metafield is”A metafieldMetafieldA custom key-value field attached to a material — examples include lot numbers, expiry dates, supplier IDs, and inspection flags. Metafields live as definitions in Settings, hold per-material defaults on raw materials, and capture per-production-batch values inside work orders. They optionally link to a Shopify metafield so values can be pulled in from Shopify. Read more → is a custom key-value field that travels with a material. The same definition is reused everywhere a material is referenced, so once you’ve defined “Lot Number” you can capture it on any material on any work order.
The data flows in three layers:
| Layer | Where you edit it | What it captures |
|---|---|---|
| 1. Definition | Settings → Metafields | The name, type, and optional Shopify link. Reusable across every material. |
| 2. Per-material default | Raw material detail → Metafields tab | A current value on the material itself. Optionally pulled from Shopify. |
| 3. Per-batch value | Work order → Metafields tab | The value for this production run, either across all units or per-unit. |
Definitions support four types — text, number, date, boolean — and the input on every layer adapts to match.
Create a metafield definition
Section titled “Create a metafield definition”Definitions live in Settings → Metafields. The same list shows on every material’s metafields tab, so add anything you’ll want to capture before you start filling in values.
-
Open Settings → Metafields. The tab lists every definition the shop has, with type and Shopify-connection columns.
-
Click “Add Metafield”. A modal opens.
-
Name the field. Keep it operator-friendly — “Lot Number”, “Supplier”, “Expiry Date”. The name is what shows up on raw materials and work orders.
-
Pick a type. Text, Number, Date, or True/False. Type is permanent — you can’t switch a definition from text to date later without deleting and re-creating.
-
(Optional) Add a description. Shows up as helper text on the input.
-
(Optional) Link to Shopify. Toggle on if you want this definition to mirror a Shopify metafield — see the next section.
-
Save. The definition is immediately available on every material’s metafields tab.
Editing a definition only changes its name, description, and Shopify link. Existing values keep their snapshots (see Track per-production-batch values). Deleting a definition cascades and removes every recorded value across raw materials and work orders.
Connect a definition to Shopify (optional)
Section titled “Connect a definition to Shopify (optional)”When you toggle Link to Shopify Metafield on, you pick:
- Owner type — Product or Product Variant. Determines which Shopify metafield namespace + key the link maps to.
- Shopify metafield — a dropdown populated from the Shopify Admin API listing the existing metafield definitions for that owner type.
Once linked, Assemblified can pull the current Shopify value into the per-material default. The pull is one-way — values flow from Shopify into Assemblified, not the other way around. The link gives you:
- A prefilled value when you assign the definition to a material (the current Shopify value populates the input).
- A Sync from Shopify button on the raw material’s metafields tab to refresh values later.
- An “Overridden” badge if you change the local value so it no longer matches Shopify, with a Reset button to pull the Shopify value back in.
Set a default value on a raw material
Section titled “Set a default value on a raw material”Once a definition exists, you assign it to specific materials and give it a starting value.
-
Open the raw material detail page. Raw Materials → pick a material.
-
Switch to the Metafields tab. The tab lists every metafield already assigned to this material, with a value column, a source badge (Manual or Shopify), an optional note, and history.
-
Click “Add Metafield”. A modal opens with a definition picker — only definitions that aren’t already assigned to this material show up.
-
Pick a definition and enter a value. If the definition is Shopify-linked, the current Shopify value prefills the input. Override it if needed.
-
(Optional) Add a note. Free-text — useful for “received 2026-01-15” or “verified by ops”.
-
Save. The value is now the default for this material everywhere it gets used.
If any values on the page are Shopify-linked, a Sync from Shopify button appears in the card header. Clicking it refreshes the recorded Shopify value and the lastSyncedAt timestamp without overwriting your local override — the Override badge stays on so you can see the divergence and decide whether to reset.
Every change — create, update, reset, sync — is recorded to a per-value history log, accessible from the row’s history icon. Use it to audit who changed a supplier ID and when.
Track per-production-batch values in work orders
Section titled “Track per-production-batch values in work orders”The headline use case. When a work order is created, every assigned material brings its definitions along. Each production batch can record its own values without affecting other work orders or the material’s default.
Open a work order, switch to the Metafields tab. Each material lists its assigned definitions with two tiers to choose from:
- All units (material-level). One value applies to every produced unit. Use this when “this whole batch came from supplier X” or “every unit shares the same lot number”.
- Per unit. Distinct values per unit (1, 2, 3, … up to the run quantity). Use this when batches arrived at different times — units 1–5 expire June, units 6–10 expire August — or when each finished good carries a unique serial number.
When a material is added to a work order, Assemblified copies the raw material’s current default into the work order with source: prefill so operators don’t re-type values that already exist. Prefill only runs once per material — editing the raw material default later does not retroactively update active work orders.
Definition name, type, and description are snapshotted at the moment a value is entered. Renaming “Lot Number” to “Batch ID” later won’t rewrite history on already-completed work orders — they keep showing whatever the field was called when the value was captured.
On work order completion, material-level values (the All units tier) get bundled into a material_requirements_json metafield written to every linked Shopify order — picker and shipper workflows can read that JSON to see what materials and what notes/lot/supplier values went into the order. Per-unit values stay local to Assemblified and surface in pick lists, PDF reports, and audit logs. See Shopify sync for the completion overlay details.
Common use cases
Section titled “Common use cases”- Lot / batch number (text). Often per-unit when each finished good carries its own lot, or material-level when one batch supplies a whole work order.
- Expiry date (date). Usually per-unit, since one delivery can mix batches with different shelf lives.
- Supplier ID (text, often Shopify-linked). Material-level — the supplier doesn’t change unit by unit, and a Shopify link keeps it in sync with your product catalogue.
- Pre-inspected flag (boolean). Material-level on incoming inspection — flips to true once a QC pass logs the batch as cleared.
- Calibration date (date). For tooling or measurement-sensitive materials — captured at receipt and audited later.