WooCommerce products sharing an SEO description

A shared SEO description is a reason to compare products. CatalogLift shows the matching text and its peers so you can check whether the description fits each product, or leaves out a useful difference.

Content & SEO Opportunity AI proposal

When shared descriptions need a change

A description copied from a 500 ml jar to a 750 ml jar may contain an incorrect capacity. A shared sentence about their glass body may be accurate for both. Check the facts and the intended role of the pages; do not paraphrase a useful specification solely to make it unique.

The stored meta description is one possible source for a search snippet. Google may instead use page text and show different snippets for different queries. A match here does not prove identical search results or lost clicks. Google's snippet guidance describes how that selection works.

How to find shared SEO descriptions manually

The SEO description lives in postmeta under a key set by your SEO plugin. With Yoast SEO, this WP-CLI query lists every description used by more than one published product:

wp db query "SELECT m.meta_value AS seo_description, COUNT(*) AS uses
FROM wp_postmeta m
JOIN wp_posts p ON p.ID = m.post_id
WHERE m.meta_key = '_yoast_wpseo_metadesc'
  AND m.meta_value <> ''
  AND p.post_type = 'product' AND p.post_status = 'publish'
GROUP BY m.meta_value
HAVING uses > 1
ORDER BY uses DESC;"

Using Rank Math, query rank_math_description instead; other SEO plugins use their own meta keys. Adjust the wp_ prefix if needed.

This finds exact matches only, so two descriptions that differ by a trailing space, a capital letter or a stray HTML tag land in separate rows. It also counts template strings such as %%excerpt%% as duplicates when they are really the same rule applied everywhere. And it names the description, not the products — you still have to look up which items to open and review whether their descriptions need a change.

How CatalogLift finds matches and helps

Every current synced product with supported SEO plugin data takes part, including unpublished products. The comparison decodes HTML entities, removes markup, collapses whitespace and ignores case. Empty values and template variables are excluded. Each group of two or more matches produces findings with a text preview, a count and sample peers.

The finding is an improvement opportunity, excluded from store health. Keep an appropriate description by dismissing the finding. If a correction would help, write it or request a draft from existing product facts. Review and approve through the panel or a connected agent. Read-back and a re-scan verify the catalog change; they do not establish a change in rankings, snippets or clicks.

Fair questions, straight answers.

What does this check detect?

SEO descriptions that match another product after text normalization. It does not judge whether the description is accurate, informative or effective in search. A shared specification can still describe each product correctly.

Does this lower my store health?

No. It is an improvement opportunity. Dismiss it when the shared description is suitable; AI can also assess a candidate as already good instead of proposing a rewrite.

Will matching descriptions produce identical Google snippets?

Not necessarily. Google primarily generates snippets from page content and sometimes uses the meta description. The snippet can vary with the search query. CatalogLift compares the synced field, not actual search snippets.

Are empty values and plugin templates compared?

No. Values that are empty after normalization or contain template variables are excluded. Only literal descriptions from supported SEO plugin data take part.

See it on your own catalog.

Create a free account, connect your WooCommerce store and this check runs on your real products, along with the rest.

No card required. The free plan never writes to WooCommerce.