Structured Data & Schema Standard: JSON-LD, Eligibility, Parity, and QA for Rich Results

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.

Updated • ~30 to 40 min read

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.

Structured data does not guarantee special results. It makes your page eligible. Relevance, quality, and policies still decide outcomes.

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

TypeWhereRequired highlights
ArticleBlog, guides, resourcesheadline, datePublished, dateModified, author, mainEntityOfPage
FAQPageVisible FAQ sectionEach Q and A visible on page
HowToStep-by-step with materials or toolsstep list, optional supply and tool
BreadcrumbListHierarchical trailsitemListElement with position, name, item
OrganizationSitewidename, url, logo, sameAs
Product or SoftwareApplicationProduct and pricing pagesVisible 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.

Fix errors before publishing. Warnings can be optional fields, but do not ignore if they reduce clarity.

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.