# SEO

Structured Data for SEO: Schema Selection, JSON-LD and Validation

Structured Data for SEO: Schema Selection, JSON-LD and Validation

Structured data is machine-readable markup that describes a page and the entities it contains. Schema.org supplies the vocabulary; Google’s current Search documentation decides whether a type can qualify for a Google rich result. Correct markup improves clarity and eligibility, not guaranteed rankings or display.

The rule that prevents most mistakes

Mark up the page’s visible, current truth with the smallest useful model. Never invent a review, rating, price, author, location, product or relationship because a generator offers the field.

Separate four terms that are often mixed together

TermMeaningWhat it does not mean
Structured dataMachine-readable information in a standardized formAny specific vocabulary or search display
Schema.orgA shared vocabulary of types and propertiesAutomatic Google support for every type
Schema markupUsing that vocabulary on a page, often as JSON-LDGuaranteed rich result or ranking
Rich resultA Google result enhanced for a supported featureEvery SERP feature or Knowledge Panel
Search appearanceHow Google reports or presents a result typeA permanent format; features can change

What structured data can and cannot do

Google uses structured data as explicit clues about page meaning and to enable supported rich-result eligibility. Eligibility is only one input: Google can still choose a normal text result, and Search appearance can vary by query, location, device and product.

Google does not promise that markup alone improves rankings, wins clicks, creates trust or earns inclusion in AI answers. Its current AI optimization guidance points site owners back to normal SEO fundamentals rather than a special AI Schema type.

Can helpCannot guarantee
Clarify a page, entity and relationshipsThat every claim is believed without evidence
Qualify for a currently supported featureThat the feature will display
Keep machine-readable facts consistentHigher web rankings
Expose product, article or event attributesTraffic, sales or AI citations
Improve monitoring through enhancement reportsCoverage for unsupported Schema.org types

Use a source hierarchy before choosing a type

For Google Search behavior, treat current Google Search Central documentation and the Search Gallery as authoritative. Use Schema.org to validate vocabulary and model broader data. Generators, plugins and third-party articles are implementation aids, not the final eligibility rule.

This hierarchy matters because rich-result support changes. A recently published checklist can become outdated when Google retires a feature.

DecisionPrimary sourceWhy
Does Google support this appearance now?Google Search Gallery and feature guideCurrent Search eligibility and policies
Is this Schema.org type/property valid?Schema.org definition and validatorVocabulary-level validity
Which fields are required/recommended by Google?Current feature documentationEligibility differs from Schema.org
How will our CMS generate it?CMS/plugin documentation and source codeImplementation-specific behavior
Did production output stay accurate?Visible page, JSON-LD, logs and Search ConsoleLive evidence beats configuration screens

Feature support changes: the 2026 FAQ example

Google stopped showing FAQ rich results on May 7, 2026 and removed the FAQ rich-result documentation in June 2026. An FAQ section can still help users, and FAQPage remains a Schema.org type, but it no longer qualifies for a Google FAQ rich result.

The same maintenance principle applies to any retired or changed feature: preserve useful visible content, remove obsolete promises and monitoring, and recheck whether the markup still has a non-Google consumer or operational purpose. Do not delete helpful FAQs simply because the decoration disappeared.

When Google changes a feature
  • Confirm the change in Google’s documentation update log.
  • Check the current Search Gallery and feature guide.
  • Separate visible-content value from rich-result eligibility.
  • Remove deprecated reporting and unsupported promises.
  • Keep valid non-Google markup only when it has an identified consumer.
  • Update templates, documentation and QA cases together.
  • Annotate the date in performance reporting.

Choose the type from the page’s primary purpose

Start with the page users actually see. Select a specific truthful primary type and add secondary entities only when they have a clear relationship to that page. More nodes are not automatically better.

Page purposePractical modelImportant limit
Personal-brand home/aboutPerson, or Organization if a real organization is primaryKeep one stable identity; do not pretend both are unrelated publishers
Business home/aboutOrganization or specific subtypeGoogle recommends one home/about placement rather than every page
Blog or news articleArticle, BlogPosting or NewsArticleReal author, dates, headline and representative images
Site hierarchyBreadcrumbListRepresent a normal user path with final URLs
Physical locationSpecific LocalBusiness subtypeVisible, accurate address, hours and phone
Product for saleProduct plus Offer/merchant propertiesSingle product or variants; price and availability must match
Software landing pageSoftwareApplication when requirements fitDo not reuse one app rating across unrelated products
Service pageService may describe meaningNo dedicated Google Service rich result is promised
FAQ contentVisible HTML first; optional Schema.org modeling only with a reasonNo Google FAQ rich result since May 2026

Use JSON-LD when it is easiest to keep correct

Google supports JSON-LD, Microdata and RDFa, and generally recommends JSON-LD because it is easier to express nested data and maintain at scale. The best format is still the one your system can generate accurately and test reliably.

JSON-LD may appear in the <head> or <body>. Its separation from visible HTML is convenient, but also makes content drift easier unless both outputs share a source of truth.

FormatStrengthOperational risk
JSON-LDReadable, nested and template-friendlyCan drift silently from visible content
MicrodataProperties stay close to visible elementsHarder to refactor and review in complex markup
RDFaFlexible linked-data attributesLess familiar to many delivery teams
JavaScript-injected JSON-LDCan use dynamic route dataDepends on rendering and can lag fast-changing facts

Build one coherent entity model

Use absolute public URLs. A stable @id is a practical identifier for recurring entities, but it is not a substitute for a real page, brand, author or organization. An @graph is optional organization—not an SEO requirement.

Connect an article to its real author and publisher, a Breadcrumb to final route URLs, and a product to its real Offer. Use sameAs only for profiles that genuinely identify the same person or organization.

Identity contract
  • One preferred HTTPS URL for each public entity.
  • Stable name, URL and identifier across templates.
  • Current crawlable logo or representative image.
  • Real author profile URL where available.
  • Verified official sameAs profiles only.
  • Contact and address only when accurate and relevant.
  • Breadcrumb and entity URLs agree with Canonical routes.
  • No test, staging or placeholder identifiers in production.

Create a field-level source of truth

Every property needs an owner and upstream field. Generate visible content and JSON-LD from the same record whenever possible. If a value is not collected reliably, omit it rather than filling it with a guess.

Fast-changing ecommerce facts deserve special care. Google warns that dynamically generated Product markup can make Shopping crawls less frequent and less reliable; initial HTML and Merchant Center feeds may be better for price and availability workflows.

PropertySource of truthRelease rule
headline/namePublished page recordMust match the visible subject
authorVerified author profileInclude all visible authors separately
datePublishedOriginal publication recordNever reset during a cosmetic edit
dateModifiedMeaningful editorial updateISO 8601 and visible when appropriate
image/logoApproved media libraryRelevant, crawlable and current
price/availabilityCommerce systemSame value in page, JSON-LD and feed
rating/reviewCountVerified user-review systemNo manual invention or selective total
URL/Canonical/BreadcrumbRouting configurationFinal production URLs only

Map common templates without boilerplate abuse

TemplateCore relationshipsQA sample
ArticleArticle → author Person/Organization → publisherHeadline, all authors, truthful dates, image
Homepage/AboutWebPage → primary Person or OrganizationName, URL, logo, sameAs and contact
BreadcrumbBreadcrumbList → ordered ListItemsVisible hierarchy and resolvable URLs
LocationLocalBusiness subtype → PostalAddress/hoursOne real location and accurate service state
ProductProduct → Offer, review or aggregateRating when eligibleSingle product/variant, current commercial facts
Profile pageProfilePage → mainEntity Person/OrganizationProfile owned by the site and visible identity
Software appSoftwareApplication → operating system/category/Offer or ratingRequirements and real app details
ServiceWebPage → Service as descriptive entityNo promise of a service rich result

Validation is a stack, not one green tick

The Schema.org validator checks vocabulary and extraction. Google’s Rich Results Test checks supported Google feature eligibility. URL Inspection checks a live Google render. None can verify business truth, ownership or whether a result will actually display.

Fix critical errors for eligibility. Review warnings against the feature documentation and your data; do not invent recommended fields merely to remove a warning.

LayerTool/evidenceQuestionDoes not prove
JSON syntaxParser or build testCan the JSON be parsed?Schema vocabulary
VocabularySchema.org ValidatorAre types/properties recognized?Google rich-result support
Google eligibilityRich Results TestDoes a supported feature meet technical fields?Display or truth
Rendered deliveryURL Inspection and rendered HTMLCan Google access final markup?Indexing or ranking
Content parityVisible page versus JSON-LDDo claims match?Policy compliance by itself
Production healthEnhancement reports and sampled URLsDid templates remain valid?Business impact

Quality policies matter more than syntactic validity

Google requires markup to be visible, current, representative of the page’s main content, original where required and not misleading. A technically valid block can still lose rich-result eligibility or trigger a structured-data manual action.

Google says a structured-data manual action removes rich-result eligibility rather than changing normal web ranking. Resolve the underlying deceptive or inaccurate markup and use Search Console’s Manual Actions process where applicable.

RiskWhy it failsCorrect response
Hidden or unrelated marked-up contentNot representative of the visible pageShow the fact or remove the property
Fake product, author or locationMisleading identityUse verified real entities only
Outdated event, price or availabilityTime-sensitive data is wrongSync or remove immediately
Markup on a blank holder pageNo useful described page contentPut markup on the page it describes
Incomplete visible review setSelective and misleading representationMark up all visible reviews consistently
Wrong primary typePage focus is ambiguousUse the most specific truthful type

Reviews and ratings need a separate evidence gate

Do not add five stars because testimonials exist. Review and aggregateRating properties must follow the current supported-type rules, describe the reviewed item clearly, come from real users and match visible review information.

For LocalBusiness and Organization, Google does not show self-serving review snippets when the reviewed entity controls the reviews on its own pages—even through an embedded third-party widget. Fake reviews are prohibited, and reviews exchanged for a benefit require clear, prominent disclosure.

Before publishing rating markup
  • Confirm the reviewed type is currently eligible.
  • Identify the reviewed item once and unambiguously.
  • Verify every review and rating source.
  • Show the represented review information to users.
  • Recalculate average and count from the same dataset.
  • Disclose incentivization clearly where applicable.
  • Exclude staff-written or fabricated customer identities.
  • Document who can correct or remove invalid data.

Handle JavaScript and GTM carefully

Google can process JSON-LD injected by JavaScript or Google Tag Manager when it appears in the rendered DOM. That capability does not make client injection the safest default for essential or fast-changing data.

Google recommends deriving GTM variables from the page instead of duplicating values in the container. Server- or build-generated JSON-LD is usually easier to version with content; follow the JavaScript SEO guide when rendering or API failure can affect the graph.

MethodUse whenMain control
Server/build outputIdentity, Article and stable route dataSame record generates page and JSON-LD
CMS/plugin outputSupported templates with clear ownershipDisable duplicate generators and inspect output
GTM injectionControlled transitional implementationPage-derived variables, versioning and consent behavior
Custom client JavaScriptGenuinely dynamic dataRendered tests, API fallback and production monitoring

Align multilingual, duplicate and Canonical pages

Each language URL should contain markup matching its visible translation, language-specific Canonical and Breadcrumb URLs. The underlying person or organization can keep one stable identity while page names, descriptions and URLs localize.

Google recommends placing equivalent structured data on duplicate pages too, not only the Canonical. Coordinate route decisions with the Canonical guide and keep hreflang, Sitemap and internal links consistent.

International parity check
  • Localized headline, description and Breadcrumb names.
  • Self-consistent Canonical for each intended language URL.
  • Hreflang points to equivalent pages.
  • Entity identity remains stable across translations.
  • Prices, currencies, dates and availability reflect the visible market.
  • All marked image URLs are crawlable.
  • No untranslated placeholder or fallback values.

Roll out by template, then monitor

Treat structured data as production code. Start with one valuable supported template and a small URL sample; do not deploy an unreviewed generator across thousands of pages.

Implementation workflow
  1. Define the page purpose and current Google feature, if any.
  2. Read the feature-specific and general guidelines.
  3. Inventory visible facts and their owners.
  4. Choose the smallest accurate model and format.
  5. Map every property to a source field.
  6. Generate page content and JSON-LD from shared data.
  7. Validate syntax and Schema.org vocabulary.
  8. Run Rich Results Test for supported Google features.
  9. Compare visible, raw and rendered production output.
  10. Deploy a representative sample and inspect live URLs.
  11. Expand by template only after the sample passes.
  12. Monitor enhancement, Manual Actions, releases and feature changes.

Measure eligibility and search impact honestly

Measure structured data as a release and eligibility change, not as a guaranteed ranking experiment. Search Console can expose enhancement validity and some Search appearance filters, but feature availability and reporting differ by type.

Annotate the deployment date, compare eligible page/query cohorts, and track impressions, clicks, CTR and qualified outcomes. A richer result may change presentation without changing rank; seasonality, query mix and other releases limit causal claims.

MetricQuestionLimit
Valid/invalid itemsDid the template produce eligible markup?Validity does not guarantee display
Indexed eligible URLsCan Google process the intended pages?Not every valid page is indexed
Search appearance impressionsDid a supported appearance show?Filters are feature-dependent
CTR by page/queryDid presentation and relevance improve clicks?Rank and query mix may also change
Leads/revenueDid the eligible traffic create value?Attribution needs analytics quality
Manual spot checksDo visible facts still match markup?Sampling can miss rare states

Maintain a feature and template registry

Rich-result support, property rules and Search Console reporting change. Assign an owner and last-reviewed date to every generated type, and subscribe to Google’s Search documentation updates.

Add structured-data checks to the SEO audit workflow. Revalidate after CMS migration, redesign, routing changes, author or logo updates, review-provider changes, commerce changes and new languages.

Registry fieldExample
TemplateBlog article
Primary typeBlogPosting
Google feature/statusArticle — supported as of review date
Generator/ownerBuild module — engineering
Source fieldsTitle, author, dates, image, publisher
Sample URLsNew, old, translated and edge-case pages
Last reviewedDate + Google documentation link
MonitoringBuild test, RRT sample and Search Console report

Common structured data myths

  • “Valid Schema.org markup guarantees a Google rich result.”
  • “Schema markup is a direct ranking factor.”
  • “Every page needs every possible type.”
  • “FAQ markup still creates Google FAQ results in 2026.”
  • “Testimonials justify five-star Organization markup.”
  • “A green Rich Results Test proves every claim is true.”
  • “Recommended fields should be filled even when the data is unknown.”
  • “A plugin configuration screen proves production output.”
  • “JavaScript injection is always equivalent to initial HTML.”
  • “Schema alone is a special shortcut into AI answers.”

Frequently asked questions

What is the difference between structured data and Schema markup?

Structured data is the broader concept; Schema markup usually means using Schema.org vocabulary on a webpage, often in JSON-LD.

Does structured data improve Google rankings?

Google can use it to understand content and enable supported appearances, but does not promise a ranking increase from markup alone.

Does valid Schema guarantee a rich result?

No. The type must be supported by Google, meet current technical and quality rules, and Google still decides whether the appearance is useful for that search.

Should every page have JSON-LD?

Only when accurate markup has a purpose, source of truth and owner. More nodes without reliable data increase risk rather than value.

Does FAQPage still create Google FAQ rich results?

No. Google stopped showing the FAQ rich-result feature on May 7, 2026 and removed its documentation in June. Keep useful FAQs for people, not the retired decoration.

Can a personal brand use Person and Organization?

Model the real primary entity and relationship. A real company may publish a person’s profile; a solo personal brand should not invent a separate organization merely to add nodes.

Can I add five-star markup for testimonials?

Not automatically. Ratings require an eligible reviewed type, genuine sourced ratings and visible matching data; self-serving LocalBusiness or Organization review snippets are ineligible.

Are warnings in the Rich Results Test failures?

Critical errors can block eligibility. Warnings often refer to recommended fields; add them only when the information genuinely exists and improves the result.

Can Google Tag Manager generate JSON-LD?

Yes, but derive values from the page, avoid duplicate markup and test rendered production URLs. Stable server/build output is often easier to govern.

How often should structured data be audited?

Retest whenever a template, URL, content field, commerce system, review source, language or Google feature changes, plus scheduled representative checks.

Official references

Need a practical next step?Turn visible facts into maintainable markup—not decorative code.

Share the page templates, data sources and current JSON-LD. Jack can map accurate entities, remove unsupported or risky claims, and build a release and monitoring checklist.

Discuss structured data on WhatsApp

Jack Lee

Jack Lee

Building Search Visibility with SEO, GEO & AI-Assisted Websites through practical projects and experiments.