Sitewide Schema Blueprint – the Minimum Viable Graph

What it solves

If your site runs on scattered plugins and ad‑hoc templates, your schema is probably noisy or absent. Google ignores contradictory graphs, treats over‑eager markup as untrustworthy, and your rich results never stabilize – see the Entities pillar hub. We fix this by installing a minimum viable graph – small, coherent, and easy to maintain.

album-art
00:00

Listen to this short conversation explaining the key ideas from the Sitewide Schema Blueprint, generated with Google Labs Illuminate.

Why this matters

Schema is not a badge collection – it is a data model that helps machines connect your brand, your site, and your pages. A lean, correct graph is better than a sprawling, half‑wrong one. When your base entities are clear, page‑level enhancements actually stick and survive theme changes. The win is compounding: cleaner enhancements in Search Console, higher CTR on branded queries, faster understanding of new content.

The blueprint

One sitewide graph. Four core types. Clear relationships.

  • Organization – who you are. This is the anchor for brand identity and knowledge graph alignment.
  • WebSite – your site as a navigable object, with optional on‑site search action.
  • Person – only if a founder or public face genuinely disambiguates brand queries.
  • BreadcrumbList – per‑page context so crawlers always know where they are in your IA.

Rules - One Organization per site – stable @id, canonical sameAs to profiles you control, logo that meets image guidelines. - WebSite points to the same Organization @id and can include a potentialAction if site search exists. - Person connects to Organization via worksFor or affiliation when it reduces ambiguity – otherwise omit. - BreadcrumbList mirrors real navigation – never invent levels that UI does not show.

Example – base graph

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#org",
      "name": "Example Studio",
      "url": "https://example.com/",
      "logo": {"@type":"ImageObject","url":"https://example.com/static/logo-112.png"},
      "sameAs": [
        "https://www.linkedin.com/company/examplestudio",
        "https://twitter.com/examplestudio"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "name": "Example Studio",
      "publisher": {"@id": "https://example.com/#org"},
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://example.com/?s={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    }
  ]
}
</script>

Example – per-page breadcrumbs

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type":"ListItem","position":1,"name":"Guides","item":"https://example.com/guides/"},
    {"@type":"ListItem","position":2,"name":"Cats","item":"https://example.com/guides/cats/"},
    {"@type":"ListItem","position":3,"name":"British Shorthair – Profile & Care"}
  ]
}
</script>

Add page‑level types later – Article, FAQPage, Product, Service – only when the content clearly qualifies. Quality beats coverage.

Implementation steps

  1. Designate an entity home – the About page or a clean Brand page.
  • Why: Google needs one stable, obvious source for brand facts. This page gets the richest internal links and cleanest copy.
  • How: Include mission, team excerpt, addresses if applicable, and a curated sameAs set you actually control.
  1. Create stable IDs and assets – URLs you will not rename.
  • Why: Changing @id breaks machine memory. A tiny /static/logo-112.png that never moves de‑flakes Enhancements in GSC.
  • How: Serve your logo from a permanent path; keep SVG/PNG sizes ≥ 112×112; avoid data‑URIs.
  1. Build one JSON‑LD include – injected sitewide in <head>.
  • Why: Centralizing avoids duplicate Organization graphs from multiple plugins.
  • How: In WordPress, use an MU‑plugin or theme include. If you use a SEO plugin, disable its Organization/WebSite output to prevent duplicates.
  1. Generate breadcrumbs per template – not per plugin whim.
  • Why: Breadcrumbs must match real IA. When users see a path in UI, crawlers should see the same in JSON‑LD.
  • How: Use your theme’s breadcrumb data to emit BreadcrumbList dynamically.
  1. Validate, then publish
  • Why: Broken schema is worse than none. Validation prevents silent failures.
  • How: Test representative pages in Google’s Rich Results Test. Fix errors first, warnings later. Watch GSC → Enhancements after deployment. See Google’s structured data guidelines for what’s supported and how it’s evaluated.
  1. Iterate with page‑level types – only when earned.
  • Why: Over‑marking a page invites suppression. Start with the base graph, then add Article/FAQ/Product where content meets criteria.
  • How: Keep page‑level JSON‑LD close to its template and reference the sitewide @ids.

Example: Ours lives on the homepage – our entity home.

Common pitfalls

  • Mixing multiple Organization graphs from different plugins.
  • sameAs linking to social profiles you do not control or that conflict with your brand name.
  • Breadcrumbs that do not match visible navigation – or invent categories.
  • Spraying FAQ schema on promotional pages that are not Q&A.
  • Images that fail logo size or aspect guidelines.

Checklist

Metrics to watch

  • Enhancements → Valid items trending up – looks for Organization/Website/Breadcrumbs.
  • Rich result CTR on branded queries – stronger logos and sitelinks.
  • Indexing latency for new pages – breadcrumbs help discovery.
  • GSC warnings – watch for duplicates and conflicting types.

Put this blueprint to work

Need a clean schema graph or a quick baseline audit? We’ll review your entity home, Organization / WebSite nodes, and breadcrumbs, then give you a fix list.

See the full map – explore all SEO blueprints.