The short version

I started auditing a home services client last week. Within the first hour I found this: their contact page was outranking their homepage for their own brand name. The homepage was converting branded searches at almost 10%. The contact page was converting them at less than 1%. For every 100 people searching the business by name, the wrong landing page was costing them about 9 conversions they should have gotten. Multiply that by branded volume across a month and the lost revenue isn't small.

Now try the same search on your own company name. If your homepage isn't the top result (if it's a contact page, an About page, or some random blog post nobody's touched since 2022), you have a version of the same problem they did. Something on your site is splitting your brand across multiple pages, and Google is splitting branded traffic right along with it.

Most SEO people will tell you this is a content problem. More often, it's a schema problem. The agencies that batch a dozen fixes into one deploy never figure out which one earned the lift.

I call this version schema cannibalization, because it's different from the keyword version most agencies talk about. Same outcome, different cause, different fix.

What schema actually is, in plain language

Schema is the structured code that tells search engines and AI systems what your page is. What kind of thing it represents, who's behind it, how the pieces connect. Visitors never see it. Machines read it constantly.

Think of schema as the name tag at a networking event. The page is the person. The schema is the name tag that says "Hi, I'm the homepage of Acme Services, founded in 2009, headquartered at this address, with this phone number." Google reads name tags faster than it reads people, so the name tag matters a lot.

Here's where it goes wrong. Two people at the same event, wearing identical name tags. Google has to guess which one to introduce to the customer. Sometimes it picks the wrong one. Sometimes it splits the introduction between both. Either way, your customer ends up on the page that wasn't built to convert them.

How this shows up on real businesses

Schema cannibalization doesn't make itself obvious in your monthly report. The symptoms a marketing leader will actually notice are quieter than that.

Symptom What it usually means
Your contact or About page outranks your homepage for your own brand name Multiple pages are claiming to be the official business
Branded searches land on the wrong page and convert at far lower rates Google is splitting branded traffic between pages with identical claims
Google Business Profile clicks go to pages that don't convert as well as the homepage would The schema on a secondary page is winning the entity match
Conversion rates vary wildly between pages that should be doing the same job Different pages are getting different versions of the same audience

These look like four separate problems. They're often the same problem wearing different clothes.

Back to the case study

The client I led with: residential and commercial home services, in business since 2009. Well-run, technical foundation that mostly works, no obvious red flags from the outside.

Here's what was actually happening underneath.

Two pages on their site were both telling Google they were the official business listing. Same address, same phone number, same founding date, on two different URLs. Google didn't know which to trust, so it was splitting branded searches between them. Contact page pulling around 60% of branded impressions and converting at under 1%. Homepage converting the same searches at almost 10%.

What most agencies would have done: added a canonical tag. That's a one-line instruction telling Google which page is the official one. Standard fix, and it helps. But it only solves half the problem, because the underlying schema is still telling Google that both pages represent the same business.

What I actually did: rebuilt the structured data so the two pages stopped claiming to be the same business. The contact page now identifies itself as a contact page that belongs to the business. The homepage identifies itself as the business. Same factual information on both pages. Completely different signal to Google.

The technical fix took an hour. The diagnostic work to find it took longer than that.

Then I did something most agencies wouldn't. I held the canonical.

If I'd shipped both fixes the same day and the metrics moved, I'd never know whether the canonical did the work, the schema did the work, or both. Worse, I'd never know whether one of them was actually unnecessary, which would mean the client was carrying technical debt they didn't need. So I shipped the schema fix first. The canonical is sitting in the next sprint. When the results come in, we'll know what actually moved the needle.

I'll come back to that decision in a later post in this series. It's a discipline most agencies skip because shipping a bundle feels like progress. It also means they can never tell you which fix actually earned the result.

Three signals you can check on your own site

About ninety seconds of work, no tools beyond a browser.

First, search your own brand name on Google. Is the homepage the top result? If a contact page, About page, or an old blog post is outranking it, that's a flag.

Second, look at your Google Search Console Pages report. If multiple pages are pulling impressions for queries that obviously belong to one page (your brand name, your main service), that's a flag.

Third, ask your SEO agency this question, word for word: "Have you audited our schema for duplicate entity declarations across pages?" If you get a blank stare, hand-waving, or some version of "we don't really get into that," that's the loudest flag of the three.

Why this audit gets skipped

This is the kind of work most agencies skip because it's invisible work that doesn't fit cleanly on a monthly report. If you've been told your SEO is "fine" but your branded traffic isn't converting the way it should, schema cannibalization is one of the first places I'd look.

Why this is different from keyword cannibalization

Keyword cannibalization is a content problem. Two pages target the same query because their copy, titles, and headings overlap. The fix is editorial: consolidate, redirect, or differentiate.

Schema cannibalization is a structural problem. Two pages target the same entity because their structured data says they're the same business. The fix is in the code, not in the words. You can have perfectly differentiated content and still have schema that tells Google both pages are the same thing.

Most agencies stop at the content layer because that's what their audit tools surface. Schema audits require knowing what to look for. The validators won't catch it, because each page validates fine on its own. The problem only becomes visible when you compare the schema across pages and notice they're all introducing themselves as the same business.

Where I land

The lesson isn't really about schema. It's about what kind of marketer you want on your site: someone who runs a checklist, or someone who diagnoses why the numbers are doing what they're doing.

The most expensive marketing problems are usually the invisible ones. They don't trigger errors. They don't show up in standard reports. They just quietly cost you customers every month until somebody who knows where to look actually looks.

There's a bigger version of this same problem playing out in AI search right now. ChatGPT, Perplexity, and Google's AI Overviews regularly confuse similar-sounding companies, misattribute reviews to the wrong business, and cite a competitor's pricing as if it belonged to you. If schema cannibalization is your site confusing Google about itself, entity confusion is the whole AI ecosystem confusing your business with someone else's. That's next week's post.

Related reading
What Is Keyword Cannibalization? Why Adding Schema Shouldn't Be a Dev Project Every Time Why New Websites Don't Show Up in Search

Frequently asked questions

What is schema cannibalization?

Schema cannibalization is when two or more pages on the same site use structured data that claims to represent the same business entity. Google ends up unable to tell which page is the official one, and splits branded traffic between them. It's different from keyword cannibalization, which is a content overlap problem rather than a structural one.

How is schema cannibalization different from keyword cannibalization?

Keyword cannibalization is a content problem. Two pages compete for the same search because their copy, titles, and headings overlap. Schema cannibalization is a structural problem. Two pages compete because their underlying structured data tells Google they're the same business. The fix for one is editorial. The fix for the other is in the code.

Will a canonical tag fix schema cannibalization?

A canonical tag helps, because it tells Google which page is the official version. But it doesn't change the underlying schema. If the schema on multiple pages still claims to represent the same business, the canonical is doing half the work. The cleaner fix is to correct the schema so each page identifies itself accurately, and use the canonical as a reinforcement, not a workaround.

How do I know if my site has this problem?

Three signals are easy to check. First, search your own brand name on Google and see whether the homepage is the top result. Second, look at your Google Search Console Pages report and see whether multiple pages are pulling impressions for your branded queries. Third, ask your SEO agency whether they've audited your schema for duplicate entity declarations across pages.

Why don't validators catch this?

Schema validators check whether a single page's schema is well-formed and uses the right properties. They don't compare schema across pages on the same site. So each page can validate cleanly, while collectively the site is telling Google there are several versions of the same business. The problem only becomes visible when you look across pages.

Can this affect AI search visibility too?

Yes. AI systems like ChatGPT and Perplexity rely on structured data to disambiguate businesses. When multiple pages claim to represent the same entity, AI systems often blur them together or pick the wrong one to cite. The fix at the schema layer helps both traditional search and AI search at the same time.

Helpful resources