Skip to content

Importing materials

When a supplier sends you a spreadsheet, or you are setting a shop up from scratch, the importer turns a file into materials. It takes CSV, XLS or XLSX up to 20 MB, lets you say which of your columns means what, shows you exactly what it would do, and only then writes anything.

Materials created this way are virtual materials — Assemblified owns their stock, because a spreadsheet row has no Shopify variant behind it. To bring in materials that are Shopify variants, use Add from Shopify instead.

  • The four steps
  • The columns
  • Mapping your file to them
  • The review step
  • Saved mappings
  • Common gotchas
  1. Upload. Go to Raw materials → More actions → Import from CSV/XLSX. Drag a file in or browse for one. If you do not have one yet, the dialog offers a CSV template and an XLSX template with the expected headers already in place.
  2. Map columns. Assemblified matches what it recognises automatically and shows you the rest. Point each of its fields at one of your columns, or skip it.
  3. Preview and validate. Every row is checked against the mapping. You get a count of valid and invalid rows, a preview of the good ones, and a list of the bad ones with the reason for each. Invalid rows are skipped, never guessed at.
  4. Review the import. The last step is the one that knows about your existing materials: which rows already match something you have, what should happen to those, and whether unknown units may be created. Confirm, and it writes.

Nothing is written until you confirm on the last step.

ColumnRequiredNotes
Product NameYesRows sharing a product name become variants of one product.
Variant NameYes
Unit CostNoA number, 0 or more. Blank counts as 0.
Unit PriceNoA number, 0 or more. Blank counts as 0.
UnitYesA unit symbol, at most 16 characters. Must exist, or be created during the import.
Initial InventoryNoA number. Blank counts as 0.
SKUNoKept as text, so 123-4 stays 123-4.
VendorNo
Product TypeNoLeave the column out entirely and an update keeps what is already stored.
CategoryNoSame.
SpecificationsNoFree-form notes.
Image URLNo
WeightNoA number, 0 or more. Needs a Weight Unit.
Weight UnitNoMust already be an active unit in the Weight category. See Weight.

The downloadable template writes these headers in this order.

Your file does not have to use those headings. The mapping step shows one row per Assemblified field with a dropdown of your file’s columns, and marks each one Mapped, Not mapped or Required. A required field left unmapped is called out before you can continue.

Common alternative spellings are recognised for you — Cost, Purchase Price, Einkaufspreis for Unit Cost, and so on — as are the older templates whose required headers ended in *.

Two format settings sit above the mapping, because a spreadsheet is ambiguous about both:

  • Number format — US (1,234.56) or EU (1.234,56).
  • Date format — not used by the material columns, but offered by the same wizard.

If your file has two columns with the same heading, the importer says so and maps only the first.

This is where the importer compares your rows with what you already have. Rows are matched on product name plus variant name, and the badges at the top count them: how many rows the file has, how many are ready, how many have errors, how many already exist, and how many would be created or updated.

Materials that already exist is the decision:

OptionWhat happens
Create new only (skip existing)Rows that match something you have are left alone.
Update existing onlyOnly the matching rows are written; new ones are ignored.
Create new and update existingBoth. New materials are created first, then the updates applied.

When updating, Add to the existing quantity decides what the Initial Inventory column means: switched on it is added to what is there, switched off it replaces it.

Create missing units of measure during import appears when your file uses unit symbols Assemblified does not know. It names them, and turning it on creates them as custom units before the materials are saved — so you do not have to abandon the upload to go and add them by hand. Weight units are never created this way: an unknown Weight Unit fails the row, and you add it under Settings → Units first.

When you confirm, the button says exactly what it will do — Create 40 materials, Update 12 materials, Process 52 materials. Afterwards you get the counts back, and any rows that could not be processed are named rather than silently dropped.

If the same supplier sends you the same shape of file every month, you do not have to re-map it each time. On the mapping step, tick Save mapping as template and give it a name. Next time, pick it from Pre-load a saved mapping on the upload step and the mapping is filled in for you.

Saved mappings belong to this import type, and you manage them under Settings → Import templates. A template that refers to a field that no longer exists loses that entry and tells you so.

  • A missing product or variant name. The column is not mapped, or the cell is empty. Both are required on every row, and the message names the one that is missing.
  • A unit symbol your shop does not have. The row fails unless you turn on Create missing units of measure during import, or add the symbol under Settings → Units first. The message lists the built-in symbols.
  • A weight unit your shop does not have. Weight units are never created automatically. Add it in the Weight category first.
  • A number that does not read as a number. Usually the number format: a file written with 1.234,56 needs the EU setting.
  • No valid rows at all. Check the mapping and the value formats before touching the file — the wizard lets you go Back and change the mapping without re-uploading.
  • Warnings are not errors. Zero cost, zero price, no SKU, no vendor, a price below cost and a SKU that repeats inside the file are all flagged but still imported.