The component import brings your component library into the system from an Excel file — fabrics, trims, packaging and everything else that fills your BOMs, with suppliers, prices, composition, colors and compliance in one go. It creates new components; it does not update existing ones.
Running an import
Everything starts from the ⋮ menu next to New Component on the Components page, under Import → Components. Template downloads the template; Upload opens a file picker and runs the import. Headers live in the second row, inside the pre-built Excel table — one row per component. Columns the import doesn't recognize stop the import with an error.
⚠️ The component import only creates. It never matches or updates existing components — uploading the same file twice creates duplicates. Import each component once.
💡 The import validates the whole file first and saves nothing until every row passes — if there are errors, fix them and upload again.
The format rules match the other imports: ; separates items in a list, | separates properties of one item, and parentheses hold an item's details. Both 10.5 and 10,5 work as decimals; yes/no fields accept yes, no, true, false, 1, 0; write dates as text in yyyy-mm-dd (convert real Excel dates with =TEXT(A1,"yyyy-mm-dd")).
Name, unit and reference numbers
Name — the component's name, free text. Unit — the unit the component is measured in, written as the unit symbol, for example m or pcs; the unit must exist in Admin (see Units). Left empty, the unit is taken from the price's unit. Ref number and Secondary ref number — your own or the supplier's references, free text. Comment — free text.
The system numbers each component by your numbering logic. To control the numbers yourself, add a Component number column — it isn't in the template, but the import accepts it; the numbers must be unique.
Type, categories and composition
Type — the component type by its full name, for example Woven - Twill; the valid names are listed under Type in the filter panel of the component library and are configured in Admin (see Component setup).
Categories — your own grouping labels, semicolon-separated, free text — the import creates them on the component as written.
Composition — the materials with percentages: Cotton|80; Elastane|20. Percentages are whole numbers that must add up to 100 (a single material can leave it out). The materials must exist in your materials library (see Materials and treatments); a material detail goes in parentheses after the name: Cotton (organic)|80.
Suppliers, prices, origins and MOQ
Suppliers — semicolon-separated supplier names, written as in the system (see The Suppliers page). Optionally add a default flag and — required for suppliers the system doesn't know yet — a 3-letter country code: New Mill Ltd | yes | CHN.
Prices — amount currency/unit, for example 12.50 USD/m. All three parts are needed; the currency and unit must exist for your brand.
Origins — the country of origin as a 3-letter code, optionally with the raw-material origin in parentheses: CHN (IND).
💡 Prices and origins pair with suppliers by position: the first price and first origin belong to the first supplier, and so on. With no suppliers on the row, one price and one origin can be stored on the component itself.
MOQ — the bulk minimum with the sample minimum in parentheses: 500 (50), or just one of them. You can also add a Lead time column (not in the template) with the same format, in whole days.
Colors
Colors — semicolon-separated, each written as name (rgb | code | palette | group | approved | default) — the details are positional, so leave inner ones empty when skipping: Navy (25,40,80|19-3920 TCX). At least one detail must be given; a bare name without parentheses doesn't pass. With a palette named, the color is looked up in that palette (see Colors); without one, a custom color is created. The approved and default flags take yes/no.
Compliance and certifications
Compliance — name (file url | summary | test result | conducted date). The name must match a compliance requirement configured in Admin (see Compliance and certificates); the test result is Pass, Fail or NotSet; the date is yyyy-mm-dd; the file URL must be openly reachable — it's downloaded and attached.
Certifications — name (file url | summary | valid until), with the certificate name matching one configured in Admin.
Attributes and treatments
Attributes — Type: quantity unit, semicolon-separated: Weight: 250 g/m2; Width: 1.5 m. The attribute type must exist and the unit must be one of that type's configured units (see Component setup).
Treatments — semicolon-separated treatment names, with the treatment type in parentheses when the same name exists in several types: Laminated (Coating). Treatments must exist (see Materials and treatments).
Seasons, status, tags and tariff codes
Seasons — semicolon-separated season names; they must exist (see Seasons and drops). Status — a component status by name (see How statuses work). Tags — component tags by name, with | tag category when the same name exists in several categories; tags must exist (see How tags work). Tariff codes — system | code, semicolon-separated; the system must exist, new codes are created within it (see Tariff codes and duties).
Images and files
Images and Files — semicolon-separated URLs. Each URL must be openly reachable (no login in front of it): the import downloads everything and stores it on the component, so a dead or protected link fails the import.
Custom fields
Add a column named after any of your component-level custom fields to set it (see Custom fields). Formats follow the field type, same as the other imports: option values for selects (semicolon-separated for multi select), 100.50 EUR for money, 250 g for number-with-unit. File-type fields can't be set through this import.
When the import fails
Nothing was saved — the import is all-or-nothing. The most common causes are values that don't exist yet in the system (a misspelled type, material, unit, season or tag), a new supplier without a country code, prices missing the currency or unit, percentages that don't add up to 100, and extra columns the import doesn't recognize. Fix the file and upload again — and if you can't get a file through, reach out to us in the chat.









