Skip to content
Issue docs

No Service schema on a service page

Importantservice_schema_serviceIssue 104

What is this issue?

This issue reports a Service schema block your page already declares that is missing name — the only property this check requires. It does not report a page that has no Service schema at all.

What this issue is not: it does not guess that a page under /services/ or /consulting/, or one titled around a service offering, ought to declare Service schema. A page with none declared is never reported. description, provider, serviceType, areaServed and nested offers are recommended enrichments, not checked by this issue.

Why it matters

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

If this issue was raised, your page already declares a Service block with no name — that is the only property this check requires; everything else below is recommended enrichment PixyScan does not verify. The steps below are for a page that declares no Service schema yet: worthwhile to add, and never reported as a defect while absent.

  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: No Schema Declared — Not This Issue

<!-- Service page with full copy, but no 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>

Nothing is reported, however clearly the page describes a service.

Example 1b: The Same Page, With Service Declared (passes)

{
  "@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" },
  "offers": { "@type": "Offer", "price": "1500", "priceCurrency": "USD" }
}

name alone is what this check requires — everything else here is recommended enrichment (see How to fix it).

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: Service Schema Missing name (fails)

Problematic state:

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

Reported: name missing. A missing description or provider is not part of this finding — they are recommended, not checked.

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

  1. Read the declared structured data: every JSON-LD block is parsed, and @graph wrappers are flattened.

  2. Select declared Service entities: any schema block whose @type is Service. A page that declares none is not examined — this check does not infer a service page from its URL (/services/, /consulting/) or page title.

  3. Check the required property: a declared Service must have a name.

  4. This is reported when: the page declares a Service schema missing name. A page describing a service with no Service schema at all is never reported. description, provider, serviceType, areaServed and offers are recommended but are not checked at all today.

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? Reserved for future use — the crawler always writes null here today; no check currently populates it

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

Further reading