Common fight

WooCommerce Product plus another Product graph

Shop URLs often carry WooCommerce’s Product JSON-LD and a second Product from Yoast, Rank Math, or the theme. Same page. Two @id values.

What Woo already prints

WooCommerce emits Product markup for the shop URL you are viewing — often with offers or SKU. That is one complete story. An SEO plugin that also outputs Product on the same URL adds another node, usually with a different identifier and sometimes a different name.

Pick one emitter per type

If Woo is the catalog, keep Woo’s Product and stop the extra copy in the SEO plugin or theme. GraphClash reports the clash. It does not disable Woo hooks or rewrite the graph.

What we actually read

Only application/ld+json. We flatten @graph, guess the emitter from script class and id patterns, and list competing Product nodes. We do not clone Rich Results Test, and we do not score the shop.

Check a page

Free, no account. Results stay in this browser session.

Free. No account. We do not store scans.

FAQ

Will GraphClash turn off WooCommerce schema?
No. We do not disable Woo hooks, edit theme files, or change plugin settings. Detection only.
Which URL should I scan?
A public product or shop URL that you can open logged out. We fetch that HTML and read application/ld+json.
Is two Product nodes a penalty?
Usually not a ranking penalty. Two Product graphs with different @id values still force the consumer to pick a story, which can weaken rich-result eligibility.
How do people usually keep one Product graph?
Pick one emitter per type. If Yoast or Rank Math is the extra Product, people often disable that type in the plugin or filter wpseo_json_ld_output / rank_math/json_ld. Leave Woo’s Product in place if that is the source of truth.

Back to the checker