Product and Service Schema
Session 5.6 · ~5 min read
Defining What You Sell
Organization schema tells Google who you are. Product and Service schema tell Google what you offer. Together, they complete your entity's profile: identity plus capability. Google uses this combination to match your entity with user queries that include specific product or service terms.
Product schema is the more powerful of the two because it enables rich results: star ratings, price, availability, and review snippets directly in search results. Service schema has fewer rich result features but still adds valuable entity attributes.
Product schema is one of the highest-CTR schema types because it triggers visible rich results (stars, price, availability) in search. Service schema adds entity context even when rich results do not trigger.
Product vs. Service: Which to Use
| Criterion | Product | Service |
|---|---|---|
| Best for | Physical goods, software, digital products | Professional services, consulting, maintenance |
| Rich results | Yes: price, availability, ratings, reviews | Limited: no dedicated rich result type |
| Key properties | offers, aggregateRating, review, brand | provider, areaServed, serviceType |
| Entity signal | Defines specific products entity sells | Defines service scope of entity |
| Placement | Individual product pages | Individual service pages |
Product Schema Properties
| Property | Type | Purpose | Triggers Rich Result |
|---|---|---|---|
name |
Text | Product name | Yes (title) |
description |
Text | Product description | Yes (snippet) |
image |
URL | Product photo | Yes (thumbnail) |
brand |
Brand/Organization | Links product to your entity | No (entity signal) |
offers |
Offer | Price, currency, availability | Yes (price display) |
aggregateRating |
AggregateRating | Average rating and review count | Yes (star rating) |
review |
Array of Review | Individual reviews | Yes (review snippet) |
sku |
Text | Stock keeping unit | No (entity specificity) |
Product Schema Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Centrifugal Pump CP-500",
"description": "Industrial centrifugal pump rated for 500 liters per minute. Suitable for mining dewatering and municipal water transfer.",
"image": "https://yoursite.com/images/products/cp-500.jpg",
"sku": "CP-500",
"brand": {
"@type": "Organization",
"@id": "https://yoursite.com/#organization",
"name": "PT Arsindo Perkasa"
},
"offers": {
"@type": "Offer",
"price": "45000000",
"priceCurrency": "IDR",
"availability": "https://schema.org/InStock",
"url": "https://yoursite.com/products/cp-500/"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "23"
}
}
</script>
Service Schema Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Pump System Design and Installation",
"description": "End-to-end pump system design, procurement, installation, and commissioning for industrial and municipal clients.",
"provider": {
"@type": "Organization",
"@id": "https://yoursite.com/#organization",
"name": "PT Arsindo Perkasa"
},
"serviceType": "Industrial Pump Installation",
"areaServed": {
"@type": "Country",
"name": "Indonesia"
}
}
</script>
How Products and Services Connect to Your Entity
@id: /#organization"] -->|makesOffer| P1["Product: CP-500
(brand → Organization)"] Org -->|makesOffer| P2["Product: SP-200
(brand → Organization)"] Org -->|hasOfferCatalog| S1["Service: System Design
(provider → Organization)"] Org -->|hasOfferCatalog| S2["Service: Maintenance
(provider → Organization)"] P1 --> SR["Search Results:
Price, Rating, Availability"] P2 --> SR S1 --> EE["Entity Scope:
Google knows what you do"] S2 --> EE
The brand property in Product schema and the provider property in Service schema create the link back to your Organization entity. Use the @id pattern from Session 5.5 to ensure Google connects these schemas to your main entity declaration.
AggregateRating Guidelines
If you include aggregateRating, the ratings must be real. Google's policy prohibits self-generated or fabricated ratings. The rating data should come from actual customer reviews collected on your site or synced from a third-party review platform. Fake ratings can result in manual actions (penalties) from Google.
If you do not have reviews yet, omit the aggregateRating property entirely. An honest Product schema without ratings is better than a dishonest one with fabricated ratings.
Further Reading
- Product Structured Data - Google Search Central's guide to Product schema and rich results eligibility.
- Product - Schema.org Type - Full property list for Product in the Schema.org vocabulary.
- Service - Schema.org Type - Full property list for Service in the Schema.org vocabulary.
- Structured Data General Guidelines - Google's policies on structured data, including rating authenticity requirements.
Assignment
- Choose your most important product or service.
- If it is a product: write Product JSON-LD including name, description, image, brand (linked to your Organization @id), offers (price, currency, availability), and sku.
- If it is a service: write Service JSON-LD including name, description, provider (linked to your Organization @id), serviceType, and areaServed.
- Only include aggregateRating if you have real review data. If you do, add the ratingValue and reviewCount.
- Validate the block and confirm the @id reference to your Organization resolves correctly.