
Overview
SKUs are one of the most underrated parts of running a Magento 2 store.
A bad SKU system causes:
- Stock errors
- Slow picking and packing
- Confusing reports
- Expensive data migrations later
A good SKU system is invisible. It just works - in Magento, in spreadsheets, in your warehouse, and in the carrier label printer.
The key point: A SKU is not a product code. It's a stable identifier you'll be stuck with for years.
This guide explains how to design a Magento SKU system that scales and stays clean.

What a SKU Is (and What It Isn't)
A SKU (Stock Keeping Unit) should:
- Uniquely identify one sellable variant
- Stay stable for the life of that variant
- Be readable by humans, not just machines
A SKU should not:
- Encode the price
- Encode the supplier (those change)
- Try to be a marketing name
- Repeat the product name
In Magento, the SKU is the join key for almost everything: orders, invoices, exports, ERP sync, barcodes. Treat it accordingly.
Magento SKU Constraints (Things You Have to Know)
1. Maximum length: 64 characters
Magento's catalog_product_entity.sku column is VARCHAR(64).
Anything longer is silently rejected on import.
Aim for 12-30 characters in practice. Leaves room for variants and barcodes.
2. Must be unique across the whole catalogue
You can have:
- One SKU per simple product
- One SKU per child of a configurable
- The configurable parent has its own SKU (separate from children)
You cannot reuse a SKU across two products. Magento will refuse on save.
3. Case is preserved but treated as significant
SHIRT-RED-M and shirt-red-m are different SKUs.
Pick one casing convention and stick to it. Uppercase tends to be safer for label printers and barcode scanners.
4. Special characters are allowed but risky
Magento allows most characters, but these cause problems downstream:
- Spaces - break URL slugs and CSV imports
- Slashes (
/) - break some carrier labels - Quotes / apostrophes - break SQL exports
- Non-ASCII characters - break legacy ERPs
Stick to: A-Z, 0-9, hyphen (-), underscore (_).
A Simple SKU Pattern That Works
A reliable pattern for most stores:
<TYPE>-<MODEL>-<VARIANT>
Examples:
TSHIRT-LOGO-RED-MMUG-CERAMIC-300MLBOOK-MAGENTODEV-HARDBACK
Why it works:
- Sortable in spreadsheets
- Readable in pick lists
- Survives bulk renames
For configurable products, the parent SKU is the same pattern without the variant suffix:
- Parent:
TSHIRT-LOGO - Children:
TSHIRT-LOGO-RED-S,TSHIRT-LOGO-RED-M,TSHIRT-LOGO-BLUE-L
Step-by-Step: Designing Your SKU System
Step 1 - Inventory Your Real Variants
List every dimension a product varies on:
- Size
- Colour
- Material
- Pack size
- Region
Only the dimensions that produce a separately stocked unit belong in the SKU.
If you don't track stock by colour, colour doesn't go in the SKU.
Step 2 - Pick a Type Code
Three to six characters that group the product:
TSHIRT,MUG,BOOK,DESK
Avoid:
- Pure numbers (
001,002) - hard to read at a glance - Supplier codes - suppliers change
Step 3 - Pick a Model Code
The unique identifier for the product family:
LOGO,CERAMIC,MAGENTODEV
This is where you want stability. Once you pick a model code, never reuse it for a different product.
Step 4 - Pick Variant Suffixes
Short, meaningful, consistent:
- Sizes:
XS,S,M,L,XL - Colours:
RED,BLU,BLK,WHT - Pack sizes:
5PK,12PK,24PK
Document the legend in a spreadsheet. Future-you will need it.
Step 5 - Test the Pattern Before Bulk Import
Create five products by hand using the new pattern.
Confirm:
- They import correctly via CSV
- They appear correctly on order emails
- They print correctly on PickPack labels
- They scan correctly on a barcode scanner
Adjust the pattern before you generate ten thousand of them.
Configurable Products: How to SKU Them Right
A configurable product has:
- A parent SKU (the umbrella)
- One child SKU per variant combination
Common mistake: Putting attributes the parent doesn't actually have in the parent SKU.
Right:
- Parent:
JACKET-TREK-2026 - Children:
JACKET-TREK-2026-BLK-S,JACKET-TREK-2026-BLK-M, ...
Wrong:
- Parent:
JACKET-TREK-2026-BLK(a colour the parent doesn't represent)
Keep parent SKUs general and child SKUs specific.
Migrating from a Bad SKU System
If you've inherited messy SKUs, do not rename in place.
Magento's SKU is referenced by:
- Historic orders
- Invoices
- Credit memos
- Reports
Renaming breaks the audit trail.
Instead:
- Add a second attribute (e.g.
internal_sku) for the new pattern - Use the new attribute in operations (picking, exports, ERP sync)
- Leave the original SKU in place for order history
- Phase the old SKU out only on truly archived products
Where SKUs Touch Magento Operations
A clean SKU system makes life easier in:
- Stock management - matching purchase orders to product lines
- Pick & pack - readable labels and pick lists
- Imports & exports - the join key for every CSV
- Barcode scanning - one scan resolves directly to one product
- Reporting - SKU-grouped reports stay grouped after a year
Every Moogento operations module - PickPack, PicknScan, StockEasy, ExportEasy - assumes the SKU is reliable.
If your SKUs are noisy, those modules expose the noise. If your SKUs are clean, those modules become invisible scaffolding.
Common SKU Mistakes
Mistake 1 - Encoding the Supplier
Suppliers change. The SKU shouldn't.
If you switch from Supplier A to Supplier B, you do not want to rename twenty thousand products.
Mistake 2 - Encoding the Price
Prices change weekly. SKUs are forever.
Never embed 9.99 or BUDGET or PREMIUM in a SKU.
Mistake 3 - Free Text in SKUs
RED COTTON SHIRT - LARGE - V2 (NEW) is not a SKU. It's a description.
Strip it down to the structural identifier.
Mistake 4 - Reusing SKUs After Discontinuation
Tempting, but dangerous.
Old orders and invoices still reference that SKU. Reusing it conflates the new product with the old one in every report.
Retire SKUs forever once they're used.
Mistake 5 - Inconsistent Casing
Half the catalogue in lowercase, half in uppercase.
Decide once. Document it. Apply it on every import.
Where Moogento Fits
Tools that depend on SKU quality:
- PickPack - prints SKUs on invoices, packing slips, and barcodes
- PicknScan - resolves scanned barcodes back to SKUs in the warehouse
- StockEasy - quick stock adjustments via barcode-driven SKU lookups
- ExportEasy - SKU-keyed CSV exports for ERPs and marketplaces
These all work better when SKUs follow a consistent pattern and stay stable over time.
Real-World Impact
Stores with a disciplined SKU system typically see:
- Faster picking and packing
- Cleaner reports and exports
- Smoother ERP and marketplace sync
- Lower error rates on barcode-driven operations
A SKU rework rarely shows up on a homepage. It shows up in not having to re-do the catalogue every two years.
FAQs
What is the maximum length of a Magento 2 SKU?
Sixty-four characters - the underlying database column is VARCHAR(64).
Can I change a SKU after the product has orders?
You can, but you shouldn't - it breaks the link to historic orders and invoices. Add a separate operational attribute instead.
Should configurable parent and child SKUs share a prefix?
Yes - it makes filtering, sorting, and reporting far easier.
Are special characters allowed in Magento SKUs?
Technically most are, but realistic stores stick to A-Z, 0-9, hyphens, and underscores to stay safe with imports, labels, and barcodes.
Do SKUs affect SEO?
Not directly - URLs and product names matter more - but clean SKUs make catalogue management dramatically faster.
Next Steps
To clean up your Magento SKU system:
- Audit the existing catalogue
- Pick a pattern (Type-Model-Variant works for most stores)
- Document the variant legend
- Test the pattern on a few products before bulk import
- Migrate progressively, never in place on live products
Get it right once. It pays back forever.
