AlphaAlpha Docs

Excel Import (Products, UOM, BOM)

Import products, additional units of measure, and bills of materials in a single Excel file

Excel Import

Alpha imports products from one Excel workbook that can contain up to three sheets:

Sheet namePurposeRequired
Products (or default first sheet)Create or update products + their base unitYes
UOMAdd or update non-base units of measure per productNo
BOMDefine bill-of-materials parts per productNo

The flow: go to Products → Import, drag the file, review the preview (sheet names, row counts, unrecognised columns), then confirm.

Always run an import on a small test file first (5–10 rows) before importing a full catalogue. Errors are reported per row and the import continues, but malformed data can still produce records that need cleanup.

Products sheet

Recognised columns (case-insensitive):

ColumnRequiredNotes
idNoIf set, the row updates an existing product (selective merge). If blank, a new product is created.
SKUNoUnique product code
NameYes (on create)Product name
DescriptionNo
SupplierNoSupplier id or name
SubsidiaryNoSubsidiary id or name
CostNoCost on the base unit
PriceNoSales price on the base unit
CurrencyNoISO code (EUR, USD, SRD…)
CategoryNoCategory id or full path
BrandNo
VariantNo
TypeNoRAW_MATERIAL, FINISHED_GOOD, or SERVICE
VisibilityNo
Weight, Volume, CO2NoNumeric
LifetimeNoDays the product stays valid
Reorder Point, Safety StockNoReplenishment thresholds
ReferenceNoFree-text reference
Base Unit NameNoName of the product's base unit (defaults to "Piece")
Base Unit TypeNoCount, Weight, Length, Area, Volume, Time

Rules:

  • An id that does not exist in the tenant creates a new product with that id. Use this to keep stable ids across environments.
  • An id that exists triggers a selective merge — only the columns present in the row are updated, the rest are left as-is.
  • A blank id always creates a new product. If a product with the same name already exists, the row is skipped and reported as an error.

UOM sheet (optional)

Adds or updates non-base units of measure on existing products. Use this to backfill Box / Pack / Krat / Piece variants that the main sheet didn't capture.

ColumnRequiredNotes
productYesProduct id or product name
nameYesUnit name (e.g. Box, Pack, Piece, Krat, Baal)
quantityYesHow many base units fit in one of this unit (e.g. 12 for a Box of 12 pieces)
salesPrice (or price)NoSales price for this unit. Defaults to 0.
costNoCost for this unit. Defaults to 0.
isDecimal (or decimal)Notrue to allow fractional quantities. Defaults to false.

Rules:

  • Existing unit with the same name on that product → updated.
  • New unit name → appended.
  • Trying to write to the base unit is rejected — update the base unit via the main sheet's Base Unit Name / Base Unit Type columns.
  • Missing product, name, or quantity → row is rejected with an error, the rest continue.

Example

productnamequantitysalesPricecostisDecimal
Tomato WholeBox25075false
Tomato WholePack5016false
Tomato WholePiece103.20false
Bun SesameBox48012false

BOM sheet (optional)

Defines bill-of-materials parts for each parent product. Each row is one part.

ColumnRequiredNotes
productYesThe parent product id or name (the assembled product)
partYesThe component product id or name
amountYesQuantity of the component per assembly
unitYesWhich UOM of the component to use (must already exist on that component product)

Rules:

  • The parent and the component must already exist in the tenant (create them via the Products sheet first, or in a previous import).
  • The unit must match a unit name configured on the component product. If you need a non-base unit, add it via the UOM sheet in the same workbook — the UOM sheet is processed before the BOM sheet.
  • A component can only appear once per parent — duplicate rows update the existing entry.

Example

productpartamountunit
WhopperBun Sesame1Piece
WhopperTomato Whole2Piece
WhopperBeef Patty 113g1Piece

Error handling

After the import runs you get a summary with:

  • Created — new products
  • Updated — existing products merged
  • Skipped — rows rejected, with row number + reason
  • Errors — per-row error list (e.g. UOM sheet: product 'Tomato Whole' not found)

Failed rows do not block the rest of the workbook — the import continues and only the bad rows are skipped.

Tips

  • Download the template from Products → Import → Download template — it contains the Products and BOM sheets with the expected headers already in place. Add a UOM sheet manually if you need it.
  • Keep the file under ~5000 rows total across all sheets per import. Split larger catalogues into batches.
  • For repeat imports against the same tenant, always set the id column so updates merge rather than create duplicates.

On this page