Schema Markup and JSON-LD That Earns Rich Results and AI Citations
Per-page-type JSON-LD designed against the live registry, validated in Google Rich Results Test, kept in sync with the visible DOM, and built to feed both the SERP rich-result surface and the AI-search entity graph.
Most sites either have no schema, the wrong schema, or schema that drifted out of sync with the visible DOM.
Schema markup is how a page tells Google and the AI engines exactly what it is — the entity it represents, the questions it answers, the products or services on offer, the credentials of the author, the relationships between pages. Without structured data, every engine has to infer all of that from the prose, and inference is lossy: the page may rank, but the rich-result surface is closed and the AI engines' retrieval index has nothing clean to anchor a citation against. With well-formed JSON-LD, the page is legible to machines, and the doors that require legibility — rich results, knowledge-panel inclusion, AI-engine citation — open.
The common failure mode is not a total absence of schema; it is broken schema. A `Product` block on a page that is not a product. A `Review` block whose ratings do not match the visible reviews on the page. A `LocalBusiness` block whose hours conflict with the GBP the same business runs on Google. Required fields missing, optional fields filled with placeholder text, deprecated types still shipped, plugin-generated bloat that contradicts hand-written tags. Google quietly drops invalid blocks; the AI engines quietly down-weight the entity. The site does not get a warning — it just stops earning the surfaces it should.
A second failure is rich-result eligibility drift. Google has tightened eligibility for several rich-result types over the past two years: FAQ rich results are now restricted to a narrow set of authoritative sources, Review/HowTo show selectively, sitelink search-box behavior changed. We track those eligibility changes, ship the schema types that are still earning rich-result surface for your verticals, and do not promise rich-result inclusion that the algorithm currently does not grant. The schema itself remains valuable for the AI-search entity graph even where the SERP rich-result surface has tightened.
- ✕No schema at all — every page invisible to the entity-graph systems that decide AI citations
- ✕Wrong schema types applied to the wrong page templates (e.g., Product on a service page)
- ✕Schema values that contradict the visible DOM (Google reads this as low confidence)
- ✕Required fields missing or filled with placeholder text
- ✕Plugin-generated schema fighting hand-written tags on the same page
- ✕Deprecated schema types still shipping — silent demotion signal
- ✕No FAQPage / HowTo / Speakable schema on pages with obvious answer-first surface
- ✕GBP fields and on-site LocalBusiness schema disagree on hours, categories, or services
- Organization schema sitewide for clean entity recognition
- LocalBusiness schema where the business has a physical or service-area presence, kept in sync with GBP
- Service schema on every service page with areaServed, hasOfferCatalog, and provider fields
- FAQPage schema on every Q&A-heavy page, built from the same array as the visible accordion
- HowTo schema on process pages where the steps are real and actionable
- Article schema with author, datePublished, dateModified populated for the E-E-A-T uplift
- Speakable schema + CSS selectors marked on the answer-first surface for voice-assistant rendering
- BreadcrumbList sitewide so the SERP path renders cleanly and the AI engines can map the hierarchy
How schema implementation actually works.
- 01
Schema audit
The Free Website Plan identifies the three highest-priority issues. A paid scope can then inventory current schema, compare it with visible content, identify invalid or deprecated markup, and map eligible types against current platform guidance.
- 02
Schema design
We design JSON-LD blocks per page template — Organization, LocalBusiness, Service, FAQPage, HowTo, Article, Speakable, Review, Product, BreadcrumbList — with the right fields, the right relationships (`@id` references between blocks), and the alignment with the live route registry that keeps schema and routes in sync.
- 03
Implementation
We ship JSON-LD via `<script type="application/ld+json">` blocks on every page, with dynamic fields populated correctly from real data, validated against the Google Rich Results Test before deploy, and against the schema.org validator for type-correctness. Plugin-generated bloat is removed where it conflicts with the hand-written tags.
- 04
DOM-alignment audit
We compare every schema field to the visible DOM. Hours mismatch, prices mismatch, review counts mismatch, address mismatch — every drift is a demotion signal we close. Same applies to GBP-vs-on-site LocalBusiness drift; we align both.
- 05
Monitor + iterate
Verify in Google Search Console, monitor rich-result impressions and clicks monthly, track schema validity in Bing Webmaster Tools, and retune as Google updates supported types or tightens eligibility. Schema is not ship-and-forget; it drifts as the site grows.
Engineered from day one.
Organization schema
Sitewide Organization with logo, sameAs, foundingDate, contactPoint — the entity-recognition foundation every AI engine reads first.
LocalBusiness schema
Hours, address, phone, geo coordinates, areaServed — kept in sync with GBP. Drift between the two is a measurable demotion signal.
Service schema
Every service page gets Service with areaServed, hasOfferCatalog, and a provider reference back to Organization via `@id`.
FAQPage + HowTo
FAQPage and HowTo schema where the visible content supports them, built from the same source array as the visible DOM (no drift).
Article + E-E-A-T
Article schema with author, datePublished, dateModified populated — the freshness + credibility signals AI engines weight heavily.
Speakable schema
Speakable specification + CSS selectors on the answer-first surface so voice assistants (Google, Siri, Alexa) extract the answer verbatim.
Review / Product schema
Where real reviews and real products exist, Review + AggregateRating + Product schema implemented within Google's current eligibility rules.
BreadcrumbList sitewide
Per-page BreadcrumbList so the SERP path renders cleanly and the AI engines can map the hierarchy.
1WebsiteNow schema implementation vs. plugin-generated schema
Scroll horizontally to review every comparison column.
| Plugin-generated (Yoast / RankMath / Schema Pro) | 1WebsiteNow JSON-LD |
|---|---|
Generic block per page; one-size-fits-all | Per-page-template blocks designed for the actual content type |
Conflicts with hand-written or theme-injected tags | Audited against existing tags; conflicts removed before deploy |
Drifts out of sync with the DOM as content changes | Built from the same source data as the visible DOM (no drift by construction) |
Ships every type the plugin supports, regardless of fit | Ships only the types the page actually qualifies for |
Validated only on plugin demo pages | Validated in Google Rich Results Test + schema.org validator before deploy |
No `@id` relationships — each block is an island | `@id` references link Organization → Service → Person → Article cleanly |
No GBP alignment | On-site LocalBusiness kept in sync with GBP fields; both updated together |
