Two Schema Blocks on One Page: Why It Happens and the Fix


Short answer: two schema blocks on one page usually means two different systems on your site, a theme, a plugin, a builder's own output, are each trying to describe the same thing. It is common, it is fixable in one sitting, and it is not a sign that your site is broken in some deeper way.
You ran a schema test, maybe the Rich Results Test, maybe a validator, and it flagged two application/ld+json blocks describing what looks like the same business. Or Search Console reported a duplicate somewhere. Either way, the reaction is usually the same: confusion, then a worry that something has gone quietly wrong for a while without anyone noticing.
The reality is more boring than that. Cafe websites run on platforms that stack tools, a theme that outputs its own basic markup, an SEO plugin that adds more, sometimes a separate schema plugin on top of both. Each one is doing its job in isolation, with no idea the others exist. This piece walks through why that happens, how to find every block on a page yourself, and how to decide which source should own each type and turn the rest off.
Why Cafe Sites End Up With Duplicates
The most common cause is a theme and a plugin both trying to be helpful. Many WordPress themes built for restaurants and cafes bake in a basic LocalBusiness or Restaurant block automatically, filled from whatever you entered in the theme's own settings panel. Then an SEO plugin gets installed, because someone read that SEO plugins are good practice, and that plugin also generates its own LocalBusiness block from its own separate settings screen. Neither system checks whether the other already covers the same ground.
The second common pattern is two plugins stacked on top of each other: an SEO plugin that includes schema as one of its features, plus a dedicated schema plugin installed later because someone wanted more control over a specific type, like Article or FAQ, that the SEO plugin did not cover well. If both plugins are set to also output Organization or LocalBusiness data by default, you end up with two versions of the same entity, sometimes with different values in each.
On page builder platforms like Wix, Squarespace and Shopify, the pattern looks a little different. These platforms often generate baseline structured data automatically once you fill in your business information, and the duplication shows up when someone later adds a manual code block, either through a custom code embed or a third party app, that outputs its own version of the same type on top of the platform's built in one. The platform did not do anything wrong; a second layer was added on purpose, without realizing the first layer already existed.
None of these causes point to a mistake made by a careless owner. They point to tools built independently, each assuming it is the only thing managing structured data on the page, stacked on a site that has grown over time. That is simply how these platforms and plugin ecosystems work, and it happens on a meaningful share of small business sites across every platform, not just cafes.
There is also a slower, quieter version of this pattern that has nothing to do with plugins at all: a site rebuild. A cafe that redesigns its website, or moves from one platform to another, sometimes keeps an old manual schema block that a previous developer or agency added years earlier, buried in a custom code section nobody remembers exists, while the new site or new theme adds its own fresh block on top. The old block was never a mistake when it was added. It simply became invisible once the person who added it moved on, and the new build layered right over it without anyone checking what was already there.
Finding Every Block on a Page Yourself
The most reliable method does not require a paid tool. On any page, right click and choose view page source, or view source, then search that source for the text application/ld+json. Each match marks the start of one separate structured data block. Count them, and note the type value inside each one, usually near the top of the block, something like "@type": "LocalBusiness" or "@type": "Restaurant".
Write down what you find as a simple three column note: where the block seems to come from if you can tell (theme, a named plugin, a code embed), what type it declares, and whether the values inside, like the phone number or the hours, match what is actually printed on the visible page. That last check matters more than people expect. Two blocks of different types, say a LocalBusiness block and a separate Product block for a menu item, are not really a duplicate at all, since they describe different things. Two blocks of the same type with different phone numbers or different hours are the real problem, because now a machine reading the page has two conflicting answers for the same question.
If reading raw source code is not something you want to do by hand, Google's Rich Results Test and the independent Schema Markup Validator at validator.schema.org will both parse a page and list every block they find, along with its type, which does the counting for you and often flags outright errors at the same time. Running a page through one of these tools before and after any fix is the simplest way to confirm the change actually worked.
When Two Blocks Are Fine, and When They Are Not
It is worth saying plainly that having more than one schema block on a page is not automatically a problem. A page can legitimately carry an Organization block describing the business as a whole and a separate Product block describing one specific menu item or retail product, because those are two different entities being described, not two competing descriptions of the same one. A working rule: two blocks are fine when they describe different things; two blocks are a problem when they describe the same thing with different values.
Picture a fictional cafe homepage. If the theme outputs a LocalBusiness block with the phone number and hours pulled from the theme's settings panel, and an SEO plugin also outputs a LocalBusiness block with the phone number and hours pulled from the plugin's own separate settings screen, and those two settings panels were filled in at different times, the two blocks can easily disagree. One might list an old phone number, the other the current one. That is a conflict worth fixing, not because two blocks exist, but because the same fact is stated two different ways.
Contrast that with the same homepage carrying a LocalBusiness block for the shop itself and a separate Event block for a single upcoming tasting. Those two blocks can sit on the same page without any conflict, because a machine reading the page correctly understands one block describes the shop and the other describes a specific event the shop is hosting. The count of blocks is not the issue; whether any two blocks describe the same entity with different facts is the actual test.
The Fix: Decide Which Source Owns Each Type
Once you know which sources are producing which blocks, the fix is almost always a matter of picking one source to own each type and turning the others off, rather than editing code by hand. On WordPress, this usually means going into the settings of whichever plugin is the extra source and disabling its schema or structured data output specifically, while leaving its other features, like meta descriptions, turned on. Many SEO plugins offer this as a toggle without requiring you to uninstall the whole plugin.
If the duplicate is between a theme and a plugin, the plugin is usually the easier one to adjust, since theme settings can be harder to find and changing them risks affecting other parts of the site's design. If the duplicate is between two dedicated schema tools, keep whichever one gives you more control over the specific types your cafe needs, like Menu or Event, and disable the other's overlapping output.
On Wix or Squarespace, where the platform generates baseline data automatically, the fix usually means removing the manual code embed that duplicates it, rather than fighting the platform's own output, since the built in version is generally kept in sync with your business information automatically as you update it elsewhere on the site. Once one source is disabled, run the page back through the Rich Results Test or the Schema Markup Validator to confirm the block count dropped and the remaining block still validates cleanly. That before and after check is the only way to know the fix held, rather than assuming it did.
Where the Census Fits, and Where It Does Not
It is tempting to want a number here, a share of cafe sites that carry duplicate schema blocks. No such count exists for independent cafes. The Hillcane census of more than 1,000 independent specialty coffee shops across six regions, dated September 15, 2026, records whether structured data is absent, partial or present on each site: 368 absent, 367 partial and 337 present, with 37 left unclassified. That tells you whether schema exists at all, but it does not count how many separate blocks sit on any one page, so it says nothing about duplication specifically.
What the census does show is that markup across independent cafe sites is uneven, with roughly two thirds of classified shops either missing it or carrying only part of it. It cannot tell any one owner whether their own homepage has one block or three. The only way to know that is to look at your own page with the view source method above, which takes less time than reading this section.
The platform picture matters here too. In the same census, Shopify powers 318 of the shops, Squarespace 267, Square Online 131, WordPress 122 and Wix 97. Every one of those platforms can produce baseline markup on its own, and every one allows an owner or an app to add more on top, which is exactly the layering that produces a second block. A cafe on any of them is a reasonable candidate for a ten minute check, whatever the rest of the census says.
A Ten Minute Routine Worth Repeating
The whole process described here, view source, count the application/ld+json blocks, note their types and sources, check whether any two conflict, disable the extra one, retest, takes most owners under ten minutes once they have done it a single time. It is a reasonable thing to build into a quarterly site check rather than treating it as a one time emergency fix, since a new plugin or a new code embed added months from now can reintroduce the same pattern without anyone noticing right away.
It is worth keeping a short written note of what you found the first time you do this, even a single line in a shared document: which source owns the LocalBusiness type, which plugin's schema output is turned off, and the date you last checked. That note turns a ten minute investigation into a thirty second confirmation the next time around, and it means whoever handles the site next, whether that is you in six months or someone you hire, is not starting from zero.
The larger point is that finding two schema blocks on your page is not evidence that something has gone badly wrong. It is evidence that your site runs on more than one tool, which is true of almost every cafe website built on WordPress, Wix, Squarespace or Shopify. The fix is not dramatic. It is a settings toggle, a source decision, and a retest, and most owners can finish the whole thing before their coffee goes cold.
Related Reading
More from Hillcane on this topic, plus the pages on the site that sit next to the work.
Frequently Asked Questions
Why does my cafe site have two schema blocks describing the same business?
Almost always because two separate tools on your site, a theme, an SEO plugin, a dedicated schema plugin, or a manually added code block, are each generating their own structured data without knowing the other exists. This is a common pattern across WordPress, Wix, Squarespace and Shopify sites and is not a sign that anything is broken.
How do I count how many schema blocks are on a page?
Right click the page and choose view page source, then search for the text application/ld+json. Each match is one separate block; note the type value inside each, near the top, such as LocalBusiness or Product. Google's Rich Results Test and the Schema Markup Validator at validator.schema.org will also list every block on a page for you automatically.
Are two schema blocks always a problem?
No. Two blocks describing different things, for example a LocalBusiness block for the shop and a separate Event block for one upcoming class, are fine and common. The real problem is two blocks of the same type with different values for the same fact, like two different phone numbers, because that gives a machine reading the page two conflicting answers.
What is the actual fix for a duplicate schema block?
Decide which source, the theme, one plugin, or the platform's own automatic output, should own that type, and turn off the other source's schema output specifically, without disabling its other features. On WordPress this is usually a toggle inside plugin settings; on Wix or Squarespace it usually means removing a manual code embed that duplicates the platform's built in output.
How do I know if a duplicate is causing a real conflict?
Compare the values inside each block, not just the type. If a LocalBusiness block from your theme and a LocalBusiness block from your SEO plugin both list the same phone number and hours, there is no real conflict even though two blocks exist. If the values differ, that mismatch is the actual issue worth fixing.
Should I disable the theme's schema or the plugin's schema when I find a conflict?
There is no universal rule; it depends on which source is easier to keep accurate going forward. Plugin settings are usually simpler to find and adjust than theme settings, so many owners keep the plugin's output and disable the theme's. If a dedicated schema plugin gives more control over specific types like Menu or Event, keep that one and disable the overlapping output elsewhere.
Can the visibility census say how many cafe sites have duplicate schema?
No. The Hillcane census of more than 1,000 independent cafes, dated September 15, 2026, records whether structured data is absent, partial or present, 368, 367 and 337 shops respectively, but it does not count how many separate blocks appear on any one page. So it shows markup is uneven across cafe sites without saying how often duplicates occur, and only a view source check answers that for your own page.
What tools should I use to retest after fixing a duplicate?
Google's Rich Results Test and the independent Schema Markup Validator at validator.schema.org both parse a page and list every structured data block they find, along with its type. Run the page through one of them before and after disabling the extra source, note the two block counts side by side, and confirm the count dropped from two to one and the remaining block still validates without errors.
Is this the same issue as choosing between a schema plugin and custom code?
No, that is a separate decision about which method to use going forward. This piece assumes schema already exists in more than one place and focuses only on diagnosing why and fixing it. A related piece covers testing a schema block once it is in place, and another covers the plugin versus custom code choice itself.
How often should I check my site for duplicate schema blocks?
Once you have done the check a single time, it takes most owners under ten minutes, so it is reasonable to build into a quarterly site review rather than treating it as a one time fix. A new plugin or a new code embed added later can reintroduce the same pattern without anyone noticing right away.
Work with Hillcane
Your schema test flagged two blocks of the same type on one page. That is a common, fixable pattern, not proof something is quietly broken.
If you want a second set of eyes on your cafe site's schema, reach Hillcane at hillcane.co/contact or call (256) 384-2449.



Comments