Skip to main content

Importing articles

Bring products, articles and SKUs in from the Excel template — the import flow, the format rules every column follows, and a field-by-field reference: what goes in each column, the exact format, and where to find the valid values.

The article import brings products, articles and SKUs into the system from an Excel file — whether you're migrating an existing range, creating new articles in bulk, or mass-updating data on articles you already have. This article walks through the import flow and then goes through the template column by column: what goes in each field, the exact format, and where to find the valid values.

Downloading the article import template from the ⋮ menu on the Products page: Import, then Articles, then Template

Running an import

Everything starts from the menu next to New Product on the Products page. Under Import you'll find three separate imports — Articles, SKUs and BOMs. This article covers the Articles import; SKUs (size-level data) and BOMs are their own imports with their own templates — see Importing SKUs and [link to future BOM import article].

  • Template — downloads the import template as an Excel file.

  • Upload — opens a file picker; choose your filled-in template and the import runs.

The template is generated from your brand's configuration, so it is not the same file for every brand: your hierarchy levels, custom fields, price lists and SKU code types all appear as their own columns. Always start from a freshly downloaded template rather than a file saved from another brand or an old project.

The first columns of the import template's header row in Excel

The file has two tabs: Articles — one row per article (colorway) — and SKUs, used only for custom fields on SKU level (see the last section). Headers live in the second row of each tab, inside the pre-built Excel table. Fill in your data as rows of those tables and don't add columns of your own: any column header the import doesn't recognize stops the import with an error.

💡 The import validates the whole file first and saves nothing until every row passes. You can't half-import a file — if there are errors, fix them and upload again.

Rules that apply to every column

  • Semicolon between items — every list is separated by ; — for example S;M;L or SS26; AW26.

  • Pipe between properties of one item — when one item carries two pieces of information they're separated by | — for example S | A-200-03-S or EU | 6109100010.

  • Empty means "leave untouched" — an empty cell never clears anything. On new articles the field is simply not set; on existing articles the current value is kept.

  • #NOTHING# clears a value — for prices and custom fields, write #NOTHING# in the cell to clear the existing value.

  • Names are matched without caring about case — statuses, seasons, tags, categories, suppliers and similar name lookups ignore upper/lower case and surrounding spaces. The exceptions are called out per field below (gender and weight unit must be written exactly as listed).

  • Numbers — both 10.5 and 10,5 work as decimals. Avoid thousand separators.

  • Dates — write dates as yyyy-mm-dd. If your date cells are real Excel dates, convert them with =TEXT(A1,"yyyy-mm-dd").

Most values that point at something configured in the system — statuses, seasons, tags, hierarchy nodes, size systems, categories, custom-field options — must already exist before you import; the import will not invent configuration. A few things are created by the import when new: the products, articles and SKUs themselves, suppliers (when you give a country code), custom colors, tariff codes within an existing system, dated drops, and components created via Principal material.

Product and article identity

Article number — the unique number of the article (the style + colorway). One product with three colorways means three rows with three different article numbers — for example A-200-03, A-200-04, A-200-05. Leave it empty to let the system generate numbers by your numbering logic (see Article numbering). If the number matches an existing article, the row updates that article instead of creating one — that's the whole switch between creating and updating.

Article number (new) — only used on existing articles, for two special moves. Write a new number to renumber the article identified by Article number. Or write #ADD# to add the row as a new article on an existing product — in that case Product number must identify the product, all sizes on the row must already exist on the product, and the row can't carry product-level data. Leave the column empty in a normal import.

Sequential number — the article's sequence within its product, as a whole number. Only relevant when adding articles to existing products or updating; for brand-new products the system numbers articles itself.

Product — the product (style) name. Required on every row that creates a new article. Rows with the same product name (or the same product number) are grouped into one product — so Resourced Jacket on three rows creates one product card with three articles.

Product number — usually left empty: the system generates it from your numbering logic. Fill it in when you want to control the number, when your brand requires manual product numbers, or to identify the product for #ADD# rows.

Example rows in the template: two numbered articles and one row with an empty article number, all on the same product

Hierarchy, category and status

The filter panel on the Products page listing the brand's divisions, product types and statuses

Hierarchy - … — one column per level of your product hierarchy, named after the level (for example Hierarchy - Division and Hierarchy - Product Type). Fill in the node name on each level, top-down — the value on the deepest level you fill in must point to exactly one node. The quickest place to see your levels and nodes is the filter panel on the Products page, and the full tree lives in Admin (see The product hierarchy). Hierarchy is set per product, so all rows of one product must agree.

Product category and Product category - Product — the production category (the construction, for example a leather program vs. a knit program). Product category sets it on the article, Product category - Product on the product. The category must exist and be available under the product's hierarchy node — the master list lives in Admin (see Product categories). Leave blank if you don't work with categories or don't know yet.

The Type of Product dialog on a product, showing the product types of the current division and the production product category

Status — the article's status, written as the status name. Your brand's statuses are visible in the filter panel on the Products page and are configured in Admin (see How statuses work). Empty means new articles get your brand's first status. Articles under one product can have different statuses. Note that a status brings its own requirements — if it requires certain fields, tags or SKU codes, the imported row must satisfy them, and statuses that lock numbers will block later renumbering.

Example rows in the template: hierarchy level columns, product category columns and a status per row

Color

Color - name — the color name as you use it. Required as soon as you fill in any other color field without a palette.

Color - RGB — the swatch color behind the color name, written as three numbers 0–255: r,g,b — for example 255,255,255 for white. Cosmetic; if left empty the system suggests a color from the name or uses the color group's color.

Color - code — your internal code or a Pantone code. Free text.

Color - palette — connect the article's color to an existing palette by palette name. The color is then looked up inside the palette by the code, name and RGB you provided — every color field you fill in must match the palette color. Palettes are configured in Admin (see Colors). Without a palette, the import creates the color as a custom color.

Color - group — the color group by name. Usually unnecessary: when an RGB is known the system assigns the closest group automatically.

Example rows in the template: a custom color with name, RGB and code, and a color looked up in a palette

Gender, size system and sizes

The Gender & Size dialog on a product with the size-system dropdown open, showing the size system and its sizing versions

Gender — one or more of exactly Men, Women, Kids, Babies — written with a capital first letter. Separate multiple genders with semicolon: unisex is Men; Women.

Size system — the size system's name, optionally with the sizing version behind - : a system named Clothing with the version Alpha is written Clothing - Alpha. The version is needed when several systems or versions share a name. You can check the names on any product under Gender & Size, or in Admin (see Size systems). Required as soon as the row has sizes. All rows of one product must use the same size system.

Sizes — the article's sizes, semicolon-separated: S;M;L;XL. Every size must exist in the size system. To also set SKU numbers, put them behind a pipe per size: S | A-200-03-S; M | A-200-03-M. On existing products you can add sizes to an article only if the product already has them.

Example rows in the template: genders, the size system with version, and sizes with and without SKU numbers

SKU codes — EAN and friends

Every SKU code type configured for your brand gets its own column named exactly after the code type — for example EAN and Sample EAN. The values are semicolon-separated in the same order as the sizes on the row: the first code belongs to the first size, and so on. Leave a slot empty to skip a size — 7340123456784;;7340123456791 sets codes for the first and third size only. The item count must match the size count.

Example row in the template: EAN and Sample EAN values aligned one-to-one with the sizes, with an empty slot skipping a size

💡 A code type with strict validation checks the values — an EAN must be 13 digits with a valid check digit, a UPC 12 — and unique codes are enforced against everything already in the system. The code types and their settings live in Admin (see SKU codes).

Principal material

The component type list on the Components page showing full type names such as Woven - Twill

Principal material — the main material of the article, as a component type from your component library — for example Woven - Twill. The valid type names are listed under Type in the filter panel of the component library (click See all). You can go further and give a composition in parentheses, with percentages per material: Woven - Twill (Cotton|80; Elastane|20) — percentages must add up to 100, and the materials must exist in your materials library (see Materials and treatments). The import connects a matching component in the BOM's principal placement, creating one if needed.

Materials that come in variants — where the materials library separates them with a detail, such as an organic and a recycled version of the same fiber — can't be pointed out in this column: a detail in parentheses inside the composition doesn't pass. Write the material name alone; when several variants share the name, the system uses the one without a detail. To pin the exact variant, set the composition on the component instead — through the component import, where Cotton (Organic)|80 works, or directly in the component library.

Example rows in the template: a principal material as a plain component type and one with a composition and percentages

Tags, seasons and drops

Tags — semicolon-separated tag names. Tags must exist before the import (see How tags work). Whether a tag lands on the product or the article follows from its tag category. If the same tag name exists in two categories, point out the category with a pipe: tag name | tag category. On existing articles the tag set is replaced by what the cell says — tags not listed are removed.

Product tags — only used in a special maintenance file where every row carries just Product number and Product tags, for mass-updating product-level tags. In a normal article import, put product-level tags in the Tags column instead.

Seasons — semicolon-separated season names: SS26; AW26. The seasons must exist before the import (see Seasons and drops). On existing articles the list replaces the article's seasons.

Active Season — one season name. Seasonal data on the row — suppliers, prices, seasonal custom fields — is written to this season. Empty means the first listed season on new articles, or the article's latest season on updates. See Seasonality and the active season for how seasonal data works.

Drops — the article's drops, semicolon-separated. Use date forms — 2026-09-30 (a day), w40-26 (a week), q3-26 (a quarter), sep-26 (a month) — or the name of an existing drop. Dated drops that don't exist yet are created; a misspelled drop name is skipped without an error, so double-check names against Admin (see Seasons and drops).

Example rows in the template: tags, seasons, an active season and drops in date forms

Suppliers and origins

Suppliers — semicolon-separated supplier names, written as in the system (see The Suppliers page). A supplier the system doesn't know yet can be created by the import — then you must give its country behind a pipe as a 3-letter country code: New Factory Ltd | CHN. The suppliers are connected on the row's active season.

Origins — the country of origin per supplier, as 3-letter codes (CHN, PRT, TUR), semicolon-separated in the same order as the suppliers. Skip a position by leaving it empty. An origin equal to the supplier's own country can be left out — that's the default.

Active Supplier — one supplier name: the supplier that cost prices and other in-prices on the row are written to. Empty means the first supplier in the Suppliers column.

Example rows in the template: an existing supplier, a new supplier with a country code, aligned origins and the active supplier

Tariff codes

The Tariff Code Systems page in Admin with a tab per system such as EU and USA

Tariff codes (article) and Tariff codes - Product (product) — written as system | code, multiple codes semicolon-separated: EU | 6109100010; USA | 6109.10.0012. The system names are the tabs on the Tariff Codes page in Admin (see Tariff codes and duties) and must exist before the import; the codes themselves are created if new. You can leave out the system | part when the code can only belong to one system. If the article column is empty, new articles inherit the product's codes.

Example row in the template: article tariff code and product tariff codes for two systems

Weight

Weight - gross — the total weight including packaging. Weight - net — the weight without packaging. Decimal numbers.

Weight - unit — exactly g, kg or lbs (lower-case). Required as soon as either weight is filled in.

Example row in the template: gross weight, net weight and the unit

Prices

The price columns mirror your price configuration, so their names differ per brand (see Price configurations and Pricing and the cost breakdown). They all follow the same pattern: the amount goes in the price column as a plain number, and the currency goes in the companion … Currency column as a 3-letter code such as EUR — one price, one currency per field. The currencies must be configured for your brand (see Currencies and exchange rates). All prices land on the row's active season and count for all the article's SKUs alike.

  • Cost Price / Cost Price Target — the purchase price from the supplier (written to the row's active supplier) and its target.

  • Freight (%), Freight + Freight Currency, Duties (%) — set a manual freight percentage, a fixed freight charge, or a manual duties percentage. Writing a value unlinks it from the calculated default; #NOTHING# clears it and links it back. In-prices need a cost-price currency to attach to — on articles without any cost price they can't be set.

  • Sell prices — one set of columns per out-price in your configuration (for example a retail and a wholesale price list): the amount, … Currency, and optionally … Markup Target and … Margin Target as numbers. The out-price must exist on the row's active season.

Example rows in the template: cost price with currency, freight and duties percentages, sell prices with currencies, and #NOTHING# clearing a value

Images, comment and description

Images — one or more image URLs, semicolon-separated. Each URL must be openly reachable (no login in front of it): the import downloads every image and stores it on the article, so a dead or protected link fails the import.

Comment — free text on article level, typically internal notes.

Description — free text, typically the longer e-com style description. When every row of a product carries the same description it is also set on the product.

Related Product — the name of another product to relate this product to. The product must exist (or be created in the same file).

Example row in the template: image URLs, a comment, a description and a related product

Custom fields

Every custom field of yours appears as a column named after the field. Article-level fields use just the field name — for example MOQ per style/color; product-level fields have - Product after the name — for example MOQ per style/color - Product. Which fields exist and their levels is configured in Admin (see Custom fields). The value format follows the field type:

  • Text — the text as is.

  • Single select — one of the field's option values.

  • Multi select — option values separated by semicolon.

  • Number with unit — the number and the unit symbol with a space between: 1 pcs, not 1. The unit must be one of the field's configured units (see Units).

  • Money — amount and currency code with a space between: 100.50 EUR.

  • Files — openly reachable URLs, semicolon-separated, downloaded like images.

Example rows in the template: a number-with-unit value, a text value, a product-level select value and #NOTHING# clearing a field

The SKUs tab

The second tab of the template sets custom fields on SKU level for the articles in the same file. Identify the SKU with Article number and Size — both must match a row and size on the Articles tab — and add one column per SKU-level custom field, same formats as above. Note that SKU codes such as EAN do not go here — they're on the Articles tab, aligned with the sizes. For updating SKU-level data on articles that aren't part of an article import, use the separate SKU import instead: Importing SKUs.

Example rows on the SKUs tab: article number and size identifying each SKU, with a SKU-level custom field value per row

Updating existing articles

The import is also the fastest way to mass-update: export your articles, edit the file, and upload it again — any row whose Article number matches an existing article updates that article. Only the cells you fill in are touched. A few things to know:

  • Lists replace — seasons, tags, images and suppliers are set to exactly what the cell says, so removals happen by leaving items out.

  • Sizes only grow — SKUs can be added and edited via import, never removed.

  • Product-level changes want the whole product — changing the product's hierarchy, number, product-level category, tags or custom fields requires all the product's articles to be in the file, and the rows must agree.

  • Locked numbers stay locked — statuses that lock numbers block changes to article numbers, SKU numbers and locked SKU-code values.

When the import fails

Nothing was saved — that's by design. The error messages point at the rows and fields that didn't pass; the most common causes are values that don't exist yet in the system (a misspelled season, tag or status), a product type that doesn't sit under the row's division, sizes that aren't in the size system, and extra columns the import doesn't recognize. Fix the file and upload again. If you can't get a file through, reach out to us in the chat and we'll help you.

Did this answer your question?