Describe your company in full once, in one Organization node on the home page with a stable @id on your own domain. Every other page and block should refer to that @id instead of repeating the details. To find duplicates, list every Organization node in the raw HTML and trace each one to the theme, plugin or app that wrote it. Switch off or rewrite all but one.
In IT audit, the one trusted source for a record is called the system of record. Your company needs one too, and the home page is the place for it. A theme, an SEO plugin and a reviews app can each introduce your company to Google in their own words. None of them checks with the others first.
Duplicate Organization markup means one site describes the same company in more than one Organization node. When the copies disagree on the name, the url or the @id, Google gets conflicting descriptions of one company. On Shopify, the Dawn and Horizon themes already print an Organization node on every page that shows the header. If an app prints its own node as well, those pages carry two. A few setups look like duplicates but can be intentional, such as a separate @id for each language version of the site. The section "If it did not work" covers them, so read it before you delete anything.
Before you start
- Save the raw HTML of the home page and two other templates, such as a product page and an article.
- Get access to the theme files and to the settings of every plugin and app that writes markup. A staging copy of the site is the safe place to switch things off.
- Decide which facts are correct. That means the name, the address, the logo file and the profile links. For the links, see which profile links to include.
Steps
Step 1. List every Organization node in the raw HTML
Search each saved file for application/ld+json. Every match starts one JSON-LD block. In each block, find every node whose @type is Organization or one of its schema.org subtypes. Look for OnlineStore, OnlineBusiness, LocalBusiness, Store and Corporation first.
Check nested nodes as well. An article's publisher, a product's brand or an offer's seller can hold a full description of your company. The Schema Markup Validator lists every item by type and gives you a quick second count.
Step 2. Record what each node says
Write one row per node. Record the page and the block number. Add the @id, the name, the url, the logo and the sameAs links. Two nodes that describe your company with different values are the finding. A node that holds only an @id is a reference, and you can leave it alone.
| Page | Block | @type | @id | name | url | logo |
|---|---|---|---|---|---|---|
| Home | 1 | OnlineStore | https://www.example.com/#organization | Example Goods | https://www.example.com/ | logo.png |
| Home | 3 | Organization | none | Example Goods LLC | https://example.com | old-logo.png |
Step 3. Find which tool wrote each node
Search the theme files for ld+json and for the word Organization. Open the settings of each SEO plugin and each app that mentions schema. If you still cannot tell, switch the sources off one at a time on the staging copy. Fetch the page after each change.
WordPress documents the same method for plugin conflicts. You deactivate all plugins, then turn them back on one at a time and check the site after each. Its Health Check and Troubleshooting plugin has a mode that switches plugins off for your session only. It also switches that session to a default theme, so the theme's own node disappears too. On a live site with no staging copy, use that mode.
Step 4. Choose one source and one @id
Pick the source that holds the correct facts and that you control. For most sites that is the theme or one SEO plugin. Give the node a permanent @id on your own domain. The home address plus a fragment works well, for example https://www.example.com/#organization.
Google recommends this markup on the home page or on one page about the company, such as the about page. It says the markup does not need to be on every page. It also recommends the most specific subtype, for example OnlineStore rather than OnlineBusiness for an online store. Google adds that the url helps it identify the company, so put the home page address there.
Step 5. Switch off the others, or make them refer to the one
Turn off Organization output in every other plugin, app or theme block. Another node may still need to name your company, such as the publisher of an article. In that node, replace the repeated details with a reference that holds only the @id.
"publisher": { "@id": "https://www.example.com/#organization" }
The JSON-LD standard calls an object that holds only an @id a node reference. It points to the node with that identifier. It does not describe a second company.
Step 6. Fetch the page again and count
Save the raw HTML again and repeat step 1. Run the page through the Rich Results Test and the Schema Markup Validator, and open the other two templates. Their references should use the same @id.
Check that it worked
The check passes when the home page holds the full Organization node for your company. Every other mention on every page you tested should carry the same @id. Both validators should report no errors on those templates. Repeat the count after every theme update and app install, because that is when a second node tends to come back.
If it did not work
- If each language version uses its own @id, such as /en/#organization and /fr/#organization, that can be intentional. It is still one company. Point every language to one @id if your platform allows it.
- If two nodes name different real entities on the same domain, such as a university and one of its schools, they are not duplicates. Give each its own @id and leave both.
- If the same name appears once in English and once in another alphabet, that is a translation. Keep each language consistent.
- If two @id values differ only by a trailing slash, they are the same company written two ways. Pick one form and use it everywhere.
- If a plugin or theme gives your company its own @id, change the setting. The tool's documented filter can also make it refer to your @id.
- If the logo or profile links vanished after the fix, you removed the node that held them. Move those values into the node you kept.
- If your @id changed during a redesign, change it back. The identifier only helps while it stays the same.
Platform notes
On Shopify, the Liquid structured_data filter outputs Product, ProductGroup and Article markup. It prints no Organization node, so themes add their own. On September 30, 2026, we read the header code of Shopify's Dawn theme 16.0.0 and Horizon theme 4.2.0. Both print an Organization block on every page where the header appears. Neither block has an @id. In both themes, the block's url is the address of the page it sits on, not your home page. If an app also prints an Organization node, you have two descriptions on every page. Switch off the app's node, or edit the theme block to carry a fixed @id and your home page url.
On WordPress, the SEO plugin usually owns this node. Yoast SEO prints its Organization piece on every public page. Its developer documentation shows the @id as your home address plus #/schema/Organization/1. Its current plugin code builds your home address plus #organization instead. So read the @id from your own page. Yoast documents the wpseo_schema_organization filter for changing the node. Rank Math sets the company details under Titles and Meta, then Local SEO. Its Organization node comes from those global settings, so it stays after you delete page schema.
WooCommerce 11.1.2 is the release we read, and it names your shop as the seller inside every product offer. That seller is a small Organization node with a name and a url and no @id. A developer can point it to your @id through the woocommerce_structured_data_product_offer filter. Where that is not possible, make its name and url match your main node. On September 30, 2026, WooCommerce merged a change into its development code that adds OnlineStore markup to the return policy page. It is not in the released version yet, so check for a second node after the update that brings it.
On other platforms, the same six steps apply. Only the place where each node is written changes.
What Visibility Mesh checks and what it does not
The Visibility Mesh scan reads the JSON-LD on every page it crawls. It reports a missing or thin Organization node, missing profile links and entities that are not joined by @id. Your own admin shows which theme, plugin or app wrote each node, and step 3 walks you through it. On Shopify and WordPress, AI Visibility Setup: Schema Mesh reads your site first. We remove the duplicates and the contradictions, and only then add markup (how the setup handles it).
Questions people ask
Does Organization markup belong on every page?
Google recommends it on the home page or on one page about the company, and says it does not need to be on every page. Put the full node on the home page. Other pages can refer to its @id, for example as the publisher of an article. Some SEO plugins and themes print the full node on every page anyway. If yours does, make sure every copy carries the same @id and the same values.
Which properties should the Organization node include?
Google lists no required properties. Start with name, url and logo. Then add sameAs links to the profiles the company controls. Add the address, telephone, email or contactPoint when they apply. Google recommends the most specific subtype, such as OnlineStore for an online store, and a name that matches your site name.
Is one SEO plugin enough?
One plugin is enough to own the Organization node, and two plugins usually mean two descriptions of the same company. Keep one plugin in charge of it. Turn off that part of any other tool, or change it to refer to the same @id.
Related reading: For the Product markup version of this problem, we explain how to fix duplicate Product schema on a Shopify store.
Sources
- Google, Organization structured data, Google Search Central, last updated September 8, 2026, read September 30, 2026.
- W3C, JSON-LD 1.1, W3C Recommendation of July 16, 2020, read September 30, 2026.
- Schema.org, Organization and OnlineStore, read September 30, 2026.
- Shopify, structured_data filter, Liquid reference (no update date shown), read September 30, 2026.
- Shopify, Dawn theme source, sections/header.liquid in version 16.0.0 of August 10, 2026, and Horizon theme source, sections/header.liquid in version 4.2.0 of September 18, 2026, read September 30, 2026.
- WordPress, Troubleshooting your site: plugin and theme conflicts, Learn WordPress, November 21, 2024, read September 30, 2026.
- Yoast, Schema piece: Organization (no update date shown), and the Yoast SEO plugin source on GitHub, read September 30, 2026.
- Rank Math, Removing schema and Organization schema, Rank Math knowledge base, read September 30, 2026.
- WooCommerce, version 11.1.2 source, includes/class-wc-structured-data.php on GitHub, and the Structured data for products wiki, read September 30, 2026.
The Academy explains the reasoning in why two is worse than one. To check everything else on the page, test and validate the markup.
Run the free scan to see how your Organization markup reads to a machine on five key pages.