Service Schema Missing
Issue No: 153
Category: Structured Data & Rich Results
Issue type: Suggestion
Priority: STANDARD
Description
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.
How do we capture it
- Detect pages likely to be service pages: URLs matching patterns like
/services/,/solutions/,/offerings/; or page titles containing words like "service", "solution", "consulting", "agency" - Check JSON-LD for
"@type": "Service" - If service-page pattern detected but
Serviceschema absent → trigger suggestion
What to store
StructuredDataAudit record with schemaType = Service, issueNumber = 153, plus StructuredDataField rows:
| Field | Type | Comment |
|---|---|---|
has_name | boolean | name property present |
has_description | boolean | description property present |
has_provider | boolean | provider (Organisation/Person) linked |
has_service_type | boolean | serviceType property present |
has_area_served | boolean | areaServed property present |
has_offer | boolean | offers (Offer schema) nested inside Service |
has_url | boolean | url property present |
Core audit fields used: isPresent, hasName, hasDescription, rawJson
Condition for trigger
-
Trigger Rule 1: Service schema absent on service page
- Target Field:
isPresent - Evaluation Logic:
isPresent = falseAND URL or page title indicates a service/offering page - Severity: STANDARD
- Diagnostic Message: "Service page detected but no Service schema found. Add Service schema to improve eligibility for rich results and AI overviews."
- Target Field:
-
Trigger Rule 2: Provider not linked
- Target Field:
has_provider - Evaluation Logic:
has_provider = false - Severity: STANDARD
- Diagnostic Message: "Service schema found but
provideris missing. Link to your Organisation schema to establish entity association."
- Target Field:
-
Trigger Rule 3: Service type missing
- Target Field:
has_service_type - Evaluation Logic:
has_service_type = false - Severity: STANDARD
- Diagnostic Message: "
serviceTypeis missing from Service schema. Specifying the service type improves categorisation signals."
- Target Field:
Sources
Long description
Service schema communicates to search engines that a page describes a specific service offering by a business or individual. It enables search engines and AI systems (Google AI Overviews, Bing Copilot) to understand what the service is, who provides it, where it is available, and at what price — without needing to parse unstructured page content.
Key benefits:
- Increased eligibility for AI Overview citations for service-related queries
- Stronger entity association between the service and the providing Organisation
- Potential eligibility for rich snippets showing service details in SERPs
Service can be combined with Offer (nested in offers) to provide pricing signals, and with LocalBusiness to indicate a locally available service.
Full example:
{
"@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",
"priceCurrency": "USD",
"price": "1500",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "1500",
"priceCurrency": "USD",
"unitText": "per month"
}
}
}
Key properties:
| Property | Required | Description |
|---|---|---|
name | Yes | Name of the service |
description | Yes | Description of the service |
serviceType | Recommended | Category of service (free text) |
provider | Recommended | Organization or Person offering the service |
areaServed | Recommended | Geographic coverage (Country, City, State) |
offers | Optional | Nested Offer schema for pricing |
url | Recommended | Canonical URL of the service page |
How to Fix
- Identify all service, solution, or offering pages on the site
- Add
ServiceJSON-LD schema to each page - At minimum include:
name,description,provider(linking to Organisation schema), andurl - Add
serviceTypeandareaServedfor stronger categorisation signals - Optionally nest
Offerschema insideoffersproperty if pricing is public - Validate with Google Rich Results Test and Schema Markup Validator
- Monitor Google Search Console Enhancements for any new rich result eligibility