Entities, Eligibility, and Evidence
Structured Data & Entity Markup Standard
Use JSON-LD to describe your brand, pages, and products in a way that people, crawlers, and LLMs can trust. This standard covers entity-first modeling, global markup, page-type patterns, rich result eligibility, QA, and governance. It follows Google Search Central, Schema.org, and accessibility guidance.
Objective and scope
Define one JSON-LD standard that describes your brand and every key page type. The goal is clarity and consistency. Your markup should match visible content and comply with Google’s structured data overview and structured data policies. Use the visible page as the source of truth. If it is not on the page, do not claim it in JSON-LD.
Use JSON-LD in the document head or body. Avoid Microdata unless you have a legacy reason. Google recommends JSON-LD in the intro.
Principles
Entity-first modeling
Describe real world things: your Organization, your Product, a specific Article, a specific Video. Link them with @id and sameAs. Keep names and identifiers stable. See Schema.org types.
Match the page
Only claim what users can verify. If the page does not show a price, do not add a price. Google’s policy requires visible parity.
Keep it crawlable
Links inside your content must be normal anchors. Google’s note on crawlable links explains why. Structured data helps, but links drive discovery.
Global markup: Organization, Website, Breadcrumb
Add global entities site-wide. They help connect your pages and improve consistency.
Organization
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"Organization",
"@id":"https://accordcontent.com/#org",
"name":"Accord Content",
"url":"https://accordcontent.com/",
"logo":{"@type":"ImageObject","url":"https://accordcontent.com/og/logo.png"},
"sameAs":[
"https://www.linkedin.com/company/accordcontent/",
"https://twitter.com/accordcontent"
],
"foundingDate":"2022-01-01",
"contactPoint":[{
"@type":"ContactPoint","contactType":"sales","email":"hello@accordcontent.com"
}]
}
</script>Website with SearchAction
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"WebSite",
"@id":"https://accordcontent.com/#website",
"url":"https://accordcontent.com/",
"name":"Accord Content",
"publisher":{"@id":"https://accordcontent.com/#org"},
"potentialAction":{
"@type":"SearchAction",
"target":"https://accordcontent.com/search?q={query}",
"query-input":"required name=query"
}
}
</script>BreadcrumbList
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"BreadcrumbList",
"@id":"https://accordcontent.com/resources/structured-data-entity-markup-standard/#breadcrumb",
"itemListElement":[
{"@type":"ListItem","position":1,"name":"Home","item":"https://accordcontent.com/"},
{"@type":"ListItem","position":2,"name":"Resources","item":"https://accordcontent.com/resources/"},
{"@type":"ListItem","position":3,"name":"Structured data & entity markup standard","item":"https://accordcontent.com/resources/structured-data-entity-markup-standard/"}
]
}
</script>See Google’s docs for Logo, Sitelinks search box, and Breadcrumb.
Entity graph and @id strategy
Use stable identifiers to stitch entities together. Think of @id as a bookmark URL with a hash. It does not need to resolve on the web, but many teams use a real page URL plus a hash for clarity. Reference the same @id across pages.
| Entity | @id pattern | Notes |
|---|---|---|
| Organization | https://domain.com/#org | Referenced by WebSite and Product |
| WebSite | https://domain.com/#website | Global site entity |
| Product or SoftwareApplication | https://domain.com/product/#saas | Attach offers and reviews |
| Article | page canonical + #article | Link to Organization via publisher |
| FAQPage | page canonical + #faq | One FAQ entity per page |
Google recommends consistent identification and clean canonicals in the duplicate URL consolidation note.
Page-type patterns
Use the smallest set of page types that cover your site. The following patterns are battle tested for B2B and SaaS. Copy and adapt, but always reflect the visible page.
Article or BlogPosting
Use Article for resources and BlogPosting for blog posts. Add author, datePublished, image, and about entities.
FAQPage
Visible Q and A pairs only. No hidden content. Each Question must be present in the page HTML.
HowTo
Step by step instructions with visible steps on the page. Add totalTime and tool when relevant.
Article example
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"Article",
"@id":"https://accordcontent.com/resources/on-page-seo-checklist/#article",
"headline":"On-Page SEO Checklist",
"description":"25 must-do optimizations for B2B sites.",
"mainEntityOfPage":{"@type":"WebPage","@id":"https://accordcontent.com/resources/on-page-seo-checklist/"},
"image":"https://accordcontent.com/og/onpage.png",
"datePublished":"2025-07-15",
"dateModified":"2025-08-01",
"publisher":{"@id":"https://accordcontent.com/#org"},
"author":{"@type":"Organization","name":"Accord Content"},
"about":[{"@type":"Thing","name":"On-page SEO"},{"@type":"Thing","name":"B2B content"}]
}
</script>See Google’s Article docs.
FAQPage example
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"FAQPage",
"@id":"https://accordcontent.com/resources/on-page-seo-checklist/#faq",
"mainEntity":[
{"@type":"Question","name":"What is on-page SEO","acceptedAnswer":{"@type":"Answer","text":"It is the practice of optimizing content and HTML elements to improve search visibility and user experience."}},
{"@type":"Question","name":"Should I use schema","acceptedAnswer":{"@type":"Answer","text":"Use JSON-LD that matches visible content and Google’s policies."}}
]
}
</script>Eligibility and behavior are explained in Google’s FAQ docs.
HowTo example
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"HowTo",
"@id":"https://accordcontent.com/resources/how-to-add-schema/#howto",
"name":"How to add JSON-LD to a page",
"totalTime":"PT10M",
"step":[
{"@type":"HowToStep","name":"Open the HTML","text":"Locate the head tag."},
{"@type":"HowToStep","name":"Paste JSON-LD","text":"Insert a script type application/ld+json block."},
{"@type":"HowToStep","name":"Validate","text":"Use Rich Results Test and Search Console."}
]
}
</script>See HowTo docs and note eligibility requirements.
SoftwareApplication or Product for SaaS
For SaaS, SoftwareApplication often fits better than Product. If you show plans and prices, you can include offers. Only include ratings if they are shown on the page and comply with policy.
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"SoftwareApplication",
"@id":"https://accordcontent.com/product/#saas",
"name":"Accord Content Planner",
"applicationCategory":"BusinessApplication",
"operatingSystem":"Web",
"url":"https://accordcontent.com/product/",
"publisher":{"@id":"https://accordcontent.com/#org"},
"offers":{
"@type":"Offer",
"url":"https://accordcontent.com/pricing/",
"priceCurrency":"USD",
"price":"49.00",
"availability":"https://schema.org/InStock"
}
}
</script>See SoftwareApplication at Schema.org and Google’s Product docs for price and rating rules.
VideoObject
When you embed a hosted video, include VideoObject with name, description, thumbnailUrl, uploadDate, and contentUrl or embedUrl.
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"VideoObject",
"@id":"https://accordcontent.com/demo/#video",
"name":"3 minute walkthrough",
"description":"Quick overview of Accord Content Planner.",
"thumbnailUrl":["https://accordcontent.com/og/demo-thumb.jpg"],
"uploadDate":"2025-06-20",
"embedUrl":"https://player.example.com/embed/abc123",
"publisher":{"@id":"https://accordcontent.com/#org"}
}
</script>See Google’s Video docs. Provide a static thumbnail that is crawlable.
Review and Rating
Use ratings only when they are sourced and visible to users. Self-serving reviews are restricted. See policy notes in Review snippet.
Event and Webinar
For live sessions, use Event with eventStatus, eventAttendanceMode, startDate, endDate, and url. See Event docs.
Rich result eligibility
Structured data does not guarantee a special result. It makes a page eligible. Google decides based on many signals. Keep content helpful, fast, and trustworthy. See the intro and type specific docs.
Common wins
- Breadcrumbs
- Article enhanced display
- FAQ (when policy allows)
- Video enhancements
Requirements to respect
- Visible parity with claims
- Policy compliance for reviews
- No misleading or irrelevant markup
Performance matters
Slow or unstable pages reduce visibility. Follow Core Web Vitals at web.dev.
Evidence and citations
Back claims with visible citations and stable sources. Your JSON-LD can reference the same pieces through citation or isBasedOn where relevant.
What counts as evidence
- Primary research and vendor docs
- Government data and reputable statistics
- Well described methodology
Examples: Search Console docs, BLS, U.S. Census, Statista.
How to cite
Link sources in the copy. Keep the link text descriptive. LLMs and readers rely on nearby context. NN/g explains link clarity at NN/g.
QA and validation workflow
Create a repeatable QA matrix for every page type. Validate structured data, check parity, and confirm that links are crawlable.
| Page type | Validator | Parity check | Search Console enhancements | Status |
|---|---|---|---|---|
| Article | Rich Results Test | Author, date, images present | Article | Pass |
| FAQ | Rich Results Test | Q and A visible, no hidden toggles | FAQ | Pass |
| SoftwareApplication | Schema Markup Validator | Offers match visible plans | Product | Review |
| Video | Rich Results Test | Thumbnail and title visible | Video | Pass |
Tools: Rich Results Test, Schema Markup Validator, Search Console.
Release checklist
- Canonical, Open Graph, and JSON-LD agree on URL and image
- Structured data references existing @id values
- No 404s in sameAs or publisher.logo
- All anchors are normal links; no JS-only navigation
- Core Web Vitals within targets
Governance, versioning, and rollout
Ownership
- SEO owns schema types and IDs
- Engineering owns injection and testing
- Legal reviews claims and reviews policy
Versioning
- Store JSON-LD templates in version control
- Use feature flags for rollout
- Document changes in a CHANGELOG
Rollout plan
- Start with global entities then high traffic pages
- Monitor enhancements in Search Console
- Expand to remaining templates
Do not ship review markup until policy and parity are locked. See Google’s review snippet policy.
CMS integration patterns
WordPress
- Generate JSON-LD in theme templates
- Expose fields for author, date, FAQ entries, product offers
- Avoid duplicate plugins that inject competing markup
Headless frameworks
- Keep a shared schema utility with ID constants
- Render JSON-LD inline, not via client-only hydration
- Pre-render pages for crawlability
Google’s JavaScript SEO notes explain why server rendering helps.
Measurement with Search Console and GA4
Track appearance types and CTR changes. Use GA4 events to link rich features to behavior.
Search Console
- Performance report filtered by Search appearance
- Enhancements report for Article, FAQ, Video, Breadcrumb
- Monitor indexing and coverage
Docs at Search Console performance.
GA4 events
gtag('event','rich_result_view',{
type:'article',
location:'search',
page:'/resources/on-page-seo-checklist/'
});Event setup in GA4 events and conversions in GA4 conversions.
What to watch
- CTR change for articles with enhanced display
- FAQ impressions vs clicks when enabled
- Video impressions and watch time on page
Implementation checklist
- Publish Organization and WebSite JSON-LD across the site
- Adopt a stable @id pattern and keep a list of constants
- Choose page-type schemas and add only what the page shows
- Add BreadcrumbList where navigation exists
- Validate with Rich Results Test and Schema Markup Validator
- Ship to a small set of pages, monitor Search Console enhancements
- Roll out to all templates, then review quarterly
- Keep Core Web Vitals within targets on pages with heavy media
- Document policy for ratings, prices, and event status
- Back claims with visible citations and reputable sources
FAQ
Do I need both Article and BlogPosting
Pick one that fits your content model. Many teams standardize on Article for simplicity. The important part is consistency and parity with the page.
Can JSON-LD live in a tag manager
Prefer rendering in HTML so crawlers see it with the page. Tag managers can work, but you must avoid client-only injection that appears late.
Should I add Person authors
If a named person is shown on the page, you can use Person. If content is published by the company, Organization is fine. Keep attribution truthful.
What about duplicate markup from plugins
Use one source of truth. Disable overlapping features so you do not generate conflicting entities or IDs.
