A clean Shopify SKU system saves you hours every week and keeps inventory accurate as your catalog grows. SKUs are the internal codes you use to identify each variant. Get them right and your warehouse, accountant, and ad platform all stay in sync. Get them wrong and you spend Friday afternoons reconciling spreadsheets.
This is the part of store setup most merchants skip on day one and regret on day 400. The good news: you can fix a broken SKU system at any point if you do it carefully and in batches.
This guide covers what a SKU is, how it differs from a barcode or GTIN, the naming conventions that scale, the mistakes to avoid, and how to migrate an existing catalog without breaking your fulfillment.
In this post
- What is a SKU
- SKU vs barcode vs GTIN
- Naming conventions that work
- Common SKU mistakes
- SKUs for variants
- Batch generation
- Migrating existing SKUs
- Export and import via CSV
- FAQ
What is a SKU
A SKU (Stock Keeping Unit) is a unique alphanumeric code you assign to every sellable variant in your catalog. It is internal. Only you, your staff, your warehouse, and your systems use it. Customers never need to see it.
Shopify stores SKUs at the variant level, not the product level. A product called “Linen Shirt” with three colors and four sizes has twelve variants and twelve SKUs. Each one tracks its own inventory, its own location, and its own sales reports.
A good SKU is short, readable at a glance, and decoded by humans without a lookup table. SHIRT-LIN-OLV-M tells your warehouse staff “linen shirt, olive, medium” without opening Shopify.
SKU vs barcode vs GTIN
These three get confused constantly. They serve different purposes.
| Code | Owner | Purpose | Example |
|---|---|---|---|
| SKU | You | Internal inventory tracking | SHIRT-LIN-OLV-M |
| Barcode | You or supplier | Scannable label, often UPC/EAN | 012345678905 |
| GTIN | GS1 (paid) | Global product identifier for marketplaces | 00012345678905 |
SKUs are free and you control them. Barcodes are usually UPC-A in the US or EAN-13 in Europe. GTINs are issued by GS1 and required if you want to sell on Amazon, Google Shopping, or most large marketplaces. Validate any barcode you receive from a supplier with our barcode validator before you trust it.
You can sell on Shopify with only SKUs. The moment you connect Google Shopping, Meta catalog ads, or a marketplace, you need barcodes too. Plan for both upfront.
Naming conventions that work
The pattern that scales for almost every Shopify store: category-product-attribute1-attribute2. Hyphens between segments, uppercase for readability, three or four characters per segment.
Examples for an apparel store:
SHRT-LIN-OLV-M: shirt, linen, olive, mediumSHRT-LIN-OLV-L: shirt, linen, olive, largePNT-DNM-BLK-32: pants, denim, black, waist 32HAT-WOL-GRY-OS: hat, wool, gray, one size
The order matters. Put the most stable attribute first (category never changes), the most variable last (size changes per variant). This keeps SKUs sorted logically in any export.
For larger catalogs, add a numeric product ID after the category: SHRT-1042-OLV-M. This avoids collisions when you have 14 different shirt models that are all linen and olive.
Need a starting point? Our SKU generator builds clean codes from your category, product name, and attributes in one click. Pair it with the product CSV generator to scaffold the whole catalog at once.
Common SKU mistakes
Five mistakes show up in almost every audit of a stale Shopify catalog.
- Using the supplier SKU as your SKU. You lose control the moment you switch suppliers. Always create your own.
- Embedding price in the SKU. Prices change. SKUs should not.
- Using spaces, slashes, or special characters. They break CSV imports, URLs, and barcode printers.
- Reusing a SKU after discontinuing a product. Historical reports get scrambled. SKUs are forever.
- Letting Shopify auto-generate blank SKUs. A catalog without SKUs is a catalog you cannot count.
The tax on these mistakes shows up at year-end inventory or the first time you connect a 3PL. Fix them before either of those events.
SKUs for variants
Shopify allows up to 100 variants per product (2,048 if you enable the new variant limits feature). Every single one needs its own SKU. Skipping the SKU on a “default” variant causes Shopify to treat the variant as an empty value, which breaks inventory sync with most 3PLs.
If you sell color variants and use swatches, the SKU should encode the color so a warehouse picker can verify the right pick without opening a screen. The Shopify color swatches complete guide covers how to map color names to SKU codes consistently.
For combined listings where a single product has many color variants split into separate products, your SKU prefix should still match across the linked products so reports roll up cleanly. The collection page swatches guide on rubikify.com shows how the data structure looks in practice.
Batch generation
Generating SKUs one variant at a time in the Shopify admin is painful past about 50 products. For anything bigger, batch the work.
The fastest workflow:
- Export your products CSV from Shopify admin (Products > Export).
- Open it in Google Sheets or Excel.
- Build a formula that concatenates category, product code, and option values into the SKU column.
- Run the file through our SKU generator for a sanity check or use the CSV generator for new catalogs.
- Import the file back into Shopify (Products > Import).
Test on five products first. If the import preview looks right, run the full batch.
Migrating existing SKUs
Migrating from a messy SKU system to a clean one is the hardest version of this task. Three rules keep you out of trouble.
Rule 1: never reuse old SKUs. If you change the format, every variant gets a new SKU. The old codes go into a lookup column for historical orders only.
Rule 2: keep an old-to-new mapping file. One spreadsheet, one row per variant, columns for old SKU and new SKU. Your accountant and your 3PL will need it for at least a year.
Rule 3: migrate during a slow sales window. Push the change at 2am Sunday, not Black Friday afternoon. Confirm inventory counts before and after.
If your catalog also needs structural cleanup (splitting variants into separate products, merging duplicates, fixing tags), pair the SKU migration with the work covered in the Shopify product CSV import guide. One pass, one freeze window, one set of tests.
Export and import via CSV
Shopify’s product CSV has a column called Variant SKU. That is where your SKU lives. The column next to it, Variant Barcode, is for the UPC or EAN. Do not mix the two.
When you import, Shopify matches rows by Handle. If your CSV has the same Handle as an existing product, the import updates that product instead of creating a new one. This is how you bulk-edit SKUs without manually clicking every variant.
One gotcha: the import overwrites every variant on a product with whatever is in the file. If you only include three variants for a product that has twelve, you delete nine. Always export first, edit, then re-import the full file.
For a step-by-step workflow with screenshots, including how to handle metafields and inventory locations during the round trip, see the variant images FAQ on rubikvariantimages.com.
FAQ
How long should a SKU be?
Aim for 8 to 16 characters. Long enough to encode meaning, short enough to read on a packing slip.
Can two products share a SKU?
No. Every variant must have a unique SKU. Shopify will not block duplicates, but every downstream system will misroute inventory and orders.
Do I need a barcode if I have a SKU?
Only if you sell on Google Shopping, Amazon, or use a 3PL that scans labels. For a Shopify-only direct-to-consumer store, SKUs alone are enough.
Should the SKU include the price?
Never. Prices change. Embedding them in the SKU forces you to renumber the catalog every time you discount.
Can I change a SKU after orders exist?
Yes, but historical orders keep the old SKU on the line item. Keep an old-to-new mapping file for at least a year so you can reconcile reports.





