Skip to content
Browse all guides

Issue #236 · important

Issue 236

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 does it matter?

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 to fix it

  1. Identify the correct WebPage subtype for each page:

    Page TypeRecommended Schema Type
    About UsAboutPage
    ContactContactPage
    FAQFAQPage
    Search ResultsSearchResultsPage
    User ProfileProfilePage
    CheckoutCheckoutPage
    Generic pageWebPage
  2. 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"
          }
        ]
      }
    }
    
  3. Include recommended properties:

    • name: Page title
    • url: Canonical URL of the page
    • description: Page description
    • isPartOf: Link to parent WebSite entity
    • breadcrumb: BreadcrumbList for pages with navigation hierarchy
  4. Use the most specific subtype that matches your page (don't use generic WebPage if a subtype exists)

  5. Validate with Google's Rich Results Test

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"
}

How PixyScan detects this

PixyScan follows these logical steps to detect missing WebPage schema:

  1. Parse all crawled pages: The crawler examines all pages in the crawl

  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on each page

  3. Check for WebPage schema: The crawler verifies if any schema block has:

    • @type set to WebPage or a recognized subtype (AboutPage, ContactPage, FAQPage, SearchResultsPage, ProfilePage, CheckoutPage)
    • Required properties: name, url
  4. Validate schema completeness: If WebPage schema is found, the crawler checks for:

    • isPartOf property linking to parent WebSite entity
    • breadcrumb property (for pages with navigation hierarchy)
    • Correct subtype being used for the page type
  5. Trigger conditions: The issue is flagged when:

    • Page doesn't have WebPage schema
    • WebPage schema exists but is using generic WebPage when a more specific subtype should be used

References