Item Attributes for Fashion
A fashion supply chain runs on variants. The same zipper exists in fifteen colors and four lengths. The same button exists in matte, glossy, and antique brass finishes, across three sizes. The same fabric exists in twenty colorways and two weights. If you model each of those as a separate Item, your catalog explodes and your reports become unreadable.
ERPNext's Item Attribute system is how you model this properly. One Item Template plus a few attributes equals a controlled, queryable set of variants.
How attributes work
The model:
- Define an Item Attribute (e.g., "Color", "Length", "Material").
- Define the values the attribute can take (e.g., for Length: 4cm, 6cm, 8cm, 10cm).
- Create an Item Template (e.g., "YKK Vislon Zipper 5cm").
- Mark the template as a variant parent and pick which attributes apply.
- Generate variants — one per combination of attribute values.
Every variant is its own real Item with its own Item Code, its own stock, its own purchase history. But they all share the template's defaults (supplier, item group, UOM, accounts).
Getting there
Awesome bar: Cmd/Ctrl + K → type
item attribute→ pick Item Attribute ListClick path: Desk → ERPNext → Stock → Item Attribute
Real examples from the apparel supply chain
Example 1: YKK Vislon Zipper — two attributes
YKK ships their Vislon plastic zipper in many lengths and many colors. The right setup:
- Item Template: "YKK Vislon Zipper 5cm"
- Attributes:
- Zipper Length: 4cm, 6cm, 8cm, 10cm, 12cm, 15cm, 18cm, 20cm, 25cm, 30cm
- Color: Black, Navy, White, Beige, Olive, Stone, Red, Indigo (typically links to your Variant master)
Generate variants: 10 lengths × 8 colors = 80 variants, each with its own Item Code like YKK-VIS-5CM-8CM-NAVY. Every PO for YKK zippers references the specific variant; stock reports show balance per length per color.
Example 2: Button — three attributes
A horn button supplier offers several finishes, several sizes (in ligne), and several attachment styles.
- Item Template: "Horn Button — 4-hole"
- Attributes:
- Material Finish: Matte, Glossy, Antique
- Ligne: 16L (10mm), 20L (12.5mm), 24L (15mm), 30L (19mm), 36L (23mm)
- Sewing Holes: 2-hole, 4-hole, shank
Variants: 3 × 5 × 3 = 45 variants. The catalog stays clean; a designer picks "Matte 24L 4-hole" from one dropdown chain instead of trawling through forty-five separate items.
Example 3: Fabric — two attributes plus weight bands
Fabrics typically vary by colorway and (in some categories) by weight or compaction.
- Item Template: "Cotton Single Jersey 180 GSM"
- Attributes:
- Color: typically pulls from your Variant library — Black, White, Heather Grey, Acme Brand Red, etc.
- Width: 150cm, 165cm, 180cm
For a fabric that comes in 30 colorways and 3 widths: 90 variants. Each tracks its own stock balance — critical for cut planning, because you don't want to discover at marker time that the 165cm Black is actually a 150cm roll.
If weight varies meaningfully (heavy denim from 10oz to 14oz), make Weight a third attribute. If it doesn't, keep the weight in the template name and skip the attribute.
Example 4: Metal trims — material as an attribute
A snap supplier ships the same snap in multiple metal types.
- Item Template: "Pearl Snap — 14mm"
- Attributes:
- Metal Type: Brass, Nickel-plated Brass, Antique Brass, Gunmetal, Stainless Steel
- Cap Finish: Polished, Brushed, Antique
Variants: 5 × 3 = 15 metal snap variants. Production knows exactly which they're using; the cost rollup picks the right rate.
When to add an attribute vs. when to make it a new template
A common trap: every supplier difference becomes a new attribute, and the template ends up with seven attributes generating thousands of variants. Use this rule:
- Add an attribute when the difference is catalog-level — the supplier sells the same product across that dimension and you'd reasonably buy across it.
- Make it a new template when the difference is product-level — different construction, different mold, different cost basis. A YKK Vislon zipper and a YKK metal zipper aren't variants of each other; they're different products.
A good test: if a designer would naturally say "I need a Black YKK Vislon 8cm" (one sentence, one item), it's variants of the same template. If they'd say "I need a YKK metal zipper, the 8cm one in Brass" (two distinct sentences), they're different templates.
Discipline tips
- Pick attribute names you'll never need to rename. "Color" is safe. "Color (Hex)" or "Color v2" suggests something didn't get thought through.
- Use the same attribute across templates. If "Color" already exists, use it on every template that has a color dimension. Don't create "Colour" or "Item Color" — duplicate attributes fragment your data.
- Cap attribute values per attribute. A "Color" attribute with 400 values is unmaintainable. Use a controlled list, or (for true colourway flexibility) point at the Variant master.
- Disable old variants, don't delete. A discontinued size is still in your historical POs and stock ledger. Disable it; deletion orphans references.
How variants flow into the rest of GarmentFlow
Once variants exist:
- POs can reference specific variants (or the template, with quantities per variant on the lines).
- PRs post stock against the specific variant — so the Stock Ledger tracks "5cm Black YKK Vislon" separately from "5cm Navy YKK Vislon".
- Material Requests auto-created by Production Batches reference the specific variant the BOM calls for.
- Tech Packs and Production Batches consume specific variants — so cost rolls up to the variant level.
Every layer of GarmentFlow benefits from the cleaner data.
Image: An Item Template for "YKK Vislon Zipper 5cm" with the Variants tab open, showing 80 generated variants across Length and Color attributes.
What to do next
With items and attributes in place, you can issue your first proper Purchase Order. See From RFQ to Purchase Order.