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
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 to fix it
-
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": "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" } } -
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
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:
-
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