No Service schema on a service page
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 Is This Important
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
Offerprovides pricing information to search engines
Resolving this issue improves your SEO health score by ensuring service offerings are properly structured for maximum visibility.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing Service schema:
-
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
- URL patterns (
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for Service schema: The crawler verifies if any schema block has:
@typeset toService- Required properties:
name,description
-
Validate schema completeness: If Service schema is found, the crawler checks for:
providerproperty (linking to Organization schema)serviceTypepropertyareaServedpropertyoffersproperty (Offer schema nested inside)
-
Trigger conditions: The issue is flagged when:
- Service page detected but no Service schema found
- Service schema exists but
provideris missing - Service schema exists but
serviceTypeis missing
How To Fix
-
Identify service pages: Look for pages with:
- URL patterns (
/services/,/solutions/,/offerings/,/consulting/) - Page titles containing “service”, “solution”, “consulting”, “agency”
- Service descriptions and offerings
- URL patterns (
-
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": "XeoPix Digital", "url": "https://www.xeopix.com" }, "areaServed": { "@type": "Country", "name": "United States" }, "url": "https://www.xeopix.com/services/seo-consulting", "offers": { "@type": "Offer", "price": "1500", "priceCurrency": "USD" } } -
Include recommended properties:
name: Service namedescription: Service descriptionprovider: Organization or Person providing the service (link to Organization schema)serviceType: Type of service (improves categorization signals)areaServed: Geographic area where service is availableoffers: Pricing information (nest Offer schema)url: URL of the service page
-
Combine with other schemas:
- Use with
Offerto provide pricing signals - Use with
LocalBusinessto indicate locally available service
- Use with
-
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 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": "XeoPix Digital",
"url": "https://www.xeopix.com"
},
"areaServed": {
"@type": "Country",
"name": "United States"
},
"url": "https://www.xeopix.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"
}
}Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-153-service-schema.test.js
Purpose
Validates that the crawler correctly validates Service JSON-LD schemas and does not report false positives when the schema is properly formed.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 153
- Issue Code:
service_schema_service - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Valid Service schema: Page has a
Serviceschema 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 Service schema with required properties is present.
Fail
No negative test cases are defined.
Validation
- Correct pass-through of valid Service 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 Service schema detection
- Covers empty HTML resilience
References
- Schema.org — Service — Schema.org
- Google — Service Structured Data (Merchant Centre) — Google Merchant Centre