Skip to content
Browse all guides

Issue #153 · important

Pages describing a service offering are missing Service schema.

What is this issue?

Pages describing a service offering are missing Service schema. Without it, search engines cannot identify and surface the page's service details in rich results or AI-generated overviews, reducing discoverability for service-based businesses.

Without Service schema:

  • Search engines can't identify your service offerings
  • Rich snippets showing service details won't display
  • AI search engines can't understand what services you provide
  • Service pages won't be eligible for AI Overview citations
  • Entity association between service and organization is weakened

A proper Service schema should include: @type (Service), name, description, provider, and optionally serviceType, areaServed, offers, url.

Why does it matter?

Service schema is important for service-based businesses:

  • AI Overview citations: Increases eligibility for AI Overview citations for service-related queries
  • Rich snippets: Enables service details to appear in search results
  • Entity association: Strengthens the association between the service and the providing organization
  • AI search readiness: AI engines use Service schema to understand and recommend services
  • Service discoverability: Helps search engines properly categorize and surface your services
  • Pricing signals: Combining with Offer provides pricing information to search engines

Resolving this issue improves your SEO health score by ensuring service offerings are properly structured for maximum visibility.

How to fix it

  1. Identify service pages: Look for pages with:

    • URL patterns (/services/, /solutions/, /offerings/, /consulting/)
    • Page titles containing "service", "solution", "consulting", "agency"
    • Service descriptions and offerings
  2. Add Service JSON-LD structured data to the page's <head> or before </body>:

    {
      "@context": "https://schema.org",
      "@type": "Service",
      "name": "SEO Consulting",
      "description": "Professional SEO consulting services to improve organic search visibility for B2B and e-commerce businesses.",
      "serviceType": "SEO Consulting",
      "provider": {
        "@type": "Organization",
        "name": "PixyScan Digital",
        "url": "https://www.pixyscan.com"
      },
      "areaServed": {
        "@type": "Country",
        "name": "United States"
      },
      "url": "https://www.pixyscan.com/services/seo-consulting",
      "offers": {
        "@type": "Offer",
        "price": "1500",
        "priceCurrency": "USD"
      }
    }
    
  3. Include recommended properties:

    • name: Service name
    • description: Service description
    • provider: Organization or Person providing the service (link to Organization schema)
    • serviceType: Type of service (improves categorization signals)
    • areaServed: Geographic area where service is available
    • offers: Pricing information (nest Offer schema)
    • url: URL of the service page
  4. Combine with other schemas:

    • Use with Offer to provide pricing signals
    • Use with LocalBusiness to indicate locally available service
  5. Validate with Google's Rich Results Test

Examples

Example 1: Missing Service Schema on Service Page

Problematic state:

<!-- Service page without Service schema -->
<html>
  <head>
    <title>SEO Consulting Services</title>
  </head>
  <body>
    <h1>SEO Consulting Services</h1>
    <p>
      Professional SEO consulting services to improve organic search visibility.
    </p>
    <p><strong>Area Served:</strong> United States</p>
    <p><strong>Price:</strong> $1,500/month</p>
  </body>
</html>

Corrected state:

<!-- Service page with Service schema -->
<html>
  <head>
    <title>SEO Consulting Services</title>
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Service",
        "name": "SEO Consulting",
        "description": "Professional SEO consulting services to improve organic search visibility for B2B and e-commerce businesses.",
        "serviceType": "SEO Consulting",
        "provider": {
          "@type": "Organization",
          "name": "PixyScan Digital",
          "url": "https://www.pixyscan.com"
        },
        "areaServed": {
          "@type": "Country",
          "name": "United States"
        },
        "url": "https://www.pixyscan.com/services/seo-consulting",
        "offers": {
          "@type": "Offer",
          "price": "1500",
          "priceCurrency": "USD"
        }
      }
    </script>
  </head>
  <body>
    <h1>SEO Consulting Services</h1>
    <p>
      Professional SEO consulting services to improve organic search visibility.
    </p>
    <p><strong>Area Served:</strong> United States</p>
    <p><strong>Price:</strong> $1,500/month</p>
  </body>
</html>

Example 2: Service Schema with LocalBusiness

Corrected state for local service:

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Plumbing Services",
  "description": "24/7 emergency plumbing services for residential and commercial properties.",
  "provider": {
    "@type": "LocalBusiness",
    "name": "Fast Plumbing Co.",
    "telephone": "+1-555-123-4567"
  },
  "areaServed": {
    "@type": "City",
    "name": "Austin, TX"
  },
  "serviceType": "Emergency Plumbing"
}

Example 3: Incomplete Service Schema

Problematic state:

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Web Design"
}

Missing required properties: description, provider

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Web Design",
  "description": "Custom website design and development services.",
  "provider": {
    "@type": "Organization",
    "name": "Design Studio"
  }
}

How PixyScan detects this

PixyScan follows these logical steps to detect missing Service schema:

  1. Detect service pages: The crawler identifies pages with:

    • URL patterns (/services/, /solutions/, /offerings/, /consulting/)
    • Page titles containing "service", "solution", "consulting", "agency"
    • Service descriptions and offerings
  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

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

    • @type set to Service
    • Required properties: name, description
  4. Validate schema completeness: If Service schema is found, the crawler checks for:

    • provider property (linking to Organization schema)
    • serviceType property
    • areaServed property
    • offers property (Offer schema nested inside)
  5. Trigger conditions: The issue is flagged when:

    • Service page detected but no Service schema found
    • Service schema exists but provider is missing
    • Service schema exists but serviceType is missing

References