No WebPage schema
What Is This Issue
The page is missing a WebPage schema block (or appropriate subtype), reducing the ability of search engines to classify the page’s content type and intent.
Without WebPage schema:
- Search engines can’t properly classify the page’s purpose
- Page content type and intent are unclear to search engines
- Rich results specific to page types won’t be eligible
- AI search engines can’t understand the page’s role
- Breadcrumb and site structure context is weakened
A proper WebPage schema should include: @type (WebPage or appropriate subtype like AboutPage, ContactPage, etc.), name, url, description, and optionally breadcrumb, isPartOf.
Why Is This Important
WebPage schema is important for page classification and context:
- Page classification: Helps search engines understand the page’s purpose and content type
- Rich results eligibility: Enables rich results specific to page types (e.g., contact page rich results)
- AI search context: AI engines use WebPage schema to understand page intent
- Site structure: Links pages to the parent WebSite entity via
isPartOf - Breadcrumb context: Embeds breadcrumb navigation context via
breadcrumb - User experience: Helps search engines serve the right page for the right query
Resolving this issue improves your SEO health score by ensuring pages are properly classified and contextualized.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing WebPage schema:
-
Parse all crawled pages: The crawler examines all pages in the crawl
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on each page
-
Check for WebPage schema: The crawler verifies if any schema block has:
@typeset toWebPageor a recognized subtype (AboutPage,ContactPage,FAQPage,SearchResultsPage,ProfilePage,CheckoutPage)- Required properties:
name,url
-
Validate schema completeness: If WebPage schema is found, the crawler checks for:
isPartOfproperty linking to parent WebSite entitybreadcrumbproperty (for pages with navigation hierarchy)- Correct subtype being used for the page type
-
Trigger conditions: The issue is flagged when:
- Page doesn’t have WebPage schema
- WebPage schema exists but is using generic
WebPagewhen a more specific subtype should be used
How To Fix
-
Identify the correct WebPage subtype for each page:
Page Type Recommended Schema Type About Us AboutPageContact ContactPageFAQ FAQPageSearch Results SearchResultsPageUser Profile ProfilePageCheckout CheckoutPageGeneric page WebPage -
Add WebPage JSON-LD structured data to each page’s
<head>or before</body>:{ "@context": "https://schema.org", "@type": "AboutPage", "name": "About Us — Example Corp", "url": "https://www.example.com/about", "description": "Learn about our mission and team.", "isPartOf": { "@type": "WebSite", "url": "https://www.example.com" }, "breadcrumb": { "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" }, { "@type": "ListItem", "position": 2, "name": "About Us", "item": "https://www.example.com/about" } ] } } -
Include recommended properties:
name: Page titleurl: Canonical URL of the pagedescription: Page descriptionisPartOf: Link to parent WebSite entitybreadcrumb: BreadcrumbList for pages with navigation hierarchy
-
Use the most specific subtype that matches your page (don’t use generic WebPage if a subtype exists)
-
Validate with Google’s Rich Results Test
What We Store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Array of required fields that are missing |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed
Examples
Example 1: Missing WebPage Schema on About Page
Problematic state:
<!-- About page without WebPage schema -->
<html>
<head>
<title>About Us - Example Corp</title>
</head>
<body>
<h1>About Us</h1>
<p>Learn about our mission and team.</p>
</body>
</html>Corrected state:
<!-- About page with WebPage schema -->
<html>
<head>
<title>About Us - Example Corp</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "AboutPage",
"name": "About Us — Example Corp",
"url": "https://www.example.com/about",
"description": "Learn about our mission and team.",
"isPartOf": {
"@type": "WebSite",
"url": "https://www.example.com"
}
}
</script>
</head>
<body>
<h1>About Us</h1>
<p>Learn about our mission and team.</p>
</body>
</html>Example 2: WebPage Schema with Breadcrumbs
Corrected state with breadcrumbs:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"name": "Frequently Asked Questions",
"url": "https://www.example.com/faq",
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "FAQ",
"item": "https://www.example.com/faq"
}
]
}
}Example 3: Using Wrong WebPage Subtype
Problematic state (using generic WebPage for FAQ):
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "FAQ Page"
}Should use FAQPage subtype
Corrected state:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"name": "Frequently Asked Questions",
"url": "https://www.example.com/faq"
}Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-236-webpage-schema.test.js
Purpose
Validates that the crawler correctly validates WebPage JSON-LD schemas and does not report false positives when the schema is properly formed.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 236
- Issue Code:
webpage_schema_missing - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Valid WebPage schema: Page has a
WebPageschema withname— no issue reported.
Negative Test Cases
None — the test only validates that valid schemas pass.
Boundary Cases
None.
Edge Cases
- Empty HTML:
<html></html>— no crash.
Expected Outcome
Pass
Issue should not be reported when a valid WebPage schema with required properties is present.
Fail
No negative test cases are defined.
Validation
- Correct pass-through of valid WebPage schemas
- Graceful handling of empty HTML
Related Production Files
xeopix-crawling-v2/toggleGroups/structuredDataRichResults.jsxeopix-crawling-v2/issueCodes.jsxeopix-crawling-v2/utils/context.jsxeopix-crawling-v2/utils/issues.jsxeopix-crawling-v2/utils/schema.js
Coverage Summary
- Covers valid WebPage schema detection
- Covers empty HTML resilience
References
- Schema.org — WebPage — Schema.org
- Schema.org — WebPage subtypes — Schema.org
- Google — Intro to Structured Data — Google Search Central