Make Content Eligible and Understandable
Structured Data & Schema Standard
Use JSON-LD to describe pages in a way that helps search engines and AI systems understand your content. This standard covers eligibility, parity, and the exact patterns to implement for Article, FAQ, HowTo, Breadcrumb, Organization, and Product or SoftwareApplication. It follows Google Search Central guidance on structured data, schema policies, and testing with the Rich Results Test.
Objective and scope
Describe pages with JSON-LD so they are eligible for rich results and easier for AI to interpret. Keep markup aligned with visible content, and limit scope to supported types. Google supports JSON-LD and documents eligibility by type in Search Central’s rich results gallery. The Schema.org vocabulary is the reference for properties and types at schema.org.
Eligibility and parity rules
Content parity
- Markup must match visible content and claims
- Do not include hidden or misleading properties
- Keep dates and prices in sync with the page
See Google’s structured data policies.
Supported types
- Use types that Google lists in the rich results gallery
- Article, FAQ, HowTo, Product, SoftwareApplication, Breadcrumb, Organization
Data hygiene
- Valid JSON and correct property names
- Use absolute URLs for @id and url when possible
- Avoid duplicate or conflicting markup blocks
Core types to implement
Type | Where | Required highlights |
---|---|---|
Article | Blog, guides, resources | headline, datePublished, dateModified, author, mainEntityOfPage |
FAQPage | Visible FAQ section | Each Q and A visible on page |
HowTo | Step-by-step with materials or tools | step list, optional supply and tool |
BreadcrumbList | Hierarchical trails | itemListElement with position, name, item |
Organization | Sitewide | name, url, logo, sameAs |
Product or SoftwareApplication | Product and pricing pages | Visible offers, brand, applicationCategory, reviews only if shown |
Article pattern
Use Article for guides and posts. Include publish and modified dates and a clear headline. Google explains Article markup in the Article guide.
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"Article",
"@id":"https://accordcontent.com/resources/structured-data-schema-standard/#article",
"headline":"Structured Data & Schema Standard",
"description":"JSON-LD patterns and QA for rich results.",
"author":{"@type":"Organization","name":"Accord Content"},
"publisher":{"@type":"Organization","name":"Accord Content"},
"datePublished":"2025-08-01",
"dateModified":"2025-08-01",
"mainEntityOfPage":{"@type":"WebPage","@id":"https://accordcontent.com/resources/structured-data-schema-standard/"},
"image":"https://accordcontent.com/og/structured-data-standard.png"
}
</script>
Keep the visible date on the page in sync with dateModified. Google notes date guidance inside the Article doc.
FAQ pattern
Only add FAQPage when the page shows the same Q and A pairs. Google documents eligibility and examples in the FAQ guide.
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"FAQPage",
"mainEntity":[
{
"@type":"Question",
"name":"Do we need JSON-LD or microdata",
"acceptedAnswer":{"@type":"Answer","text":"Use JSON-LD. It is Google’s recommended format for structured data."}
},
{
"@type":"Question",
"name":"Can we mark up hidden content",
"acceptedAnswer":{"@type":"Answer","text":"No. Mark up content that is visible to users and in parity with the page."}
}
]
}
</script>
If your page only has one Q and A, consider leaving FAQ off. Overuse does not help and can violate policy.
HowTo pattern
Use HowTo for step-by-step tasks with a clear sequence. Include steps and optionally time, tools, and supplies. See Google’s HowTo doc.
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"HowTo",
"name":"Set up GA4 events for content",
"totalTime":"PT30M",
"tool":[{"@type":"HowToTool","name":"Google Tag Manager"}],
"step":[
{"@type":"HowToStep","url":"https://accordcontent.com/resources/ga4-guide/#events","name":"Create event","text":"Create a new GA4 event in GTM with parameters."},
{"@type":"HowToStep","url":"https://accordcontent.com/resources/ga4-guide/#test","name":"Test and publish","text":"Preview, verify in DebugView, then publish."}
]
}
</script>
Do not tag a narrative article as HowTo unless it truly has discrete steps on the page.
Organization and site-level
Add Organization markup sitewide to identify your brand. Include url, name, and a logo that meets requirements in Google’s Organization guide. Link to social profiles with sameAs.
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"Organization",
"@id":"https://accordcontent.com/#org",
"name":"Accord Content",
"url":"https://accordcontent.com/",
"logo":"https://accordcontent.com/logo.png",
"sameAs":[
"https://www.linkedin.com/company/accordcontent/",
"https://twitter.com/accordcontent"
]
}
</script>
Use a single Organization block per template. Keep the same @id across the site.
Product or SoftwareApplication
Use Product for physical or general offers. Use SoftwareApplication for SaaS. Only include prices, ratings, and reviews that users can see on the page. See Google’s Product doc and Software app doc.
SoftwareApplication example
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"SoftwareApplication",
"@id":"https://accordcontent.com/#product",
"name":"Accord Content Studio",
"applicationCategory":"BusinessApplication",
"operatingSystem":"Web",
"offers":{"@type":"Offer","price":"49","priceCurrency":"USD","url":"https://accordcontent.com/pricing/"},
"publisher":{"@id":"https://accordcontent.com/#org"}
}
</script>
Review guidance
- Only include reviews if they are shown to users
- Follow Google’s review snippet policies
- Do not aggregate third-party ratings without permission
See the Review snippet policy.
@id strategy and entity linking
Use @id to create stable identifiers for major entities like your Organization, Product, and Articles. Link related blocks with the same @id to build a connected graph.
- Organization @id: https://example.com/#org
- Product @id: https://example.com/#product
- Article @id: use a fragment on the article URL
This pattern is recommended in community best practice and discussed in Google’s docs where examples reference @id and cross linking.
Testing and validation
Rich Results Test
Validate eligibility and errors for supported types. Use the Rich Results Test for page or code snippet checks.
Schema Markup Validator
Validate general Schema.org JSON-LD with the Schema Markup Validator. This checks vocabulary usage beyond rich results.
Search Console
Use the Enhancements reports and Manual actions in Search Console for sitewide monitoring.
Governance and change control
Who owns schema
- SEO and content own the model and parity checks
- Engineering owns templates and deployment
- Marketing ops monitors Search Console and alerts
Change log
- Record type additions, property changes, and removals
- Track dates and pages affected
- Roll back if parity or policy issues appear
Google’s policy page lists reasons markup can be ignored or penalized. Keep changes small and test in staging.
Measurement in Search Console
Search Console shows impressions and clicks for eligible rich results where supported. It also lists enhancement errors and warnings.
- Monitor Enhancements for FAQ, HowTo, and Breadcrumb
- Track clicks and CTR on pages where markup was added
- Use Annotations in your analytics tool when schema ships
Search Central’s performance and enhancements docs explain both reports in detail.
Templates and checklists
Article + FAQ combined (only when both are visible)
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@graph":[
{
"@type":"Article",
"@id":"https://accordcontent.com/resources/on-page-seo-checklist/#article",
"headline":"On-Page SEO Checklist",
"datePublished":"2025-05-14",
"dateModified":"2025-08-01",
"author":{"@type":"Organization","name":"Accord Content"},
"mainEntityOfPage":{"@type":"WebPage","@id":"https://accordcontent.com/resources/on-page-seo-checklist/"},
"image":"https://accordcontent.com/og/on-page-seo.png",
"publisher":{"@id":"https://accordcontent.com/#org"}
},
{
"@type":"FAQPage",
"mainEntity":[
{"@type":"Question","name":"How many H2s can I use","acceptedAnswer":{"@type":"Answer","text":"Use as many as needed for structure. Keep a logical hierarchy."}},
{"@type":"Question","name":"Should I repeat keywords in H1 and title","acceptedAnswer":{"@type":"Answer","text":"Keep them aligned but avoid awkward repetition. Focus on clarity."}}
]
}
]
}
</script>
Publishing checklist
- JSON is valid and loads once per type
- Properties match what is visible on the page
- Dates and prices are current
- Breadcrumb JSON-LD mirrors the visible trail
- Rich Results Test shows eligible types without errors
- Search Console has no new enhancement errors after deploy
FAQ
Is JSON-LD better than microdata
Google recommends JSON-LD because it is easier to maintain and less likely to break markup. See guidance in the structured data intro linked above.
Can I mark up content inside tabs
Yes if users can see it without extra navigation and it is not hidden from most users. Keep parity and avoid deceptive patterns.
Should every page have FAQ
No. Add FAQ only when the page visibly answers discrete questions. Overuse can trigger policy issues or be ignored.
What if Search Console shows a warning
Warnings usually indicate optional fields you could add. Fix errors first, then address warnings that improve clarity.