Should you mark up your services and products?

Mark up products you sell on the page with Product and Offer: Google can show price, stock and ratings for them. Service markup is optional. Google has no rich result for it, but it labels what you do and where for any tool that reads the page. Whatever the type, markup must honestly match the page.

The short version

  • Products you sell online: use Product with Offer. Google can show price and availability.
  • Products you review or describe but don’t sell: Product markup can still qualify for product snippets.
  • Services: Service markup is valid schema.org, but Google shows no special result for it.
  • One service or product per page, with markup that matches that page.
  • Don’t invent prices or ratings to fill properties.

How do I mark up products?

Google’s product overview describes two kinds of result:

  • Merchant listings are for pages “where customers can purchase products from you.” They support more detail, such as shipping, returns and sizes.
  • Product snippets are for product pages where people can’t buy directly, such as a review or description page.

The two overlap: if you add what merchant listings need, the page is also eligible for product snippets. Google’s product snippet guide requires a name plus at least one of review, aggregateRating or offers.

For a small shop:

  1. Use your platform’s built-in markup first. WooCommerce, Shopify and most store platforms output Product markup for each product page. Check what’s already there with the Rich Results Test before adding anything.
  2. Make sure the basics are right: product name, image, price, currency and availability, matching what the page shows.
  3. Add a ratings block only if real customer reviews appear on that product page. See who can get review stars.
  4. Consider Google Merchant Center if you sell many products. Google says providing both structured data and a Merchant Center feed “maximizes your eligibility.”

If you’re still deciding on a platform, our answers on selling a few products online and WooCommerce or Shopify help.

How do I mark up services?

Schema.org’s Service type describes “a service provided by an organization.” The useful properties for a local business are:

  • serviceType: what the service is, in plain words.
  • provider: your business, ideally pointing at your LocalBusiness markup.
  • areaServed: the towns, counties or region you cover.
  • description: a short summary that matches the page.
  • offers: only if the page shows a real price or price range.

A short example for a service page, using E-3 Design’s details:

{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "Website care and maintenance",
  "provider": { "@type": "LocalBusiness", "name": "E-3 Design", "url": "https://e-3design.com/" },
  "areaServed": ["Somerset, PA", "Johnstown, PA", "Dayton, OH"],
  "description": "Monitoring, tested updates, daily backups and security alerts for small-business websites."
}

Put it on that service’s own page, not on the home page for every service at once. Our answer on service area pages covers how to describe several towns without thin pages.

Why bother if Google shows nothing for services?

Because Google isn’t the only reader. A Service block states plainly what you do and where, which helps any system that reads structured data understand the page. It costs little to add when your SEO plugin supports it. But keep expectations honest: Google’s AI optimization guide says structured data “isn’t required for generative AI search,” so a Service block is a tidy label, not a lever.

For products, the case is stronger. Price and availability in results help a shopper decide before they click.

What are the common mistakes?

  • Product markup on a service page just to try for stars or prices in results. Schema.org’s Product type is “any offered product or service,” so a service described as a Product isn’t invalid in itself. Google’s rules are a separate question: its product snippet guide supports pages that focus on a single specific product, and its general guidelines say markup must be “a true representation of the page content.” Prices, ratings or stock that the page doesn’t really show break that rule whatever type you use. For a typical service page, Service markup describes it more clearly.
  • Prices in the markup that the page doesn’t show, or that are out of date after a price change.
  • “In stock” in the markup when the page says sold out.
  • Every service on the home page as one big list of Service blocks.
  • Duplicate product markup from a theme and a plugin at once.

What if it isn’t working?

Test the page with the Rich Results Test. For products, it will show “Product snippets” or “Merchant listings” if eligible, with any errors. Google notes it may warn when you provide offers without reviews or ratings; that’s a warning, not an error. Service markup won’t appear as a rich result type there; check it with the Schema Markup Validator instead. See how to test your schema.

How much does it cost, and how long does it take?

The markup and Google’s testing tools are free. Store platforms usually handle product markup automatically; a paid plugin or developer time may cost money. A Service block takes a few minutes per page by hand, or less with a plugin.

How does E-3 handle this?

The aim is one clean set of markup per page, written from what the page visibly says. Schema work is part of our SEO and AI search service, and site changes are tested on a staging copy first.

Rather we handled schema for owners for you?

It’s part of what we do every week for small businesses, as part of seo and ai search. Start with a free check of your site and profile, or call and ask.

Ask E-3

Suggestions appear as you type. Use the up and down arrows to choose one, or press Enter to ask.

Get support