A manufacturer keeps a work glove in four sizes and three colours in the ERP. The catalogue shows one product, the warehouse holds twelve items, the accounts carry twelve numbers, and the shop is supposed to show the customer a single page on which they pick colour and size. Between these views sits the variant matrix: the question of which features span an axis, which combinations are actually stocked, and how a base number plus two feature values becomes an article number that means the same thing in both systems. Features are not the scarce resource here — the ECLASS classification model offers about 48,000 product classes (ECLASS) and provides more than 23,000 unique properties (ECLASS). Which of them can carry a variant axis is decided by the item master, not by the standard.
Key takeaways
- Not every feature is a variant axis. Axes need a closed list of values; the feature model for technical product data distinguishes four feature types (ETIM) — alphanumeric, logic, numeric and range.
- Every variant is an item in its own right. The allocation rule in the general specifications requires a unique number for each different product and names size and colour of a garment as an explicit example (GS1).
- The article number is built from a base number plus a postfix. The catalogue exchange format extends the base article number by a postfix per feature value (BMEcat); the base number has to stay unique on its own.
- The matrix is rarely fully populated. Three colours and four sizes produce twelve cells, and fewer are usually stocked — combinations that are not stocked need a state of their own rather than a stock level of zero.
- Price differences break the variant family. Under the catalogue format, item variants have no effect on the price of the item (BMEcat); as soon as one version costs more, these are separate items with separate prices.
Why a variant item is not an item
In the shop, the variant item is a presentation format. It carries the title, description, category and the selection fields; what can be bought is one of its versions. In the ERP this presentation format often does not exist at all. There you find twelve items with twelve numbers, twelve stock levels, twelve purchase prices and twelve storage bins, connected at best through a base number field or an item group. The allocation rule for article numbers is clear on this point: each different product is identified by a unique number, so each variant of a product is assigned a different one, and the text explicitly names every size and every colour of a garment as an example (GS1). Anyone who connects an inventory system to the shop therefore transfers items and has to derive the grouping from them, not the other way round.
This asymmetry is not a defect but a division of labour. The shop needs the grouping, because otherwise twelve nearly identical pages compete with one another and the customer has to hunt for the right size. The ERP needs the individual number, because stock, reservations, picking, stocktaking and contribution margin all hang on it. Trouble starts when the integration invents the grouping instead of deriving it. Whoever maintains the variant group in the shop by hand has two versions of the truth from the first new colour onwards: one in the item master and one in the shop database. How a durable transfer path is built instead is described in the article on the product data pipeline between PIM, ERP and shop.
Which features can carry a variant axis
A variant axis is a feature whose values can be counted and which separates every version unambiguously from the others. Classification models offer a usable template here, because they sort features by type. In the feature model for technical product data there are four: alphanumeric, logic, numeric and range (ETIM). Only the first type is suitable as an axis out of the box, because each alphanumeric feature of a class comes with a fixed, alphabetically ordered list of permitted values (ETIM). Numeric features become an axis once someone puts them on a grid: a length in millimetres turns into an axis as soon as the lengths actually stocked are fixed as a list. Which fields come from the ERP and which from product data management is settled by the field mapping between ERP and shop before the first import.
Alphanumeric (A)
Logic (L)
Numeric (N)
Range (R)
Free text
Derived values
The variant matrix and its gaps
Once the axes are fixed, the matrix is pure combinatorics at first: three colours times four sizes gives twelve cells. All twelve are rarely stocked. Red does not come in XL, blue has been discontinued, the special size arrives with the next season. An integration that merely forms the cartesian product creates twelve purchasable variants in the shop and leaves three of them permanently at zero stock. The customer sees an option they cannot buy, the search engine sees an offer without availability, and sales receives enquiries about items that do not exist. This shows up most sharply in ranges with many axes — in ERP integration for fashion and textiles, size, colour and cut are the normal case, and the matrix quickly has more gaps than filled cells.
| State of the combination | Where it comes from in the ERP | What the shop should show |
|---|---|---|
| Stocked and available | Item created, stock above zero | Purchasable, with the delivery time from the stock record |
| Stocked, currently out of stock | Item created, stock at zero, replenishment scheduled | Visible and not purchasable, with a date or a notification option |
| Not stocked | Combination absent from the item master | Option blocked, no detail page of its own, no basket state |
| Discontinued | Item blocked or flagged as phasing out | Removed from the selection, detail page still reachable for existing customers |
Article numbers per variant: base plus postfix
The numbering logic decides whether variants can still be matched later on. The catalogue exchange format for product data solves this with an addition to the base number: the variants extend the base article number of the item by a postfix (BMEcat). Each axis contributes exactly one postfix, and the order of concatenation is fixed in the catalogue so that the same feature combination produces the same number structure across all item families. The second condition of the format matters just as much: the base article number has to be unique on its own even when variants are in use. Anyone who builds the base number from a speaking abbreviation that only becomes unique through the postfix loses precisely that property — the same trap the article on units of measure and pack sizes describes for the quantity side.
Base article number ART-10042 unique, even without a postfix
Axis 1 Colour 001 = black 006 = red 007 = blue
Axis 2 Size -S -M -L -XL
Concatenation base + colour postfix + size postfix
ART-10042-001-S stocked, available
ART-10042-001-XL stocked, available
ART-10042-007-XL not stocked option blocked in the shop
ART-10042-006-L not stocked option blocked in the shop
ART-10042-006-XL not stocked option blocked in the shopFix the postfix order once
When a variant needs its own GTIN
The internal article number governs domestic use, the globally unique article number governs the exchange with trading partners. Its allocation rule is strict: each different product is identified by a unique number, so each variant is assigned a different one, and the text names size and colour of a garment as an explicit example (GS1). In practice that means anyone running variants in the shop and also publishing the items through a marketplace integration needs the globally unique number per variant in the item master rather than per product group. Without it, matching falls back on names and descriptions, and the assignment becomes guesswork — with returns that nobody can post cleanly to an item.
For differences that do not justify a globally unique number of their own, the standard offers two additional element strings. The internal product variant has two digits and thereby allows 100 versions to be created for one number (GS1); it is meant for distinctions that are none of the trading partner's business, and the standard states expressly that it must not be used where the variation would trigger the allocation of a different number under the allocation rule. The second element string, for consumer product variants, is alphanumeric and holds up to 20 characters (GS1); it covers differences that do not require a new number but do require communication between trading partners. Neither replaces the number per variant, they complement it. Where another traceability level sits below the variant, a third layer appears; how to organise that is shown in the article on batches and serial numbers between ERP and shop, and where proof of origin is attached to the item as well, the due diligence data from the ERP under the EUDR comes into play.
Not stocked is not sold out
The most common mistake in variant integrations is a missing state. The shop knows purchasable and not purchasable; the ERP knows created, blocked, phasing out and absent. Mapping all of that onto a stock level of zero throws four situations into one pot and removes the option of treating them differently. A combination that will not come into existence belongs out of the selection. One that arrives in two weeks belongs on the page with a date. A discontinued one belongs out of the selection while its detail page stays reachable, as long as existing customers are looking for spare parts or repeat purchases. This case distinction is the classic job of middleware between ERP and shop, because it belongs neither in the ERP nor in the shop database but in the path between them.
- Read the state from the ERP instead of guessing it: blocking flags, phase-out flags and replenishment dates are separate fields and belong in the transfer individually.
- Transfer combinations that are not stocked as a blocked option, so the shop can grey out the button instead of building an empty detail page with an unsellable offer.
- Transfer stock per variant rather than per product group — the total across all sizes says nothing about the availability of XL.
- Send replenishment dates along, otherwise the only statement the shop makes is the absence of stock, and the customer assumes the version has been dropped.
- Take phase-out items out of the selection but keep their detail page reachable and point from there to the successor variant, so links and bookmarks do not run into a void.
Prices, stock and images per variant
At this point the catalogue format makes a stipulation that many projects overlook: the item variants have no effect on the price of the item (BMEcat). Variants in that sense are versions that cost the same. As soon as one size carries a surcharge or a special colour is bought in at a higher price, the variant family is the wrong construct: these are then items in their own right with prices of their own, merely displayed together in the shop. That distinction decides whether price maintenance in the ERP reaches the shop or falls back to the family price on the way. Which building blocks work together here is shown in the overview of our ERP integration services.
Stock and images follow the same logic but at a different granularity. Stock hangs on the individual number, whereas the image usually hangs on a single feature value: one image set for black covers all four sizes, and one set per variant would be the same photograph three times over. A workable assignment therefore maps images per feature value and lets the variant refer to them. For prices that differ by customer group or scale, the separation between list price and negotiated price stays as it is; how that path is built is described in the article on price synchronisation in B2B. The same applies on the stock side as soon as several warehouses are involved — see inventory synchronisation across multiple warehouses.
The matrix is a statement, not a calculation
Taking features from the classification standard
Anyone who invents feature axes also maintains them: in every language, for every channel, with every extension of the range. Classification standards take that work off your hands and supply the keys that let values be compared by machine. ECLASS describes every product and service with an eight-digit code (ECLASS) and provides the properties to go with it; the model covers about 48,000 product classes (ECLASS) and more than 23,000 unique properties (ECLASS). The feature model for technical product data takes the opposite route and describes each feature by description, feature type, unit and/or value (ETIM). In wholesale this is not a luxury but the precondition for a range showing the same feature values across several channels.
Both standards are versioned, and the version belongs in the transfer. The current version of the technical model is ETIM 10.0, released in December 2024 (ETIM); official international releases appear about every three years (ETIM), with intermediate releases in between. From one release to the next, features can be added, values renamed or classes merged. An integration that stores the feature key without a version can no longer say which release a value was once valid against, and every migration turns into manual work. That is the same thought as in master data synchronisation across several systems: a key without provenance is a value without meaning.
Variants in catalogue exchange and structured data
Catalogue exchange brings up a condition that regularly causes rework in projects: a feature carries either a variant list or a fixed value, not both (BMEcat). Colour is therefore either an axis with three versions or a fixed value of black. The hybrid form, in which an item carries a colour value and additionally spans colour variants, is not provided for by the format. That is not bureaucratic ballast; it prevents exactly the state in which the head item claims a colour that its variants contradict. Anyone generating the catalogue out of the ERP should put this check into the interface and let the export fail rather than ship a catalogue the recipient rejects later.
On the output side, the structured data model for search engines has an expression of its own. The type for product groups describes a group of products that vary only in certain well-described ways, and it brings three properties of its own for that purpose (schema.org): the list of variants, the identifier of the group, and the statement of which features vary. It is worth checking the status before implementing: the vocabulary lists these terms in its area of new terms and expressly asks for feedback from practice there, because the definitions are still being sharpened. Anyone emitting them should keep the markup per variant complete — its own number, its own price, its own availability — so that the group stays usable even when a consumer does not recognise the group type. If you would like your variant structure reviewed across both systems, we will go through your item master in an initial call.
Test cases before you switch over
- One item with two axes and one blocked combination: does the blocked option appear in the shop as unselectable rather than as sold out?
- Create a new colour in the ERP: does it show up in the shop as an additional option without anyone touching the variant group by hand?
- Block a variant in the ERP: does it disappear from the selection, does its detail page stay reachable, and does it point to the remaining versions?
- Cross-check the postfix order: do two item families produce the same number structure for the same feature combination?
- Check number allocation: does every purchasable version carry a globally unique article number of its own, or do several versions share one?
- Test a price deviation: does a version with a differing price get its own price, or does it fall back to the family price?
- Count stock: does the sum of variant stock in the shop match the sum in the ERP, and does each individual position match as well?
- Check the feature version: does the transferred feature value record which release of the classification standard it comes from?
The variant matrix in the shop is a picture of the item master, not a proposal to it. As soon as the shop shows combinations the ERP does not stock, the customer is negotiating over goods that do not exist.
Sources and Studies