20 Checks · Code Examples · Free

Structured Data & Schema.org Checklist

How to implement structured data correctly. Covers JSON-LD syntax, validation, debugging, and deployment best practices for rich results.

Why Implementation Matters

Structured data is the most explicit way to communicate with search engines. But implementing it incorrectly is worse than not implementing it at all. Invalid JSON, missing required fields, and wrong property names cause Google to ignore your markup entirely.

In 2026, structured data powers not just traditional rich results but also AI-generated answers. ChatGPT, Perplexity, and Google AI Overviews use structured data to extract factual information, verify entity relationships, and generate accurate citations. But only if the implementation is technically correct.

The key to effective structured data is clean implementation: valid JSON-LD syntax, correct property names and value types, proper nesting, and rigorous validation before publishing. One syntax error can invalidate your entire schema block.

JSON-LD Google's only recommended format
63% of schemas have implementation errors
3 required fields: @context, @type, name

JSON-LD vs Microdata

JSON-LD in script tag Google recommended
Microdata in HTML attributes Harder to maintain
RDFa in HTML5 attributes Deprecated by Google
Separates data from visible HTML JSON-LD advantage
Supports complex nesting JSON-LD advantage
Generated programmatically JSON-LD advantage
Update without touching HTML JSON-LD advantage
Supported by all major search engines All formats

The 20 Structured Data Checks

Every check ranked by impact. Start at the top and work down.

# Check Category Impact Difficulty
1Use JSON-LD format exclusivelyFormatCriticalEasy
2Include @context and @type on every schemaRequiredCriticalEasy
3Choose the correct primary schema typeTypesCriticalMedium
4Include all required properties for each typePropertiesCriticalMedium
5Add recommended properties for richer dataPropertiesHighMedium
6Use @id to create entity referencesConnectionsHighMedium
7Add sameAs links to authoritative sourcesEntityHighEasy
8Use mainEntityOfPage for primary entitiesStructureHighEasy
9Nest related entities within parent objectsStructureMediumMedium
10Implement BreadcrumbList sitewideNavigationHighEasy
11Add Organization schema to homepageCoreCriticalEasy
12Implement WebSite schema with SearchActionCoreHighEasy
13Use about and mentions for topical signalsSemanticMediumMedium
14Date all content with datePublished and dateModifiedDatesMediumEasy
15Link authors with @id to their profile pagesE-E-A-TMediumEasy
16Validate with Rich Results Test before publishingQACriticalEasy
17Monitor Search Console for schema errorsMonitoringMediumEasy
18Avoid mixing JSON-LD with MicrodataFormatMediumEasy
19Use @graph for multiple related entitiesAdvancedLowHard
20Keep schema updated when content changesMaintenanceMediumEasy

Deep Dive: Every Check Explained

Detailed implementation guides with code examples for all 20 checks.

1 Use JSON-LD Format Exclusively

Google recommends JSON-LD for structured data. It is easier to implement, maintain, and debug than Microdata or RDFa. Place JSON-LD in a script tag in your page's head or body.

# JSON-LD placement:
<head>
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Your Article Title"
  }
  </script>
</head>

# Why JSON-LD over Microdata:
- Separates structured data from visible HTML
- Easier to generate programmatically
- Easier to update without touching HTML
- Supports complex nested structures
- Google's recommended format

2 Include @context and @type on Every Schema

Every structured data object must include @context (set to "https://schema.org") and @type (the entity type). Without these, search engines cannot parse your markup.

3 Choose the Correct Primary Schema Type

The @type value determines how search engines classify your content. A product page should use Product, not Article. A local business should use LocalBusiness, not Organization. Match the type to your content.

# Schema type selection guide:

Blog post → Article, BlogPosting, NewsArticle
Product page → Product
Service page → Service
Local business → LocalBusiness, Restaurant, Store
Person/author → Person
FAQ section → FAQPage
Tutorial → HowTo
Video page → VideoObject
Event page → Event
Recipe page → Recipe
Review → Review
Organization → Organization
Website → WebSite

# Wrong type = wrong rich results:
Using Article on a product page = no product rich results
Using Product on a blog post = no article rich results

4 Include All Required Properties for Each Type

Each schema type has required properties that must be present for rich results. For example, Product requires name and at least one of offers, review, or aggregateRating. Missing required properties means no rich results.

5 Add Recommended Properties for Richer Data

Beyond required properties, each type has recommended properties that enhance your structured data. Adding image, description, author, and datePublished to Article schema creates richer rich results.

6 Use @id to Create Entity References

@id creates unique identifiers that allow schema objects to reference each other. Define your Organization once with @id and reference it from Article, Product, and other schema objects.

# Define Organization once:
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.example.com/#org",
  "name": "Example Company",
  "url": "https://www.example.com"
}

# Reference from Article:
{
  "@context": "https://schema.org",
  "@type": "Article",
  "publisher": { "@id": "https://www.example.com/#org" },
  "author": { "@id": "https://www.example.com/#author" }
}

# Benefits:
- No data duplication
- Creates entity graph connections
- Easier maintenance
- Helps search engines map relationships

7 Add sameAs Links to Authoritative Sources

sameAs connects your entity to authoritative external sources : Wikipedia, LinkedIn, official sites. This helps search engines disambiguate entities and verify identity.

8 Use mainEntityOfPage for Primary Entities

mainEntityOfPage tells search engines which entity is the primary subject of a page. This is important when a page mentions multiple entities.

9 Nest Related Entities within Parent Objects

Related entities should be nested within their parent objects rather than defined separately. An Article's author should be nested within the Article object.

10 Implement BreadcrumbList Sitewide

BreadcrumbList schema should be on every page. It generates breadcrumb rich results in SERPs and helps search engines understand your site hierarchy.

11 Add Organization Schema to Homepage

Every site should have Organization schema on at least the homepage. This establishes your brand entity and powers knowledge panels.

12 Implement WebSite Schema with SearchAction

WebSite schema with SearchAction enables the sitelinks search box in Google results.

13 Use about and mentions for Topical Signals

The about and mentions properties tell search engines what topics and entities your content covers. This provides additional topical signals beyond the visible text.

14 Date All Content with datePublished and dateModified

Date properties help search engines understand content freshness. datePublished should reflect the original publication date, and dateModified should be updated whenever the content changes significantly.

15 Link Authors with @id to Their Profile Pages

Author @id references connect articles to author profile pages, strengthening E-E-A-T signals. This creates a knowledge graph of your authors and their published works.

16 Validate with Rich Results Test Before Publishing

Always validate your structured data before publishing. Errors mean Google cannot parse your markup, wasting your implementation effort.

17 Monitor Search Console for Schema Errors

Search Console reports structured data errors and warnings across your site. Monitor the Enhancements section regularly for issues that need fixing.

18 Avoid Mixing JSON-LD with Microdata

Using both JSON-LD and Microdata on the same page can create conflicts and confusion. Stick to JSON-LD exclusively for consistency and easier maintenance.

19 Use @graph for Multiple Related Entities

The @graph property allows you to define multiple related entities in a single JSON-LD block. This is an advanced technique for complex entity relationships.

20 Keep Schema Updated When Content Changes

Structured data should reflect your current content. If you update a product price, article, or service details, update the schema too. Outdated schema can lead to penalties.

Common Implementation Pitfalls

Implementation mistakes that break your structured data.

Implementation Mistakes vs Correct Approach

Invalid JSON syntax (missing commas, quotes) Validate JSON before embedding
Placing schema in body instead of head Put JSON-LD in the head tag
Missing @context declaration Always include @context: schema.org
Using wrong property name casing Follow Schema.org exact casing
Hardcoding dynamic values in static schema Generate schema from CMS data
Never re-testing after site changes Validate after every deployment

Validation & Testing Tools

Tools to test, debug, and monitor your structured data implementation.

Google Rich Results Test

Paste a URL or code snippet to check rich result eligibility. Shows exactly which properties are missing or invalid.

Free

Schema.org Validator

Validates against the full Schema.org spec, not just Google-supported types. Catches syntax errors, wrong value types, and broken references.

Free

Google Search Console Enhancements

Monitor structured data errors and warnings across your entire site. Tracks valid vs invalid pages per schema type over time.

Free

Chrome DevTools

Inspect JSON-LD blocks directly in the Elements panel. Use the Console to parse and validate schema objects on any page.

Free

JSON-LD Playground

Test JSON-LD syntax, visualize the graph structure, and debug context resolution issues in an interactive editor.

Free

Sitebulb / Screaming Frog

Crawl entire sites to audit structured data at scale. Finds pages with missing, broken, or conflicting schema markup.

Paid

Related Checklists

Keep exploring the on-page SEO series. Every checklist follows the same structure.

Entity Types & Schema Markup

Which schema type to use for which content: a complete selection guide for every page type.

SERP Appearance & Rich Results

Optimizing for featured snippets, knowledge panels, and AI overviews.

Search Engine Understanding

How search engines process, interpret, and rank your content.

Video SEO Optimization

VideoObject schema, transcripts, chapters, and video sitemaps.

Image SEO Optimization

Alt text, image formats, lazy loading, and image schema markup.

Content Optimization

Keyword placement, topic coverage, and readability optimization.

Need Better Rankings

Let's Optimize Pages That Rank and Convert

Got pages stuck on page two? Traffic that won't convert? Let's fix it with a personalized on-page SEO audit.

Get a Free SEO Audit

Frequently Asked Questions

Common questions about implementing structured data correctly.

Where should I place JSON-LD in my HTML?

Place JSON-LD in a script tag inside the head section of your HTML. While Google also accepts it in the body, placing it in the head keeps it separate from visible content and makes it easier to manage. Each page can have multiple script tags for different schema types.

How do I validate my structured data before publishing?

Use Google's Rich Results Test (search.google.com/test/rich-results) to check rich result eligibility. Use the Schema.org Validator (validator.schema.org) to validate against the full spec. Both tools accept URLs and code snippets, so you can test before deploying.

Can I put multiple schema types in one JSON-LD block?

Yes. Use the @graph property to define multiple related entities in a single script tag. This is cleaner than separate blocks and lets you connect entities with @id references within the same JSON-LD object. Each entity in the graph needs its own @type.

Why is my structured data not showing rich results?

Common reasons: missing required properties for that schema type, invalid JSON syntax, schema type not supported for rich results, or the page not meeting Google's quality guidelines. Check Search Console's Enhancements tab for specific errors and warnings on your pages.

How do I handle dynamic content in structured data?

Generate JSON-LD programmatically from your CMS or templating engine rather than hardcoding it. For WordPress, use plugins like Yoast or Rank Math. For custom sites, render schema in your server-side templates using the same data that powers the visible page content.

Should I use @id or @ref to connect schema objects?

Use @id to assign a unique identifier to an entity (e.g., "@id": "https://example.com/#org"). Then reference that entity from other objects by including a property with just the @id value. This avoids duplicating data and creates a connected entity graph that search engines can traverse.

How often should I re-validate my structured data?

Re-validate after every site deployment, theme update, or CMS plugin change. Also check Search Console weekly for new structured data errors. Schema markup can break silently when templates change, plugins update, or URLs shift.

AA

Amir Ali

Founder of Clienvora, a content marketing agency that combines SEO and copywriting to drive rankings, traffic, and revenue. This checklist is maintained and updated regularly.