Schema & JSON-LD Guide: Structured Data for Content Sites

By Brent Dunn Jan 25, 2026 18 min read

Build Your First AI Project This Weekend

Stop consuming tutorials. Start creating. Get the free step-by-step guide.

Stop consuming tutorials. Start creating. Get the free step-by-step guide.

Your content site is live. Articles are published. But Google’s showing plain blue links while competitors get FAQ dropdowns, star ratings, and image thumbnails.

The difference is schema markup. It takes about an hour to set up with AI, and the payoff is measurable.

Nestle measured pages with rich results getting 82% higher click-through rates than pages without. The Food Network saw a 35% increase in visits after implementing structured data across 80% of their pages.

Those numbers translate directly to traffic you’re currently missing.

Schema markup tells Google exactly what your content is. Without it, Google guesses. With it, you unlock rich snippets that dominate search results.

Here’s exactly how to implement it using AI, with the templates and prompts you need to get it done today.


What Schema Markup Does for Your Business

Schema markup is code that describes your content to search engines. HTML shows content to humans. Schema explains that content to machines.

It’s based on a shared vocabulary called schema.org that Google, Bing, and Yahoo all understand. When you add schema to your pages, you’re handing Google a cheat sheet about your content.

Here’s the practical difference.

Without Schema Markup

Google sees your page and guesses:

"Some text about dog training. Maybe an article? Maybe a product page?
Author unclear. Date published... somewhere? We'll figure it out."

You’re at the mercy of the algorithm.

With Schema Markup

Google knows exactly what it’s looking at:

"This is an Article.
- Title: 'How to Train Your Dog in 7 Days'
- Author: 'John Smith' (Person entity)
- Published: 'January 15, 2026'
- Modified: 'January 20, 2026'
- Publisher: 'MarketUnlock' (Organization entity)
- Contains: HowTo steps, FAQ section, Review"

That clarity unlocks rich snippets, the enhanced search results with stars, images, FAQ dropdowns, and how-to steps that take up more space and get more clicks.


The Traffic Impact (Actual Numbers)

Rotten Tomatoes added structured data to 100,000 pages and measured a 25% higher click-through rate on pages with schema compared to pages without.

Rakuten found users spend 1.5x more time on pages with structured data.

According to Schema App’s analysis, pages with schema receive up to 40% higher click-through rates across the board.

Schema markup doesn’t directly boost your rankings. Google has stated that clearly. But it does three things that indirectly impact your traffic:

  1. Unlocks rich snippets - More visual real estate in search results
  2. Increases CTR - Rich results get more clicks than plain blue links
  3. Pushes competitors down - Your enhanced listing takes up more space

Rich Snippets You Can Unlock

Rich Result TypeSchema RequiredWhat It Looks Like
FAQ dropdownsFAQPageExpandable Q&A directly in search
How-to stepsHowToNumbered steps displayed in results
Review starsReview/AggregateRatingStar ratings next to your listing
Article thumbnailArticleImage, date, author in results
BreadcrumbsBreadcrumbListSite hierarchy path shown
Sitelinks searchWebSite + SearchActionSearch box in your result

The CTR Impact

Result TypeCTR Improvement
Review stars20-35% higher (Ignite Visibility)
FAQ rich snippet15-30% higher
How-to steps10-25% higher
Featured snippetCan capture 50%+ of clicks

15% of all searches now show AI Overviews that pull from structured data (Schema App). Schema helps Google understand your content well enough to include it in AI summaries.

Voice search is projected to hit 35% of all searches in 2026, and voice assistants pull heavily from structured data for spoken answers. If you’re building a content business, this is visibility you don’t want to leave on the table.


JSON-LD: The Format to Use

Three ways to add schema:

  1. JSON-LD - JavaScript Object Notation for Linked Data
  2. Microdata - Inline attributes in your HTML tags
  3. RDFa - Another inline format

Use JSON-LD. It’s Google’s preferred format.

Why:

  • Separate from your HTML - Lives in a script block, doesn’t touch your content
  • Easy to implement - One code block you can add anywhere
  • Easy to maintain - Update schema without touching page structure
  • Less prone to errors - According to Google, it’s “less prone to user errors”

Microdata requires weaving attributes throughout your HTML. One wrong attribute and your page structure can break. JSON-LD sits in a <script> tag and stays out of the way.

Basic JSON-LD Structure

Every JSON-LD block follows this pattern:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title",
  "author": {
    "@type": "Person",
    "name": "Author Name"
  },
  "datePublished": "2026-01-25",
  "publisher": {
    "@type": "Organization",
    "name": "Site Name"
  }
}
</script>

Drop this in your <head> or <body>. Either works, but <head> keeps things clean.

Key JSON-LD Components

PropertyPurposeExample
@contextDeclares the vocabularyAlways "https://schema.org"
@typeWhat kind of entity"Article", "Person", "Organization"
@idUnique identifier for linking entities"https://yoursite.com/#organization"
@graphArray of multiple connected entitiesUsed for complex multi-entity schemas
Nested objectsEntities within entitiesAuthor (Person) inside Article

The @id property is important.

It creates unique identifiers that let you reference entities across your site. Your Organization schema on the homepage can be referenced by Article schemas on every blog post. This builds what Google calls an “entity graph” - a connected map of everything on your site.


The Schema Types You Actually Need

You don’t need every schema type on schema.org. You need the ones that matter for content sites.

Here’s what to implement:

Site-Wide (implement once):

  • WebSite
  • Organization

Every Page:

  • BreadcrumbList
  • Article (or appropriate page type)

Content-Specific (when relevant):

  • FAQPage
  • HowTo
  • Review

1. WebSite Schema (Homepage Only)

Establishes your site as an entity and can enable the sitelinks search box in results.

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://yoursite.com/#website",
  "name": "Your Site Name",
  "url": "https://yoursite.com",
  "description": "What your site is about in one sentence",
  "publisher": {
    "@id": "https://yoursite.com/#organization"
  },
  "potentialAction": {
    "@type": "SearchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://yoursite.com/search?q={search_term_string}"
    },
    "query-input": "required name=search_term_string"
  }
}

Only add the SearchAction if your site has search functionality.

2. Organization Schema (Homepage Only)

Establishes your brand as an entity. Critical for E-E-A-T (Experience, Expertise, Authoritativeness, Trust).

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://yoursite.com/#organization",
  "name": "Your Organization Name",
  "url": "https://yoursite.com",
  "logo": {
    "@type": "ImageObject",
    "@id": "https://yoursite.com/#logo",
    "url": "https://yoursite.com/logo.png",
    "width": 600,
    "height": 60
  },
  "image": {
    "@id": "https://yoursite.com/#logo"
  },
  "sameAs": [
    "https://twitter.com/yourhandle",
    "https://linkedin.com/company/yourcompany",
    "https://www.youtube.com/@yourchannel"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "email": "support@yoursite.com"
  }
}

The sameAs property tells Google “these are all the same entity”, your Twitter, LinkedIn, YouTube. This builds your brand’s knowledge panel over time.

3. Article Schema (Every Article)

Every piece of content on your site should have Article schema.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "@id": "https://yoursite.com/category/article-url/#article",
  "headline": "Your Article Title (Max 110 Characters)",
  "description": "Article meta description that matches your page",
  "image": {
    "@type": "ImageObject",
    "url": "https://yoursite.com/images/article-image.jpg",
    "width": 1200,
    "height": 630
  },
  "datePublished": "2026-01-25T08:00:00+00:00",
  "dateModified": "2026-01-25T10:00:00+00:00",
  "author": {
    "@type": "Person",
    "@id": "https://yoursite.com/author/john-smith/#person",
    "name": "John Smith",
    "url": "https://yoursite.com/author/john-smith/",
    "sameAs": [
      "https://twitter.com/johnsmith",
      "https://linkedin.com/in/johnsmith"
    ]
  },
  "publisher": {
    "@id": "https://yoursite.com/#organization"
  },
  "mainEntityOfPage": {
    "@id": "https://yoursite.com/category/article-url/"
  },
  "isPartOf": {
    "@id": "https://yoursite.com/#website"
  },
  "wordCount": 2500,
  "articleSection": "Category Name"
}

Key points:

  • headline matches your H1, max 110 characters
  • dateModified matters. Update it when you update content
  • The @id references link this article to your Organization and WebSite entities

4. BreadcrumbList Schema (Every Page)

Shows your site hierarchy in search results. Users can click directly to parent categories.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://yoursite.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Build",
      "item": "https://yoursite.com/build/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Content Sites",
      "item": "https://yoursite.com/build/websites/content-sites/"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Schema Guide",
      "item": "https://yoursite.com/build/websites/content-sites/schema-json-ld-guide/"
    }
  ]
}

Match this to your actual site silo structure. If your URL path is /build/websites/content-sites/article/, your breadcrumbs should reflect that hierarchy.

5. FAQPage Schema (FAQ Content Only)

FAQ schema can show expandable Q&A dropdowns directly in search results, more real estate, more clicks.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is schema markup?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Schema markup is code that describes your content to search engines. It uses a standardized vocabulary from schema.org to help Google understand what your page is about."
      }
    },
    {
      "@type": "Question",
      "name": "Does schema markup improve rankings?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Schema markup doesn't directly improve rankings, but it can increase click-through rates by enabling rich snippets in search results. Higher CTR can indirectly help rankings."
      }
    }
  ]
}

Only use FAQPage schema if you actually have FAQ content visible on your page. Google has gotten strict about this. If users can’t see the questions and answers, don’t add the schema. You risk a manual action.

6. HowTo Schema (Tutorial Content)

For step-by-step guides and tutorials. Can display numbered steps directly in search.

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Add Schema Markup to Your Website",
  "description": "A step-by-step guide to implementing JSON-LD schema markup on your content site.",
  "totalTime": "PT30M",
  "estimatedCost": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": "0"
  },
  "step": [
    {
      "@type": "HowToStep",
      "position": 1,
      "name": "Identify schema types needed",
      "text": "Determine which schema types are relevant for your content. For most content sites, you need WebSite, Organization, Article, and BreadcrumbList.",
      "url": "https://yoursite.com/article/#step1"
    },
    {
      "@type": "HowToStep",
      "position": 2,
      "name": "Generate the JSON-LD code",
      "text": "Use AI or a schema generator to create properly formatted JSON-LD for each schema type.",
      "url": "https://yoursite.com/article/#step2"
    },
    {
      "@type": "HowToStep",
      "position": 3,
      "name": "Add schema to your templates",
      "text": "Insert the JSON-LD code into your page templates, either in the head or body section.",
      "url": "https://yoursite.com/article/#step3"
    },
    {
      "@type": "HowToStep",
      "position": 4,
      "name": "Test and validate",
      "text": "Use Google's Rich Results Test to verify your schema is valid and eligible for rich results.",
      "url": "https://yoursite.com/article/#step4"
    }
  ]
}

totalTime uses ISO 8601 duration format. PT30M = 30 minutes. PT1H30M = 1 hour 30 minutes.


How to Implement Schema (Pick Your Path)

Three options depending on your setup.

Option 1: Template-Based (Hugo, Jekyll, Static Sites)

If you’re using a static site generator like Hugo (my recommendation for content sites, see the site architecture guide), you add schema directly to your templates. Set it up once, every page gets schema automatically.

Create a partial at layouts/partials/schema.html:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {{ if .IsHome }}
    {
      "@type": "WebSite",
      "@id": "{{ .Site.BaseURL }}#website",
      "name": "{{ .Site.Title }}",
      "url": "{{ .Site.BaseURL }}",
      "description": "{{ .Site.Params.description }}",
      "publisher": {
        "@id": "{{ .Site.BaseURL }}#organization"
      }
    },
    {
      "@type": "Organization",
      "@id": "{{ .Site.BaseURL }}#organization",
      "name": "{{ .Site.Title }}",
      "url": "{{ .Site.BaseURL }}",
      "logo": {
        "@type": "ImageObject",
        "url": "{{ .Site.BaseURL }}logo.png"
      },
      "sameAs": [
        {{ range $i, $social := .Site.Params.social }}
        {{ if $i }},{{ end }}"{{ $social }}"
        {{ end }}
      ]
    }
    {{ else if .IsPage }}
    {
      "@type": "Article",
      "@id": "{{ .Permalink }}#article",
      "headline": "{{ .Title }}",
      "description": "{{ .Description }}",
      "image": "{{ with .Params.image }}{{ . }}{{ else }}{{ .Site.BaseURL }}default-image.jpg{{ end }}",
      "datePublished": "{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}",
      "dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}",
      "author": {
        "@type": "Person",
        "@id": "{{ .Site.BaseURL }}author/{{ .Site.Params.author | urlize }}/#person",
        "name": "{{ .Site.Params.author }}"
      },
      "publisher": {
        "@id": "{{ .Site.BaseURL }}#organization"
      },
      "mainEntityOfPage": {
        "@id": "{{ .Permalink }}"
      },
      "isPartOf": {
        "@id": "{{ .Site.BaseURL }}#website"
      }
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "{{ .Site.BaseURL }}"
        }
        {{ $defined := .Site.BaseURL }}
        {{ range $i, $e := split .RelPermalink "/" }}
        {{ if $e }}
        ,{
          "@type": "ListItem",
          "position": {{ add $i 2 }},
          "name": "{{ $e | humanize | title }}",
          "item": "{{ $defined }}{{ $e }}/"
        }
        {{ $defined = print $defined $e "/" }}
        {{ end }}
        {{ end }}
      ]
    }
    {{ end }}
  ]
}
</script>

Then include it in your layouts/_default/baseof.html:

<head>
  <!-- other head elements -->
  {{ partial "schema.html" . }}
</head>

Option 2: WordPress Plugins

If you’re on WordPress, use a plugin. Don’t write schema by hand.

PluginProsCons
Rank MathMost comprehensive free schema, auto-generates based on contentCan bloat if you enable everything
Yoast SEOSolid schema, huge user baseSome advanced schema types locked behind premium
Schema ProDedicated schema plugin, granular controlPaid only

Rank Math is the best option for most WordPress sites. The free version handles Article, Organization, Breadcrumb, FAQ, and HowTo schema automatically.

Option 3: JavaScript Injection (SPAs, Dynamic Content)

For React, Vue, Next.js, or other JavaScript-heavy sites, you can inject schema dynamically:

// Create schema object
const articleSchema = {
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": document.querySelector('h1')?.textContent || 'Article',
  "datePublished": document.querySelector('time')?.getAttribute('datetime'),
  "author": {
    "@type": "Person",
    "name": document.querySelector('.author-name')?.textContent
  }
};

// Inject into head
const script = document.createElement('script');
script.type = 'application/ld+json';
script.textContent = JSON.stringify(articleSchema);
document.head.appendChild(script);

Google can render JavaScript, but it’s better to have schema in the initial HTML response. If you’re using Next.js, use next/head to include schema server-side. For Nuxt, use useHead().


Using AI to Generate Schema Markup

Writing JSON-LD by hand is tedious and error-prone. One misplaced comma and your schema breaks. Use AI to generate it.

The key is giving the AI enough context to generate schema that matches your content. Here are the prompts I use.

AI Prompt: Complete Article Schema

Generates everything you need for a single article:

Generate complete JSON-LD schema markup for this article. I need production-ready code.

SITE INFORMATION:
- Site name: [Your Site Name]
- Site URL: https://yoursite.com
- Organization name: [Your Organization]
- Logo URL: https://yoursite.com/logo.png
- Author name: [Author Name]
- Author Twitter: @authorhandle
- Author LinkedIn: linkedin.com/in/author

ARTICLE DETAILS:
- Full URL: [https://yoursite.com/category/article-slug/]
- Title: [Exact H1 title]
- Meta description: [Your meta description]
- Published date: [YYYY-MM-DD]
- Last modified: [YYYY-MM-DD]
- Featured image URL: [Full image URL]
- Image dimensions: [width x height]
- Word count: [approximate]
- Category/Section: [Category name]

ARTICLE CONTENT:
[Paste the full article text here]

GENERATE:
1. Article schema with all recommended properties
2. BreadcrumbList schema matching the URL structure
3. If the content contains Q&A pairs, add FAQPage schema
4. If the content is step-by-step tutorial, add HowTo schema
5. Connect all schemas with proper @id references

OUTPUT REQUIREMENTS:
- Valid JSON-LD wrapped in script tags
- Use @graph to combine multiple schema types
- Include @id properties for entity linking
- Format with proper indentation
- No trailing commas

AI Prompt: Schema Audit and Fix

Already have schema? Find and fix problems:

Audit this schema markup and fix any issues.

PAGE URL: [URL]

CURRENT SCHEMA:
[Paste your existing JSON-LD here]

VISIBLE PAGE CONTENT:
[Paste or describe what users actually see on the page]

CHECK FOR:
1. JSON syntax errors (missing commas, brackets, quotes)
2. Missing required properties for each schema type
3. Data mismatches (schema says something different than the page shows)
4. Incorrect date formats (should be ISO 8601)
5. Invalid URLs (must be full https:// URLs)
6. Missing @id references
7. Opportunities for additional schema types

PROVIDE:
- List of all issues found with explanations
- Corrected JSON-LD code ready to deploy
- Any additional schema types that would benefit this page

AI Prompt: Bulk Schema for Multiple Pages

When you need schema for your entire site:

Generate schema markup for multiple articles. Output one complete JSON-LD block per article.

SITE-WIDE CONSTANTS:
- Site name: [Name]
- Site URL: https://yoursite.com
- Organization @id: https://yoursite.com/#organization
- Website @id: https://yoursite.com/#website
- Default author: [Name]
- Default author URL: https://yoursite.com/author/name/

ARTICLES TO PROCESS:

Article 1:
- URL: /category/article-1/
- Title: [Title]
- Description: [Description]
- Published: 2026-01-15
- Category: [Category]
- Has FAQ section: Yes/No
- Is tutorial: Yes/No

Article 2:
- URL: /category/article-2/
- Title: [Title]
- Description: [Description]
- Published: 2026-01-20
- Category: [Category]
- Has FAQ section: Yes/No
- Is tutorial: Yes/No

[Add more articles...]

FOR EACH ARTICLE, GENERATE:
- Article schema
- BreadcrumbList schema
- FAQPage schema (if marked Yes)
- HowTo schema (if marked Yes)

OUTPUT FORMAT:
Label each block with the article URL for easy identification.

AI Prompt: Hugo Template Schema

Have AI write your Hugo template:

Create a Hugo partial template for JSON-LD schema markup.

SITE CONFIGURATION (hugo.toml params):
- title: [Site Title]
- description: [Site description]
- author: [Default author name]
- authorUrl: [Author page URL]
- logo: [Logo path]
- social: [Array of social URLs]

THE TEMPLATE MUST:
1. On homepage: Output WebSite + Organization schema using @graph
2. On regular pages: Output Article + BreadcrumbList schema using @graph
3. Pull values from front matter where available, fall back to site params
4. Generate breadcrumbs dynamically from URL path
5. Use proper @id references to link entities
6. Format dates in ISO 8601
7. Handle missing values gracefully (no empty strings or null values)

FRONT MATTER FIELDS TO SUPPORT:
- title
- description
- date
- lastmod
- image
- author (override)

Output the complete partial file ready to save as layouts/partials/schema.html

After AI generates schema, validate it. AI can make mistakes with JSON syntax. Run it through Google’s Rich Results Test before deploying.


Testing and Validating Your Schema

Most people add schema, never test it, and wonder why they’re not getting rich snippets. Or they have broken schema throwing errors for months without knowing.

Test before deploying. Monitor after.

The Tools

ToolWhat It DoesURL
Rich Results TestTests if your schema qualifies for rich resultssearch.google.com/test/rich-results
Schema Markup ValidatorValidates against schema.org specsvalidator.schema.org
JSON LintPure JSON syntax validationjsonlint.com
Search ConsoleMonitors schema errors site-widesearch.google.com/search-console
Schema Markup GeneratorGenerates schema with a visual interfacetechnicalseo.com/tools/schema-markup-generator

Common Errors and Fixes

Based on research from Zeo, here are the errors you’ll hit most often:

ErrorWhat Went WrongThe Fix
Missing required propertySchema type needs fields you didn’t includeCheck schema.org for required properties
Invalid JSON syntaxMissing comma, extra comma, wrong bracketsRun through jsonlint.com first
Invalid URL formatRelative URL or missing protocolAlways use full https:// URLs
Invalid date formatWrong date structureUse ISO 8601: 2026-01-25T08:00:00+00:00
Data mismatchSchema says something page doesn’t showSchema must match visible content
Wrong quotation marksCurly quotes from Word/DocsUse straight quotes only: " not "
Incorrect schema typeUsing wrong type for contentMatch schema type to actual content

The data mismatch is critical. Google explicitly states: schema must describe content visible on the page. If your FAQ schema has questions users can’t see, that’s misleading markup. Google can and will issue manual actions.

The Testing Workflow

Step 1: Validate JSON Syntax Paste your JSON-LD into jsonlint.com. Fix any syntax errors. This catches missing commas, brackets, quote issues.

Step 2: Test in Rich Results Test Go to Google’s Rich Results Test. Enter your URL (or paste code directly). Check for:

  • Errors (must fix)
  • Warnings (should fix)
  • Rich result eligibility

Step 3: Validate Against Schema.org Use validator.schema.org for a deeper check. This catches issues the Rich Results Test might miss.

Step 4: Deploy and Monitor After deploying, go to Search Console > Enhancements. Check each schema type report (Articles, FAQPage, HowTo, etc.) for errors across your site.

Step 5: Request Indexing In Search Console, request indexing for updated pages. Rich results can take days to weeks to appear.


Schema Strategy by Page Type

Different pages need different schema:

Page TypeSchema Types to Include
HomepageWebSite + Organization (using @graph)
Article/Blog PostArticle + BreadcrumbList + FAQPage (if FAQs present)
How-To GuideArticle + HowTo + BreadcrumbList
Product ReviewArticle + Review + Product + BreadcrumbList
Category/Hub PageCollectionPage + BreadcrumbList
Author PagePerson + ProfilePage
About PageOrganization + AboutPage
Contact PageContactPage + Organization

Always include BreadcrumbList on every page except homepage.


2026 Schema Updates

Google deprecated seven schema types in January 2026 (source): Book Actions, Course Info, Claim Review, Estimated Salary, Learning Video, Special Announcement, and Vehicle Listing.

The core types for content sites are still supported: Article, FAQPage, HowTo, Organization, WebSite, BreadcrumbList, Product, Review, and LocalBusiness.

If you’re building a content site, you’re not affected. Focus on the fundamentals.


Mistakes That Kill Your Schema

Based on research from Zeo and Dynamic Schema:

1. Marking up content users can’t see - FAQ schema with 10 questions but page only shows 3? Google can penalize you.

2. Copying schema from Word or Google Docs - Curly quotes break JSON. Use a code editor or straight quotes only.

3. Using the wrong schema type - Don’t use Product schema for a blog post. Match the type to the content.

4. Missing required properties - Every schema type has required properties. Missing them means no rich results.

5. Not keeping schema updated - Schema says “dateModified: 2024-06-15” but you updated yesterday? That’s a mismatch.

6. Over-implementing schema - You don’t need 15 schema types on one page. Use what’s relevant.


Implementation Checklist

Site-Wide (implement once):

  • WebSite schema on homepage
  • Organization schema on homepage
  • Logo properly referenced with dimensions
  • sameAs properties linking to social profiles

Every Page:

  • BreadcrumbList schema (except homepage)
  • Appropriate page-type schema (Article, HowTo, etc.)
  • All @id references are consistent

Content-Specific:

  • FAQPage for visible FAQ sections
  • HowTo for step-by-step tutorial content
  • Review for review/comparison content

Before Deploying:

  • JSON syntax validates (jsonlint.com)
  • Rich Results Test shows no errors
  • Schema.org validator passes
  • Schema matches visible page content

After Deploying:

  • Request indexing in Search Console
  • Monitor Search Console Enhancements reports
  • Check rich results appearing (give it 2-4 weeks)

What to Do Today

Schema markup is free visibility. The 20-40% CTR improvement on pages with rich results makes this one of the highest-ROI technical SEO tasks you can do.

Here’s the action plan:

  1. Add WebSite and Organization schema to your homepage - Use the templates above or the AI prompt to generate them
  2. Add Article and BreadcrumbList schema to your templates - If you’re on Hugo, use the partial I provided. If you’re on WordPress, install Rank Math
  3. Test everything - Run your pages through Rich Results Test before deploying
  4. Monitor in Search Console - Check the Enhancements reports weekly for the first month

That’s it. No complexity. Just the fundamentals done right.

Once your schema is in place, you’re ready to optimize for the next level of search visibility: AI Overviews. That’s covered in the AI Overview Optimization guide.


Keep Building

Related guides:

Next How to Get Your Content Cited in AI Overviews (And Actually Get Traffic in 2026)