One repeated SKU can turn a routine catalog update into a guessing game. During a WooCommerce product import, you need each row to point to the right product, whether you’re adding new items or updating ones already in your store.
The fix starts before you upload the CSV. Check the file against your live catalog, choose the right import mode, and test a small batch. Here’s how we’d keep the process controlled.
Why duplicate SKUs cause import trouble
A SKU is the stock code you use to identify a product or variation. WooCommerce can use that code to match an import row with an existing item. That’s handy when IDs differ between stores, but it leaves little room for an accidental repeat.

A match can change an existing product
WooCommerce’s product CSV importer documentation explains that its built-in importer can match existing products by ID or SKU. When you select Update existing products, matching rows update those products; rows without a match are skipped.
That makes the SKU column worth checking twice. If your file assigns an existing SKU to the wrong row, you risk updating an item you never meant to touch. We treat a SKU as an identifier, not a handy label that can be reused.
Variations need their own codes
A shirt with three sizes may have one parent product and three variations. If you track each size separately, give each variation its own SKU. Don’t copy the parent’s code into the variation rows or reuse one size’s code for another.
The parent relationship matters too. A variation’s parent reference should point to the correct variable product, while its SKU identifies that particular option. Check both fields before a large import.
Clean the CSV before you upload it
Your CSV is easier to fix while it’s still a spreadsheet. Once a bad row reaches the store, you also have to work out what changed.

Find repeats inside the incoming file
Open the CSV and inspect the SKU column as text. Sort it or use your spreadsheet’s duplicate-highlighting feature to bring repeated values together. Check products and variations in the same pass.
Look closely at codes with leading zeros, extra spaces, or altered capitalization. Spreadsheet software can change how a code displays or saves, so compare the saved CSV with the original source file. Keep an untouched copy before making corrections.
If two rows share a SKU, decide what each row represents. Are they duplicate records for one product, or two distinct products that need separate codes? Don’t delete a row until you know which answer is right.
Compare the file with your store
Export your current products and compare their SKUs with the incoming file. A repeated code inside the CSV is one problem; a code already assigned to a different live product is another.
Match each incoming row to the product name, type, variation, and intended action. For an update, confirm it identifies the item you mean to change. For a new product, confirm the SKU isn’t already in use.
A clean CSV can still target the wrong product. Check its SKUs against the live catalog, not only against other rows in the file.
If you’re moving a complex variable catalog, keep the importer’s format in mind. WooCommerce also documents variation imports for its Product CSV Import Suite, an extension workflow with a separate variations CSV. Follow the instructions for the tool you’re using rather than mixing its columns with the built-in importer’s.
Decide whether you’re adding products or updating them
This choice controls what happens to rows that match existing items. Make it before you edit prices, stock, or descriptions in bulk.
Use updates for products already in the store
If the products exist and you’re changing their details, prepare the CSV as an update file. Match each row using the right ID or SKU, then select Update existing products in the built-in importer. WooCommerce skips rows it can’t match in that mode.
We’d start with a fresh export from the destination store. Its IDs and SKUs give you a practical reference for the products you’re about to change. If a row contains identifying information that points to different items, stop and correct it rather than hoping the importer picks the one you intended.
Only change fields you mean to update. An old CSV with yesterday’s stock quantities can overwrite changes made by today’s orders. Reconcile recent sales immediately before a live inventory update.
Keep new products separate when possible
For genuinely new items, assign unique SKUs and check them against the existing catalog first. Importing new products separately from updates makes unexpected matches easier to spot.
Use a short comparison to settle the plan:
| Your goal | File check | Import approach |
|---|---|---|
| Add new products | Confirm every SKU is new and unique | Import as new items |
| Change existing products | Confirm each ID or SKU identifies the intended item | Select Update existing products |
| Add some and update others | Separate new SKUs from existing matches | Run controlled batches |
The split takes a little preparation, but it gives you a much clearer import report.
Run a small WooCommerce product import first
Ready to upload? Test a handful of rows before committing the whole catalog. Choose a mix that represents your real file: a simple product, a variable product if applicable, and an item with the fields you’re updating.
Protect the live store
Save a current product export and a restorable site backup. For a complete rollback, you need the database as well as the site files. Our WooCommerce hosting launch checklist covers backups, staging, and the other store basics worth checking before a bulk change.
Run the sample on a staging copy when you can. Check that its catalog reflects the store you’re preparing to update. If your shop keeps taking orders, remember that staging stock can quickly fall behind live stock. Use the test to verify mapping and product behavior, then refresh live quantities before the final run.
Map columns and check the result
In WordPress, go to Products > All Products > Import. Upload the CSV, review the column mapping, and confirm that WooCommerce recognizes your SKU, ID, product type, and variation-related fields. Select Update existing products only if this file is meant to change existing items.
Run the sample and inspect the import result. Then open the affected products in the editor and on the storefront. Check names, SKUs, prices, stock, variation options, and images where relevant. A completed upload tells you the process ran; it doesn’t replace a product-by-product spot check.
If you use an extension instead of the built-in importer, follow that extension’s controls. WooCommerce’s Import Export Suite instructions describe a separate product import path, so don’t assume its screens or matching settings are identical.
Fix conflicts before rerunning the file
An error deserves a pause, not an immediate second upload. Save the import report and note which rows were accepted, skipped, or rejected. Then compare those rows with the live products.
Trace the conflicting code
Search the CSV for the reported SKU. Next, search the store for that code and inspect any matching product or variation. Compare the product type, name, parent product, and intended action.
If the row belongs to an existing item, correct its identifier or update settings. If it belongs to a new item, assign the right unique SKU. Fix the source CSV too; otherwise, the same problem returns on the next import.
Don’t remove a live product merely to free up its SKU. Check whether it’s published, hidden, or part of a variable product first. A code conflict may point to a catalog decision that needs a person, not a bulk edit.
Recheck accepted rows before another attempt
Some rows may already have imported successfully. Export or inspect the affected products before rerunning the full file, especially if prices or stock were included. We prefer a corrected file containing only the rows that still need attention.
For inventory changes, compare the corrected quantities with recent orders immediately before the live run. Then import during a quieter period and check sample stock levels afterward. Keep the original export so you can trace a mistake without relying on memory.
Give bulk imports a safer home
Duplicate SKUs are a data problem; hosting won’t choose the right code for you. Good hosting does make the surrounding work easier. You want backups you can restore, staging for the trial run, and support when an import times out or the store behaves unexpectedly.
Our WordPress hosting plans include daily backups and staging on the plan shown with those features, along with security tools and support. Check the plan details against your catalog size and workflow before you buy. If you’d rather have us handle more of the WordPress upkeep, compare our managed WordPress hosting options too.
For a larger store, check server resources before uploading a large file. A smaller batch is easier to verify and easier to troubleshoot if something fails. Hosting capacity and clean product data work together; neither replaces the other.
Key takeaways
- Give every product or variation that needs a SKU its own code, and check incoming codes against your live catalog.
- Keep new-product imports separate from updates where practical. Select Update existing products only when you intend to change matching items.
- Back up, test a small batch on staging, and inspect the resulting products before importing the full file.
- If an import reports a conflict, check what already succeeded before you rerun anything.
FAQ
Will WooCommerce automatically remove duplicate SKUs from my CSV?
Don’t count on the importer to clean your source file. The built-in importer supports product matching and updates, but its documentation doesn’t describe a dedicated pre-import cleanup that resolves repeated SKUs for you. Find and correct conflicts in the CSV and existing catalog before uploading.
Can I match products by ID instead of SKU?
Yes. WooCommerce’s built-in product importer can match existing products by ID or SKU. IDs from the destination store are useful when you’re updating its current products. Check the destination export first, especially if the CSV originally came from another store.
What if an existing product has no SKU?
Don’t invent a code without checking your catalog rules and connected systems. If you’re updating that item, use its destination-store ID as the match and verify the result with a small test. If you’re assigning a new SKU, confirm that suppliers, inventory integrations, and variations don’t already use it elsewhere.
Can I reuse a SKU after deleting a product?
First, confirm the product is truly the one you intend to remove and check for related variations or integrations. Reusing an old code can confuse future imports and external inventory records. We’d choose a new, unique SKU unless there’s a clear reason to preserve the original identifier.
A cleaner import starts with a clear match
That first repeated SKU doesn’t have to derail your catalog. Check the file against the live store, separate additions from updates, and prove the mapping with a small test.
With a backup and staging ready, you can move ahead without guessing which product each row will touch. Unique codes and verified matches make the next WooCommerce product import far easier to trust.





