• Online Stores · OpenCart

Product deduplication: when the catalog is bigger than the assortment

A catalog grows faster than the assortment when products come from several price lists: the same model arrives under different names and gets created again. A year later the store has not one card per item but two or three; they compete with each other in search results, split the reviews and break stock accounting. Deduplication brings the catalog back in line with reality: we count how many items there really are, show the duplicates with an explanation and merge them without losing either order history or old URLs.

See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
Focus
online stores, mostly OpenCart
after a free audit
Price
Guarantee

days after project sign-off

online stores, mostly OpenCart
Focus
Timeline

to 30 working days

free duplicate count
Start
Warranty

days from the date the acceptance act is signed

within 2 hours
Reply
under a written contract
Terms
What's included

Complete list of work and what you get as a result

  • a count of the real number of items by several independent methods, with the discrepancy shown
  • a list of duplicates explaining on what grounds each one was judged a duplicate
  • you confirm merge decisions: nothing is deleted on its own
  • merging with redirects from the old URLs to the card that remains
  • moving order history, reviews and ratings
  • keeping images and attributes that the main card didn't have
  • a matching rule for future imports, so duplicates don't come back
  • a catalog reconciliation after the merge: quantities, stock, prices
  • a plain-language report on exactly what changed
When this service isn't right

What's not included — so there are no surprises at delivery

  • deleting items without your confirmation
  • changing prices and assortment
  • writing descriptions for the cards that remain
  • promises of higher search rankings after the cleanup
  • negotiating the format of their price lists with suppliers
Who it's for

Situations where this service delivers results

Scenario 1 of 4

A store importing several price lists

Different suppliers send the same model under different names. Without a matching rule, every import adds new cards instead of updating existing ones.

We'll review your situation in a free audit

Free count of your duplicates

We take a catalog export and count how many truly unique items it contains. That immediately shows whether there is a problem and how big it is.

What we measure

  • How many items different counting methods giveThe count in the admin panel, in the sitemap and via catalog search usually doesn't match. The discrepancy between them is the first sign of disorder.
  • How many exact name matches there areThe simplest type of duplicate: the same name twice. It is found quickly and often accounts for a few percent of the catalog.
  • How many matches by supplier SKUThe same product under different names but with the same number in the price list. This is the most reliable sign of a duplicate.
  • How many are similar by attributesThe hardest type: different names, different numbers, but the same product. This needs human confirmation, and we say so plainly.
  • How many pages compete with each otherWe check whether the catalog has pairs of nearly identical pages for the same query.
  • Where new duplicates come fromIf the cause is import, without a matching rule the cleanup will have to be repeated every month.

What you get

  • the figure: how many unique items the catalog really has
  • duplicates broken down by type: exact match, number match, similar
  • examples of the pairs found, for you to check
  • an estimate of the work broken down by stage

Timeline: 2–4 working days

Why is it free

Until you count, talking about scope is pointless: in some catalogs duplicates are under one percent, in others one card in five is a duplicate.

What's next

You get the figure and examples. Then you decide: merge with us, merge on your own, or leave things as they are.

Short form: your contact and site URL

We work officially

Contract, act and invoice — for every project, not just large ones.

Trusted by6 brands

Trusted by: Kvant Energy, GYPSUN, Naturel Cosmetics, Pancer Protection, LUGI, BeeTech

Terms fixed in writing8 points
  • 01

    Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • 02

    Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • 03

    Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • 04

    Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • 05

    Sites in nine countries

    Our sites run in nine countries: besides Ukraine — Poland, Germany, Austria, England, Norway, Bulgaria, Moldova and Spain.

  • 06

    Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • 07

    Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • 08

    We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

  • 01

    Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • 02

    Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • 03

    Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • 04

    Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • 05

    Sites in nine countries

    Our sites run in nine countries: besides Ukraine — Poland, Germany, Austria, England, Norway, Bulgaria, Moldova and Spain.

  • 06

    Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • 07

    Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • 08

    We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

We sign NDAs on request. After completing the work, we delete our access to your services ourselves.

What affects the price

Why two seemingly identical tasks are priced differently

  • Catalog sizeComparing every item with every other grows faster than the catalog itself. Large catalogs need preliminary filtering to keep the work manageable.
  • Type of duplicatesExact matches are found automatically. Similar items with different names need human review, and they are what determines the timeline.
  • How much data has to be keptSimple deletion is cheap and wrong. Moving orders, reviews, photos and attributes from the merged cards is separate work for each pair.
  • Number of import sourcesOne source means one matching rule. A dozen price lists in different formats means a separate rule for each.
  • State of redirectsOld URLs have to lead to the card that remains. The more pages are already indexed, the more carefully this step has to be handled.
  • Exchange with the accounting systemIf the catalog is synced with 1C or BAS, the merge has to be carried out consistently on both sides, otherwise the next exchange will bring the duplicates back.
Cases

Tasks and results in numbers — all metrics measured by us

Pancer Protection

an online store of tactical and military gear with a catalog of over 50,000 SKUs

Task
Hold an oversized assortment of tactical gear (body armor, clothing, footwear, backpacks, comms, optics) in a single store with detailed filtering by attributes — without losing page response speed.
Solution
A store on OpenCart 3 (chameleon theme + NeoSeo modules) behind Cloudflare. Two language versions. Full local-store JSON-LD markup: Store, Place, GeoCoordinates, PostalAddress, OpeningHoursSpecification, ContactPoint, WebSite, SearchAction. At checkout: LiqPay, card online, cash on delivery, cash on collection, bank transfer and online installments (dataLayer events). Binotel telephony, eSputnik email marketing, Google sign-in, GTM, GA4, Google Ads.
Result
54,302 products and 635 categories — the figure is confirmed by two independent methods: a sitemap index of 32 product files gives 110,096 URLs across two languages, and a cross-check through OpenCart search gives 54,501–54,600 items (a 0.4% discrepancy). A catalog of 54,000 SKUs returns the first response in 0.41 s and the full HTML in 0.51 s at 422 KB. Nine JSON-LD types on the home page. Five payment methods, including LiqPay and online installments. Measured 31 July 2026.

2PM

a retail online underwear store with a catalog of over 110,000 product items

Task
Sell underwear online across Ukraine so that buyers can pick their size themselves without consulting a manager, which reduces the number of returns. Every size and color is set up as a separate item, so the catalog grows to a hundred thousand pages: the structure has to be held within one store, navigation by category and brand kept, and the pages kept fit for indexing.
Solution
A store on OpenCart 3 (oct_luxury theme by Octemplates, Apache, HTTP/2, gzip). Three language versions: ru at the root, /ua/ and /pl/. The sitemap is built as an index of 42 sub-sitemaps (39 product ones of 3,000 URLs each + categories, brands, info pages), the correct way to serve a catalog of this size. The product card carries full product JSON-LD markup: Product, Offer, Brand, MerchantReturnPolicy, OfferShippingDetails, ShippingDeliveryTime, DefinedRegion, ImageObject. The home page has ClothingStore, WebSite/SearchAction, ContactPoint, PostalAddress, OpeningHoursSpecification, GeoCoordinates markup. Delivery by Nova Poshta in three variants (branch, courier, parcel locker) plus Ukrposhta. Analytics and advertising: GTM, GA4, Google Ads, a remarketing module passing product_id to Google Ads and Facebook.
Result
115,456 product items — the figure is confirmed by two independent methods: the built-in OpenCart search gives 1,154 pages of 100 items plus 56 on the last one (115,456), and the sitemap gives 112,646 unique product URLs, a 2.4% discrepancy. This is the largest catalog in the measured sample. A product card returns the first response in 0.39 s, a category page in 0.47 s. 129 categories, 334 brands, three language versions. Measured 1 August 2026.

Did not find your case?

Describe how it works on your side — we will tell you whether “Product deduplication and SKU merging” fits and what it means in your situation. No brief and no call: one question, one answer.

Process steps

Transparent stages with approval at every step

Total duration:5–25 days

  1. Counting and classification

    2–4 working days

    We count items in several ways, show the discrepancy and sort the duplicates found by type: exact match, number match, similar items.

  2. Agreeing the rules

    1–3 working days

    We agree on what counts as a duplicate in your case. For similar items we decide who on your side confirms the decision.

  3. Preparing the merge

    2–8 working days

    For each pair we decide which card stays as the main one and what needs to be moved from the other: photos, attributes, reviews, orders. We work on a copy.

  4. Merging and redirects

    2–8 working days

    We merge the confirmed pairs, set up redirects from the old URLs and check that no link is left pointing nowhere.

  5. A rule against duplicates

    1–4 working days

    We set up matching for imports so that the next price list updates the existing item rather than creating a new one. Without this step the work will have to be repeated within a month.

  6. Reconciliation and handover

    1–3 working days

    We check quantities, stock and prices after the merge and hand over a report on the changes. Then the 30-day warranty from the date the acceptance act is signed applies.

Technologies & integrations

What we build on and what it connects to

Stack

  • OpenCart
  • WooCommerce
  • PHP
  • MySQL
  • PostgreSQL
  • Python
  • SQL
  • Git

Integrations

  • 1C
  • BAS
  • XML/YML price feeds
  • CSV exports
  • Google Search Console
  • Excel
Merging with data transfer or simply deleting extra cards

How this option differs from the alternative

What happens to old URLsa redirect to the card that remains
Order historymoved to the main card
Reviews and ratingscombined
Will the duplicates come backno, if a matching rule is set up
Speedslower, because every pair is processed
What we need from you

We can't start without this — best to prepare in advance

  1. a catalog export or access to the database
  2. which sources the catalog was filled from and which price lists are accepted now
  3. who on your side confirms decisions on merging similar items
  4. whether the exchange with the accounting system can be paused during the work
  5. whether there are categories better left untouched
  6. who on your side accepts the work

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

How many products are really in my catalog?

That is exactly what the free count answers. We count in several independent ways (by the database, by the sitemap, by catalog search) and show the discrepancy between them. The discrepancy is usually the most interesting part of the answer: it shows how far the catalog has drifted from reality.

Will you delete products without my knowledge?

No. Exact matches are shown to you as ready to merge, but the decision is still yours. Similar items are not merged at all without your confirmation: where names and numbers differ, a machine can make a mistake, and the cost of that mistake is higher than the time saved.

What happens to old links?

We set up redirects from the merged cards to the one that remains. This is a mandatory part: without it, pages that are already in search results and in links from other sites will start returning an error, and you will lose what has already been earned.

Won't reviews and orders get lost?

No, they are moved to the card that remains. This is the main difference between merging and simply deleting: the product doesn't start its life from scratch but keeps its accumulated history.

Will the duplicates come back after the next import?

They will unless the matching rule is changed. That is why import setup is part of the work: the next price list has to find the existing item by a stable number and update it instead of creating a new one. Without this step the cleanup will have to be repeated every month.

Will this affect search rankings?

Duplicates do harm because your own pages compete with each other for the same query, and search picks which one to show. Removing duplicates eliminates this competition, but we cannot and will not guarantee rankings: far more factors affect them.

How long does it take?

9 to 30 working days. The automatic part is quick; the time goes into reviewing similar items and moving data for each pair. We give the exact timeline after the count, when the number and types of duplicates are clear.

Will the store keep working while you do this?

Yes. Preparation is done on a copy, and merging is carried out in batches with a check after each one. If the catalog is synced with an accounting system, we agree on the order so that the next exchange doesn't bring everything back.
Demo

Your catalogue on a phone screen

This is how your store can look on a phone: a collection banner, popular products and a cart one tap away. Tap “Add to cart” and the counter in the header updates, just like in a real store.

  • Collection bannerThe first screen shows what is new, not a logo.
  • Product cardsPhoto, price and a button — no extra page to open.
  • One-tap cartThe counter in the header updates instantly, like in a real store.
Stores in the portfolio

This is a demo interface, not a client's store. Live projects are in the portfolio.

SHOP
New collectionAutumn / WinterExplore
PopularAll products ›
  • Essentials Hoodie1 290 ₴
  • Urban Backpack1 490 ₴
  • Classic Cap690 ₴
  • Basic Tee590 ₴
  • Street Sneakers2 390 ₴
  • Active Shorts890 ₴

Let's count how many items you really have

The duplicate count is free: we show the discrepancy between counting methods and examples of the pairs found. We reply within 2 hours.

From measured cases54,302 products and 635 categories

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.