Managing duplicate WooCommerce listings across Merchant Center data sources
Finding the same WooCommerce product more than once in Google Merchant Center can be confusing. The duplicate records may have similar titles, images, prices and landing pages, yet they may show different item IDs, data sources, approval statuses or destinations.

This situation often appears after changing a product feed plugin, connecting a new Merchant API integration, activating automatic website discovery or modifying the way WooCommerce products and variations are identified.
However, two visually similar Merchant Center records are not always accidental duplicates.
They may represent valid colour or size variations, different languages, different feed labels, separate countries or products supplied for different marketing methods. Removing one without examining its identity and source can interrupt a valid product operation.
The correct solution is therefore not to delete every repeated title. It is to determine why Google considers the records separate, identify the authoritative product source and remove only the obsolete or incorrectly generated input.
The short answer
If a WooCommerce product appears twice in Google Merchant Center, compare the following information for both records:
- Item or offer ID
- Content language
- Feed label
- Product data source
- Landing-page URL
- WooCommerce product or variation
- Variant attributes
- Current approval status
- Marketing methods
- Most recent update time
When the same commercial product was submitted with two different offer IDs, Google can process the records as separate products. When an old feed and a new API integration both manage the catalogue, the records may also come from different product workflows.
Choose one authoritative source, verify that it contains complete and current product information, stop the obsolete source from resubmitting products and remove only the unnecessary records.
Do not delete an entire data source until you have confirmed that every valid product it manages is available through the replacement source.
What is a duplicate product in Merchant Center?
A practical duplicate exists when two or more records represent the same purchasable WooCommerce offer without a legitimate commercial reason for being separate.

For example, two records may have:
- The same product
- The same selected variation
- The same landing page
- The same price
- The same currency
- The same stock status
- The same target market
- The same language
- Different offer IDs or data sources
This is different from having several valid offers that use a similar title.
A T-shirt available in red, blue and black may correctly appear as three separate products when each colour is independently purchasable. Each variation needs its own product ID, while the related variations can share an item group ID.
Google’s official item group ID documentation explains that every variant should be submitted as a separate product with a unique ID. Variations belonging to the same product group should use the same item_group_id.
The first task is therefore to distinguish accidental duplicates from valid product variations.
Repeated titles do not always mean duplicate products
The visible title is not the main identifier used to determine whether two records are the same.
A WooCommerce store may legitimately submit similar-looking records for:
- Different sizes
- Different colours
- Different materials
- Different patterns
- Different product conditions
- Different languages
- Different feed labels
- Different target markets
- Different landing-page variations
- Online and local inventory workflows
Two products may have exactly the same title while representing different variations. Conversely, two products may have different titles while pointing to the same commercial offer.
Do not make a deletion decision based only on the title, image or product count. Inspect the identifiers, source and variation data.
How Google identifies Merchant API products
In a Merchant API workflow, the processed product identity is based on a combination of:
- Content language
- Feed label
- Offer ID
Google represents this combination in a format similar to:

contentLanguage~feedLabel~offerId
For example:
en~US~SKU123
Google documents this structure in its official Merchant API product management guide.
The offer ID is usually supplied by the integration. Depending on its configuration, it may be based on a WooCommerce product ID, variation ID, SKU or another stable internal reference.
This means that the following records are not technically identical:
en~US~SKU123
en~US~product-847
They may lead to the same landing page and describe the same item, but the different offer IDs allow Google to treat them as separate products.
Language and feed label differences matter as well:
en~US~SKU123

en~GB~SKU123
These records share an offer ID but use different feed labels. They may be valid when the store intentionally manages separate market configurations.
A duplicate investigation must therefore compare the complete identity, not just the WooCommerce SKU.
Stable product IDs prevent unnecessary new records
Google recommends using a stable ID for each product and not changing it after assignment. Each product variation also needs its own unique ID. These requirements are explained in Google’s official ID attribute documentation.
Suppose a WooCommerce product was originally submitted with the offer ID:
product-847
The store later changes its integration and begins using the SKU:
ABC-100
If the original record is not removed or migrated correctly, Merchant Center may receive ABC-100 as a new product while retaining product-847.
From the store owner’s perspective, the product was merely resynchronized. From Google’s perspective, a second product identity was introduced.

This frequently happens when:
- A new plugin uses a different offer ID strategy.
- An SKU is added after the initial product submission.
- A store replaces WooCommerce product IDs with SKUs.
- A variation ID format changes.
- A prefix or suffix is added to every offer ID.
- Products are imported into a new WooCommerce installation.
- A staging catalogue is transferred to the production website.
- A multilingual integration changes the language or feed label.
- An old Content API setup is replaced by Merchant API without preserving IDs.
Changing a title, description, price or image should normally update the existing offer. Changing its stable identity can create a separate record.
Common causes of duplicate WooCommerce products
An old feed remains active after a new integration is connected
A store may move from an XML feed or another WooCommerce integration to Merchant API. If the older data source remains active, both workflows may continue managing product information.
Whether Merchant Center displays separate records depends on the identifiers, languages, feed labels and source configuration used by each integration.
If both systems use different offer IDs for the same WooCommerce product, separate records are more likely to appear.
Do not assume that installing a new WooCommerce Google Merchant Center plugin automatically disables the old source. Review Merchant Center and WordPress separately.
Two WooCommerce plugins are submitting the same catalogue
A store may unintentionally have more than one active product integration.
For example:

- An older feed plugin is still scheduled.
- Google Listings & Ads remains connected.
- A custom integration is running through WordPress cron.
- A separate product management service is connected.
- A new Merchant API plugin has been activated.
- A manually generated file is still being fetched.
Disabling a plugin does not necessarily remove the products it previously submitted. Similarly, removing records manually from Merchant Center does not prevent an active plugin from submitting them again.
The source of the repeat submission must be corrected.
The offer ID strategy changed
One integration may use WooCommerce product IDs, while another uses SKUs.
For a simple product, these might appear as:
847
ABC-100
For a variation, two integrations might use:
847-852
ABC-100-BLUE-L
Both records can describe the same purchasable variation while having different identities.

Before changing the offer ID strategy, export or record the relationship between old and new IDs. A migration should preserve existing identifiers when appropriate or deliberately retire the old records.
Parent products and variations are both submitted
Variable WooCommerce products can create apparent duplicates when the parent product and every child variation are submitted as separate purchasable offers.
Suppose a shoe has five sizes. An incorrect workflow could submit:
- One parent product
- Five size variations
The catalogue then contains six records even though only five purchasable choices should exist.
Google’s guidance recommends submitting each variation with a unique product ID and using a shared item group ID to connect related variations. It also advises against submitting the parent SKU as a separate product when that value is being used to group the variations.
The integration should reflect the actual WooCommerce purchasing experience.
Variations are not distinguished correctly
Two variation records may use the same item group ID without providing distinct size, colour, material or other variation values.
Google may report a duplicate variant issue when records in the same group do not contain sufficiently different variant attributes.
Google’s duplicate variant guidance recommends supplying unique values for the relevant variant attributes or removing incorrect duplicate offers from the product data.
A duplicate variation problem is not always caused by two plugins. It may be caused by incomplete variation mapping inside one source.
A manually created product remains active
Merchant Center allows products to be added through several methods. A merchant may have manually created a small number of products before connecting WooCommerce.
When the API integration later submits the complete catalogue, manually created versions may remain. Similar titles and landing pages can make them look identical.
Inspect the data source for both records. If the manually created record is obsolete, remove it only after verifying that the WooCommerce-managed version is complete and active.
A test source is still connected
During installation or development, a store may create a temporary data source. The same catalogue can later be submitted through the production source.
Test sources should use clearly identifiable names and controlled product selections. After the production workflow is verified, obsolete test records should be removed carefully.
Do not delete a test source merely because of its name. Confirm which products it owns and whether any production process still depends on it.
Products were recreated in WooCommerce
Deleting and recreating a WooCommerce product can generate a new WordPress product ID.
If the integration uses the WooCommerce database ID as the offer ID, the recreated product may be submitted as a new Google offer even when its SKU, title and landing page resemble the old product.
The old Merchant Center record must then be reconciled separately.
This is one reason permanent local deletion should be approached carefully when products have already been synchronized.
Multiple languages or markets are mistaken for duplicates
A multilingual or multi-country store can intentionally have more than one Merchant Center record for the same physical item.
The records may differ by:
- Content language
- Feed label
- Currency
- Landing page
- Country configuration
- Shipping settings
- Product title and description language
These offers should not be removed merely because they share an SKU or image.
First verify whether the store intentionally serves those languages and markets. A valid international catalogue requires consistent landing pages, currency, availability and shipping information for each intended configuration.
Are “Found by Google” products responsible?
Google can automatically discover products by reading structured data on the store’s product pages. These items are shown under the “Found by Google” area in Merchant Center.
This feature is sometimes blamed for every duplicate product. However, Google states that products already supplied through another data source are not automatically added again. When the same product is both discovered and uploaded, Google says it keeps the uploaded version and removes the automatically added one.
The current behaviour and management controls are described in Google’s official automatic product submission documentation.
“Found by Google” should still be inspected during troubleshooting, especially when:
- A product’s source is unclear.
- The manually supplied and automatically discovered records use different identities.
- Structured data contains an incorrect SKU or variation.
- An older product remains available through another public URL.
- The uploaded product points to a different canonical landing page.
Do not assume that automatically discovered products are the cause without checking the source details.
A systematic duplicate diagnosis
A reliable investigation can be completed in several stages.
1. Select one repeated product
Begin with one clear example instead of deleting records in bulk.
Choose a product that has the same commercial offer, price, variation and landing page in both records.
2. Compare the offer IDs
Record the item or offer ID for each entry.
If the IDs differ, determine how each one was generated. One may use the WooCommerce product ID while the other uses the SKU.
3. Compare language and feed label
The same offer ID can form a different product identity when the language or feed label changes.
Confirm whether both configurations are intentional.
4. Inspect the data source
Open each product’s details and identify its source.
Possible sources include:
- Merchant API
- An uploaded file
- A scheduled URL
- Google Sheets
- A connected e-commerce platform
- A manual Merchant Center product
- Automatically found website products
The source name is more reliable than guessing which plugin created the record.
5. Match each entry to WooCommerce
Identify the corresponding WooCommerce product or variation.
Confirm:
- Product ID
- Variation ID
- SKU
- Product type
- Published status
- Purchasability
- Landing-page URL
- Price
- Availability
If both Merchant Center records lead to the same WooCommerce variation, one may be obsolete.
6. Check WordPress integrations
Review every active or recently used product integration.
A plugin can continue running scheduled tasks even when its main interface is no longer regularly used. Also examine external services that may fetch a product file without depending on an active WordPress plugin.
7. Check whether the record is a valid variation
Compare size, colour, material, pattern and item group ID values.
Do not delete one record when it represents a separately purchasable variation.
8. Determine which source is authoritative
Choose the source that should manage future:
- Product creation
- Price changes
- Stock updates
- Product corrections
- Variation changes
- Product removal
A catalogue should not depend on an unclear mixture of competing primary workflows.
A safe duplicate removal process
Confirm the replacement record first
Before removing anything, verify that the product you intend to keep:
- Uses the intended offer ID
- Comes from the correct source
- Has the correct price
- Has accurate availability
- Opens the correct landing page
- Uses the intended language and feed label
- Contains required identifiers when applicable
- Represents the correct variation
- Has completed processing
A new record that exists but contains critical errors is not yet a safe replacement for a working older record.
Stop the duplicate from returning
If an old plugin, scheduled file or external service is still submitting the product, correct that source before manually removing its current record.
Otherwise, the product may return during the next scheduled synchronization.
Remove products at the appropriate level
If only one product is duplicated, target that product input.
If an entire old source is obsolete, verify its complete catalogue before removing the source. Deleting an entire source can affect every product it manages.
If one variation is duplicated, remove only the unnecessary variation offer. Do not remove the complete parent group.
Allow time for processing
Merchant Center does not necessarily update every screen immediately. Google states that a Merchant API product input operation can require several minutes before the processed product reflects the change.
Avoid repeatedly deleting or resubmitting the same item during the initial processing period.
Verify the result
Search using the offer ID rather than only the product title.
Confirm that:
- The obsolete record is gone.
- The valid record remains.
- The correct source owns the valid record.
- No other variation was removed.
- The product is not being resubmitted.
- Product diagnostics have updated.
- The intended marketing methods remain active.
Migrating from an old source to Merchant API
A planned migration is safer than activating a new integration and immediately deleting the old one.
Use the following sequence:
- Document the existing data sources.
- Export or record current offer IDs.
- Determine how the new integration generates offer IDs.
- Preserve the same IDs where appropriate.
- Submit a controlled product group through the new source.
- Compare prices, stock, variations, identifiers and landing pages.
- Confirm that the intended records are processed.
- Stop the old source from refreshing products.
- Remove obsolete records or retire the old source.
- Recheck the catalogue after scheduled tasks would normally run.
Google’s current Merchant API migration guidance warns about “offer stealing.” This can occur when the same combination of language, feed label and offer ID is inserted into a different primary data source. The offer can move from the old source to the new one, where different rules and ownership settings may apply.
Google recommends storing the correct data source relationship and verifying the source before updating or deleting products. It also recommends preserving the same offer ID during migration when appropriate to avoid losing product history. These points are documented in the official Merchant API migration guide.
Migration should therefore be treated as a product identity and source ownership project, not merely a plugin replacement.
How PW Merchant API fits into duplicate management
PW Merchant API is designed to help organise supported WooCommerce and Merchant API product operations through a controlled workflow.
WooCommerce remains the commercial source of product information. PW Merchant API reads supported WooCommerce data and communicates supported operations to Google Merchant Center. Google then processes the submitted information according to its own systems, requirements and policies.
The plugin can help users:
- Work with supported simple and variable products
- Submit supported product information
- Update existing product records
- Review operation results
- Organise scheduled workloads
- Identify WooCommerce products requiring attention
- Maintain a clearer relationship between local and remote operations
PW Merchant API cannot automatically control products submitted by another plugin, an old file, a manually created source or an external service.
Installing the plugin also does not make every older data source obsolete. Store owners should review the existing Merchant Center configuration before deciding which sources to retain.
A WooCommerce Google Merchant Center plugin should be part of a clearly defined data strategy. The objective is to create one understandable product-management workflow rather than several integrations competing to manage the same catalogue.
How to prevent future duplicate records
Use a stable offer ID policy
Decide how simple products and variations will be identified.
Do not switch casually between product IDs, SKUs and custom identifiers after products have been submitted.
Keep WooCommerce SKUs unique
A duplicated SKU can make local and remote product reconciliation more difficult. Every independently managed variation should have a clear identity.
Document every product source
Record:
- Source name
- Source type
- Responsible plugin or service
- Offer ID strategy
- Languages
- Feed labels
- Managed markets
- Update schedule
- Current status
Deactivate obsolete submission workflows
A source that is no longer authoritative should not continue refreshing old records.
Separate testing from production
Use identifiable test products and sources. Avoid submitting the complete production catalogue through temporary configurations.
Review product counts carefully
A WooCommerce catalogue with 500 parent products may legitimately produce more than 500 Merchant Center records when variable products are submitted individually.
Product count differences alone do not prove duplication.
Audit after major changes
Review Merchant Center after:
- Changing plugins
- Moving from a file to Merchant API
- Importing products
- Rebuilding WooCommerce
- Changing SKU formats
- Adding languages
- Adding markets
- Changing variation structures
- Restoring a database backup
- Reconnecting a Merchant Center account
Common duplicate removal mistakes
Deleting the newest source immediately
The newest source may contain more complete information or may be intended to replace the old workflow. Compare both before choosing.
Keeping the record with the shortest ID
The appearance of the ID does not determine which record is correct.
Removing all products with similar titles
Similar titles may belong to valid variations or markets.
Deleting the complete data source for one problem product
This can remove unrelated valid products.
Correcting Merchant Center without correcting WooCommerce
If the duplication originates from product IDs, variations or multiple plugins, a manual Merchant Center correction may only be temporary.
Changing every SKU during migration
A broad identifier change can create new product identities across the catalogue.
Ignoring scheduled resubmission
An obsolete product may return when an old source runs again.
Assuming every “Found by Google” record is a duplicate
Google has mechanisms intended to prevent automatically found products from duplicating uploaded products. Inspect the actual source and identity before acting.
Frequently asked questions
Why are my WooCommerce products showing twice in Google Merchant Center?
The products may have been submitted through two integrations, supplied with different offer IDs, recreated in WooCommerce, submitted as both parent and variations, or configured for different languages or feed labels.
Does the same title mean two products are duplicates?
No. The records may represent valid variations, languages or markets. Compare the offer ID, feed label, language, source and variation attributes.
Can two plugins submit the same WooCommerce catalogue?
Yes. Two active workflows may manage the same catalogue. Whether separate records appear depends on the identifiers and data-source configuration they use.
Should I delete my old product data source?
Only after confirming that the replacement source contains every valid product and that no required operation depends on the old source. Removing a source affects all products it manages.
Can changing a WooCommerce SKU create a duplicate?
It can when the integration uses the SKU as the Google offer ID. The changed SKU may be treated as a new identity while the old record remains.
Should every WooCommerce variation have a different Google ID?
Yes. Each separately submitted variation needs a unique product ID. Related variations should normally share an item group ID and include distinguishing variation attributes.
Should the variable parent also be submitted?
Not normally when the purchasable variations are already being submitted individually and the parent is not itself a separate purchasable offer.
Can “Found by Google” create duplicates?
Google states that automatically found products already included in other sources are not added as duplicates and that uploaded versions are retained. However, the section should still be inspected when source identity or website structured data is unclear.
Why does a removed duplicate return?
An active plugin, scheduled file, external service or automatic process may be submitting it again. Correct the originating source before repeating the removal.
Can the same SKU appear in different countries?
Yes. Separate product identities may be valid when they use different feed labels, languages or market configurations. Confirm that each version is intentional and accurate.
Does removing duplicates improve Google Shopping performance?
No performance outcome can be guaranteed. Removing accidental duplicates improves catalogue clarity and data management, while Google independently determines eligibility, visibility and placement.
Can PW Merchant API remove products supplied by another plugin?
It cannot automatically control another independent source. The source that owns or continues submitting the obsolete record must also be identified and corrected.
Final checklist
Before considering a duplicate issue resolved, confirm that:
- The records represent the same commercial offer rather than valid variations.
- Their offer IDs have been compared.
- Content languages and feed labels have been checked.
- The source of each product is known.
- The corresponding WooCommerce product or variation has been identified.
- One authoritative product source has been selected.
- The retained product contains accurate information.
- The obsolete workflow has stopped resubmitting products.
- Only unnecessary records were removed.
- Google has had time to process the changes.
- Valid variations and markets remain active.
- The duplicate does not return after scheduled operations run.
Duplicate WooCommerce products should be treated as a product identity and data-source management problem.
The safest solution begins by determining why Google considers the records separate. Store owners should compare identifiers, variations, languages, feed labels and data sources before removing anything.
WooCommerce should remain the commercial source of truth. PW Merchant API can help organise supported Merchant API operations, while Google Merchant Center independently processes the submitted product information.
When stable identifiers, clear data-source ownership and controlled migration procedures are used, duplicate products become easier to diagnose, remove and prevent.
