Craftshift logo

Shopify Duplicate Products: Find, Merge, Delete (Without Breaking SEO)

shopify duplicate products find merge delete

p class=”mw-100″>Every Shopify store has shopify duplicate products. Sometimes these product duplicates occur because of a mis-typed CSV import that got uploaded twice. Other times, shopify duplicate products are the result of a fluctuating exchange rate during a drop shipping import on different days and the resulting “Red Shirt” and “red shirt” products. Still, shopify duplicate products occur when a store owner intends to create a new variant for a product by copying the original product, but then forgets to delete the original, resulting in an unused and invisible duplicate product that your store’s SEO is eating away at.

A comprehensive guide on how products become duplicates, ways to search for them, merge or delete them, and review of apps that solve this problem. Including a rant on how you wish this problem would never happen in the first place.

What’s in this guide

How duplicates actually happen

Five common sources, roughly in order of how often we see them:

  1. Re-running a CSV import without the “Overwrite existing products with matching handles” setting. Shopify dedupes by handle, and a second run with slightly different handles (different punctuation, a trailing space) creates fresh copies.
  2. Dropshipping syncs. Apps like DSers, AutoDS, and Spocket pull from suppliers on a schedule. When a supplier renames a product upstream, the sync sometimes creates a new Shopify product instead of updating the old one.
  3. Staff duplicating products to make variants faster (“let me copy this and change the color”), then forgetting to delete the original.
  4. Multi-language setups gone wrong. Stores that create a Spanish version of a product as a separate product (instead of using Translate & Adapt) end up with two of everything.
  5. POS syncs that push retail SKUs as new products when they already exist online.

Finding duplicates

You have three fields to match on. Each catches different duplicates.

Match byCatchesMisses
SKUIdentical products with same inventory codeProducts without SKUs set
TitleExact and near-exact name duplicatesRetitled copies, case differences
Barcode (UPC/EAN)Retail duplicates, POS overlapsProducts without barcodes
Handle (URL slug)Re-import duplicates with “-1” suffixManual copies with different handles

Manually – Export your catalog as a CSV, then open it in Google Sheets and use =COUNTIF(B:B,B2)>1 to highlight any duplicates. You can also use this formula on the title or barcode column. Once highlighted sort through and take note of the product IDs you wish to delete along with their corresponding variation IDs.

The problem with having a “collection” of similar shirts. You may have multiple of a single style in your collection with different numbers of reviews, potentially different “top rated” features and a varying number of Google results. Deciding which one is best is tough to do with just a spreadsheet. You have to look at them.

Merge vs delete (this matters more than you think)

Shopify doesn’t have a “merge products” button. You can choose a winner and delete the loser, OR manually copy all the content from the product you lose to the product you are trying to win. When you delete a product, the URL no longer exists unless you set up 301 redirects. Dropped URLs can harm your rankings. Dropped URLs in Instagram and Pinterest ads harm your bottom line.

The rules we follow:

Wait, what? Combining instead of deleting?

-This common problem has an answer that most blog posts miss. Your “duplicates” may really be separate, intentional products that just happen to have similar sounding names (e.g. “Red T-shirt” and “Blue T-shirt”). These products have their own separate URLs which can make up a considerable amount of your site’s overall SEO. If you instead create a combined grouped listing which includes swatches, you get the best of both worlds: all the URLs remain live, and now your customers can easily see and compare the different versions of a single product.

Rubik Combined Listings bulk grouping

Rubik Combined Listings allows you to create groups of products from a bulk listing. It can even use the title pattern, tags or metafields to automatically create the groups. We’ve seen up to 60 ‘near duplicate’ products get automatically created into 12 meaningful groups in one go. Every URL stays live and you can have swatches on the collection pages, with each colour ranking for the corresponding query. Currently it supports up to 2048 variants per product, but only for our customers on that side of the world!

The actual duplicate delete path

When you finally decide that you want to delete an object, not merge with it, or group with it, you want that done as quickly as humanly possible, since clicking through Shopify’s admin interface one, two or three objects at a time is just plain painful. Here are two techniques to help make the process less painful:

A real merchant review from someone who stopped deleting and started grouping:

“Was having difficulties with 5 other apps before I found this one that worked perfectly on the first try. Great for grouping products together, very easy to use.”

Shopify App Store review, Rubik Combined Listings

“This is by far the best variant app I have tried, I deleted maybe 7 others after a slew of issues. Wonderful support as well!”

Shopify App Store review, Rubik Variant Images

Preventing the next batch

The best way to keep your skin looking good is to prevent problems in the first place. After a while, prevention gets very, very boring. Here are four easy rules to follow so you don’t get bored.

  1. Always set unique SKUs. Shopify doesn’t enforce uniqueness (which is wild), but if you enforce it internally you can dedupe with one formula.
  2. Before any CSV import, check “Overwrite any current products that have the same handle”. This is off by default. Turn it on.
  3. For dropshipping, audit sync logs weekly. Most apps have a “created today” filter.
  4. For multilingual, use Translate & Adapt (free Shopify app), not separate products.

There are full demos, setup tutorials and documentation for both the Rubik and Rubik apps. The sites for them are at rubikvariantimages.com and rubikify.com. Both have free plans.

FAQ

How do I find duplicate products in Shopify?

Export your product CSV and use COUNTIF formulas in Google Sheets to flag the duplicate rows. OR download an app like CS Delete Duplicate Products to scan through your products in a single step! Then export the corrected, clean product CSV.

Can I merge products in Shopify?

Not natively. Pick a winner, copy the items (products, prices, descriptions) from the loser into the winner, delete the loser and update the URL of the old listing to point to the new listing for the winner. For apparent duplicates that are really separate products (different colors, sizes, etc), instead of merging them, use a combined listings app to list them side by side so customers can easily compare.

Will deleting duplicates hurt SEO?

-If you choose to bypass redirects- Always redirect the deleted product URL to the kept version via Online Store > Navigation > URL Redirects and set it to a 301.

What’s the best way to delete duplicates in bulk?

CS – Delete Duplicate Products scans your store’s products by SKU, title, or Barcode. It finds the duplicate listings and shows you the results before you delete any products. Much faster for administering your store than browsing one by one through the admin section.

How do I prevent duplicate products from dropshipping apps?

Add unique SKUs to every product, overwrite on matching handle for CSV import, and audit the sync log for your dropshipping app on a weekly basis.

Our Shopify Apps

Smart Bulk Image Upload

Bulk upload product images from Google Drive & save time!

Rubik Variant Image & Swatch

Show only relevant variant images on your product pages.

Rubik Combined Listings Swatch app

Rubik Combined Listings

Link separate products as variants with beautiful swatches

CS – Export Product Images

Bulk export product images by vendor, collection or status

Blog Posts