---
title: "Service Schema"
description: "Add Schema.org Service structured data to your Sanity-powered site with sanity-plugin-seofields. Mark up consulting, agency, and SaaS services with provider, area served, and offers."
canonical: https://sanity-plugin-seofields.thehardik.in/docs/schema-org/service
---

# Service

The Service schema type describes an intangible offering — consulting, agency work, SaaS subscriptions, financial services, professional support. It helps search engines understand what you sell when there is no physical product to describe.

## About Service

Service is the right choice for any non-physical commercial offering. The provider field connects the service back to your  Organization  , while areaServed defines geographic targeting. Attach pricing through the  Offer  type — Google may surface starting prices in service rich results.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes | The name of the service. |
| `serviceType` | string | No | Type / category of service, e.g. "SEO Consulting", "Web Design". |
| `description` | string | No | A description of what the service offers. |
| `url` | string | No | URL of the service page. |
| `provider.name` | string | No | The name of the organization that provides the service. |
| `provider.url` | string | No | The URL of the organization that provides the service. |
| `areaServed` | array of strings | No | Geographic area(s) served by this service. |
| `hasOfferCatalog.name` | string | No | The name of the offer catalog for this service. |
| `hasOfferCatalog.itemListElement[].name` | string | No | The name of an individual offer item in the catalog. |

## Plugin Registration

```typescript
import { defineConfig } from 'sanity'
import { schemaOrgServicePlugin } from 'sanity-plugin-seofields/schema'

export default defineConfig({
  plugins: [
    schemaOrgServicePlugin(),
  ],
})
```

## Schema Usage

Add the `schemaOrgService` field to any document schema:

```typescript
import { defineField, defineType } from 'sanity'

export default defineType({
  name: 'service',
  title: 'Service',
  type: 'document',
  fields: [
    defineField({
      name: 'schemaOrgService',
      title: 'Service Schema',
      type: 'schemaOrgService',
    }),
  ],
})
```

## GROQ Query

```javascript
*[_type == "service"][0]{
  schemaOrgService {
    name,
    serviceType,
    description,
    url,
    provider {
      name,
      url
    },
    areaServed,
    hasOfferCatalog {
      name,
      itemListElement[] {
        name
      }
    }
  }
}
```

## Next.js Component

```tsx
import { ServiceSchema } from 'sanity-plugin-seofields/schema/next'

export default function Page({ data }) {
  return <ServiceSchema data={data.schemaOrgService} />
}
```

## JSON-LD Output

```json
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Technical SEO Audit",
  "serviceType": "SEO Consulting",
  "description": "Comprehensive technical audit covering crawlability, Core Web Vitals, structured data, and information architecture.",
  "url": "https://example.com/services/seo-audit",
  "provider": {
    "@type": "Organization",
    "name": "Acme Digital",
    "url": "https://acmedigital.example.com"
  },
  "areaServed": ["United States", "Canada", "United Kingdom"],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "SEO Audit Packages",
    "itemListElement": [
      {
        "@type": "Offer",
        "name": "Standard Audit"
      },
      {
        "@type": "Offer",
        "name": "Enterprise Audit"
      }
    ]
  }
}
```
