Shopify CSV duplicate SKU and duplicate Handle import: check each match
Find duplicate SKUs by source row, understand Shopify Handle matching, and choose which supplier rows to keep before importing.
Start here: isolate the repeated identifiers
Keep an untouched supplier file and work on a copy. Import SKU and barcode columns into Excel as Text before checking them. Add a source-row column before filtering so you can trace every decision back to the original record. Compare repeated SKUs side by side, including title, price and barcode. Decide which rows describe accidental repeats and which need a supplier correction.
Next, compare the proposed product Handles with a fresh export from your store. Review the overwrite setting before submitting anything to Shopify. Keep unresolved rows out of your new-product batch and save the exclusion list for follow-up. This page covers duplicate identifiers only; use the related troubleshooting guide for other import failures.
Shopify matches existing products by Handle, not SKU
A Shopify CSV duplicate SKU check and a duplicate Handle import check answer different questions. Shopify identifies a product by its Handle, called URL handle in its current CSV documentation. SKU is a variant identifier used for inventory tracking. A repeated SKU alone is not the product-matching key for a CSV update. Review both columns rather than assuming that a unique supplier SKU guarantees a new product.
Shopify documents these outcomes: selecting Overwrite products with matching handles replaces existing product values in the matching columns supplied by the CSV. Leaving the option unchecked means products matching an existing Handle are ignored during import. Blank optional cells can overwrite stored values with blanks; omitting an optional column generally preserves its existing values, subject to column dependencies. Do not enable overwrite merely to get past a duplicate warning.
Find repeated SKUs with an Excel COUNTIF example
For an illustrative worksheet with the SKU header in A1 and product records in A2:A100, enter =COUNTIF($A$2:$A$100,A2) in a helper column beside the first product. Fill the formula down, extend the range to your actual last record, and filter for counts greater than 1. Ignore blank SKU cells for this duplicate check and resolve missing identifiers separately. Preserve the source-row column when comparing the filtered results.
COUNTIF counts cells matching a criterion and ignores letter case. Its criteria also recognize wildcard characters, so literal question marks or asterisks need escaping with a tilde. Treat the formula as a screening step, then inspect the actual strings. Rowmoss SKU matching is case-sensitive, so its results can differ from this Excel screen. Check suspicious identifiers against the supplier source before changing their spelling or zeros.
Keep the first row when source order is authoritative
In Rowmoss, conflicting duplicate SKUs are errors by default and are flagged with their source rows. Choose keep first only after confirming that the earliest source row for each SKU is the record you want. Later occurrences are skipped. This suits a supplier file where an agreed ordering makes the first occurrence authoritative; it does not mean the first price is automatically the newest or correct one.
Keep first does not search for a better replacement if the earliest row has another validation error. Correct that row or return to the supplier. Identical valid rows are merged and counted separately. Review merged, skipped and export counts so a smaller output has an explained cause.
Export valid rows when unresolved products can wait
Choose export only valid rows when the clean products can proceed independently and someone will resolve the exclusions. Download the free skipped-row list and retain it with the source file. Without keep first, conflicting duplicate SKU rows remain invalid rather than electing a winner. The skipped list provides the source rows and issues needed to prepare a later corrected batch. At least one valid row is required for an export.
Before downloading, reconcile the intended products with the output and exclusion counts. Do not treat a successful partial export as completion of every supplier record. Assign the skipped products a follow-up task so they do not disappear from your catalog preparation.
Compare against products already in the store
In Shopify, go to Products, choose Export, and select the products to include. For a complete comparison, export all products rather than a filtered subset. In Rowmoss, upload that Shopify product export using the optional store-comparison input. Rowmoss compares existing SKUs and Handles against the uploaded snapshot; it does not connect to your store. Rowmoss currently expects the headers Handle and Variant SKU. If your export uses URL handle and SKU, rename those headers in a comparison-only copy. Retain the original export unchanged for any separate Shopify workflow.
Matches are excluded unless you explicitly allow them. A snapshot cannot show products added after it was exported, so repeat the comparison with a fresh export if the catalog changes. Rowmoss produces new single-variant draft products and does not perform existing-product updates. Separate intended updates from this conversion and review the Shopify import preview before continuing.
Preview your supplier CSV free Pricing details
Written by Zijian Xiao. Check the source, review the import details, and verify the resulting Shopify product records.
I built Rowmoss to make supplier-file checks visible before import: map Title, SKU, Price and optional Barcode, review duplicates by source row, and download new single-variant drafts. It leaves the final import decision with you. Your first 3 files are free, up to 100 source product rows each, with no sign-up. Free use is subject to the shared network allowance; see current pricing and limits.