How to Create Services Schema Markup for Businesses

When you are developing a Schema Markup strategy for a business, there is often a Service (Schema.org/Service) offered that is core to the business. Most SEOs start by optimizing the business first, and you may have even used our Ultimate Guide for Local Business Schema Markup. Once that’s finished, you’re ready to tackle markup for Services.

Whether they’re home services, such as roofing, plumbing, contractor or lawn care, or professional services such as marketing, search engine optimization, or defense in a court of law, most companies offer some type of service. As such, it seems odd that Google’s structured data features do not include “Service”, but instead focus on product schema markup for rich results.

In this article we are going to show you how to create schema markup for Services, so that Google can explicitly understand what services are offered, to what area, and who is providing them. Service is our co-founder, Mark van Berkel’s favourite schema class, now we’ll explain why.

Tips for doing Services Schema Markup

Service is the broadest class to define a service offered by a business. The Professional Service class was commonly used in the past, but has since been deprecated by Schema.org in favour of the more general Service. As a result, we recommend using Service, or one of the more specific subclasses instead of Professional Service.

Within your schema markup, you can describe exactly what type of service you offer (additionalType), who is providing the service (provider), and the area where the Service is offered (areaServed). You can also define the output of the service (serviceOutput). For example, if you are optimizing a Mortgage broker site, the output of the Service is a mortgage. Or if the service is for a home builder, the output would be a custom-built home. 

These properties give you control over defining the services sold by the business so that Google and other search engines can accurately understand them and route appropriate traffic to the right pages.

Our favourite properties!

  • Use the provider property to define who is offering the Service. This is usually the Organization or Local Business that the Service page is for.
  • Use additionalType to define the service more explicitly. Use a Wikidata or Wikipedia link to define this. For example,  you would link to https://en.wikipedia.org/wiki/Plumbing if you were optimizing a Plumbing service.
  • Use areaServed to explicitly define where the Service is available. Use a Wikidata or Wikipedia link to define this.
  • Use serviceOutput to define what the outcome of the service is.

List of Service Properties

Creating schema markup for services can be challenging as there are so few required properties to guide us. Instead, we will need to decide what is important about the service being offered, and use the available properties to call that out in the markup.

So which properties should we use? A good place to start is by searching for properties that contain the word “service” in their name or description. Below is a list of properties we recommend you use. Your list could vary depending on what features you want to call out and what information is displayed on the web page. If you don’t have the content for one of the properties on your pagesuch as an imagethen consider adding it in the future.

  • name: The name of the item.
  • additionalType: An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. This is a great place to use Wikipedia.
  • areaServed: The geographic area where a service or offered item is provided. This is a great place to use Wikipedia.
  • availableChannel: A means of accessing the service which connects to a ServiceChannel data item. Creating a ServiceChannel allows you to leverage more touch point properties like servicePhone, servicePostalAddress, and serviceSmsNumber.
  • brand: The brand(s) associated with a product or service, or the brand(s) maintained by an organization or business person.
  • description: A description of the service.
  • image: An image of the service. This can be a URL or a fully described ImageObject.
  • logo: An associated logo. You may want to just leave this blank and refer to the Organization and its logo. 
  • offers: An offer to provide this item—for example, an offer to sell a product, rent the DVD of a movie, perform a service, or give away tickets to an event. Note that the associated Offer requires the availability and price of the item offered. If you’re worried about errors showing up in your markup, we recommend only using this property if you also have the required information on your web page.
  • potentialAction: Indicates a potential Action, which describes an idealized action in which this thing would play an ‘object’ role. For example: “book a demo” or “request a quote”.
  • provider: The service provider, service operator, or service performer. This is a great way to link to the primary organization offering the service. 
  • serviceOutput: The tangible thing generated by the service, e.g. a passport, permit, mortgage, etc.
  • serviceType: Another opportunity to further describe the service being provided. This can either be implemented with text, or by linking to Wikipedia.
  • subjectOf: Is there a CreativeWork (ie. Blog, Article, Video) that this service is the subject of? We recommend either using subjectOf to link your Service to the CreativeWork, or else linking the CreativeWork to the Service using the about property.
  • termsOfService: Human-readable terms of service documentation in the form of either text or a URL.
  • url: The URL of the page you are optimizing.

Creating Schema Markup for Services in Schema App

Every schema class has a list of properties that can be used to further define its features. Schema App gives you access to all the Schema.org/Service properties. You can use our recommended list above as a starting point to call out the information listed on your Service’s web page. When you login to Schema App, and go to your Schema App Editor, search for Service, and click Create.

You will be asked to provide the name of your service, and the URL. This is the URL where your schema markup will be deployed. Schema App will load all of the properties available for Services according to Schema.org. You’ll notice that Services don’t have any required properties since requirements are only applied to data items eligible for Google’s Rich Results. We recommend filling in the properties listed above, linking to existing data items, or creating new ones as required. Click Done. Your JSON-LD will be created.

Creating Service Markup in the Schema App Editor

Follow the Step by Step tutorial on how to add schema markup for Services illustrated using an example from Ckitchen.

Multi-Typing Service and Product

In some instances, you should consider multi-typing your data item as both a Service and a Product. This allows you to leverage all the properties granted to both types, and makes your data item eligible for the Product rich result in search.

Schema.org defines a Product as:

“Any offered product or service. For example: a pair of shoes; a concert ticket; the rental of a car; a haircut; or an episode of a TV show streamed online.”

So, it stands to reason that any service could also receive Product markup. However, it’s always best to use the schema.org type that defines your data item most specifically. You should consider multi-typing a data item as both a Product and a Service when:

  • It could benefit from leveraging Service properties like provider, and areaServed
  • It has an image, as required for the Product rich result
  • It has the price, aggregateRating or review information required for the Product rich result

To multi-type your data item:

  1. Create either a Service or Product data item
  2. Find the “Type” property listed under “Other fields” and click the “+” symbol
  3. Select the additional type

For more information about Product markup, see Google’s documentation on the Product feature.

JSON-LD Examples

Here is some sample JSON-LD for the Consulting Service from the training video.

Here is some sample JSON-LD for a Mortgage page.

<script type="application/ld+json">
{
	"@context": "http://schema.org",
	"@type": "Service",
	"serviceType": "Mortgages",
	"areaServed": [
		{
			"@type": "City",
			"name": "Toronto",
			"@id": "https://en.wikipedia.org/wiki/Toronto"
		},
		{
			"@type": "City",
			"name": "Aurora",
			"@id": "https://en.wikipedia.org/wiki/Aurora,_Ontario"
		},
		{
			"@type": "City",
			"name": "Oshawa",
			"@id": "https://en.wikipedia.org/wiki/Oshawa"
		}
	],
	"audience": "http://www.wikidata.org/entity/Q131524",
	"provider": {
		"@type": "Organization",
		"name": "Hanely Mortgage Group",
		"@id": "http://hanleymortgagegroup.com/"
	},
	"availableChannel": {
		"@type": "ServiceChannel",
		"serviceUrl": "http://hanleymortgagegroup.com",
		"servicePhone": {
			"@type": "ContactPoint",
			"telephone": "1-416-323-0535",
			"name": "Hanley Mortgage Group Sales Contact Point",
			"faxNumber": "1-416-323-0744",
			"description": "Sales phone number for Hanley Mortgage Group",
			"contactType": "sales",
			"availableLanguage": "https://en.wikipedia.org/wiki/English_language",
			"areaServed": [
				{
					"@id": "https://en.wikipedia.org/wiki/Toronto"
				},
				"https://en.wikipedia.org/wiki/King_City,_Ontario"
			],
			"@id": "http://hanleymortgagegroup.com/get-in-touch/#salesnumber"
		},
		"serviceLocation": "http://schemaapp.com/db/Marthas_Dare/Place_2",
		"name": "Hanley Mortgage Group Service Channel Phone Web Office",
		"description": "Contact Hanley Mortgage group by phone, web or office. ",
		"@id": "http://schemaapp.com/db/Marthas_Dare/ServiceChannel_2"
	},
	"description": "Why do major financial institutions make it so difficult for ‘non-traditional’ borrowers? After all, almost 16% of Canadians now work for themselves. And Statistics Canada data suggests that self-employed workers have a higher median net worth than salaried workers.",
	"image": [
		"http://hanley.wpengine.com/wp-content/uploads/2016/02/Entrepreneur.jpg",
		{
			"@type": "ImageObject",
			"width": "1698",
			"url": "http://hanley.wpengine.com/wp-content/uploads/2016/02/Entrepreneur.jpg",
			"height": "1131",
			"@id": "http://hanley.wpengine.com/wp-content/uploads/2016/02/Entrepreneur.jpg"
		}
	],
	"name": "Self Employed Mortgages",
	"serviceOutput": {
		"@type": "Product",
		"name": "Mortgage Loan",
		"@id": "https://en.wikipedia.org/wiki/Mortgage_loan"
	},
	"url": "http://hanleymortgagegroup.com/mortgage-services/self-employed/",
	"@id": "http://hanleymortgagegroup.com/mortgage-services/self-employed/"
}
</script>

Here is some sample JSON-LD for a multi-typed Service and Product.

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": [
        "Product",
        "Service"
    ],
    "image": "https://example.ca/haircut-photo/5a21be1.svg",
    "areaServed": "https://en.wikipedia.org/wiki/Akron,_Ohio",
    "name": "Master Stylist Haircut",
    "url": "http://example.ca/master-stylist-haircut",
    "description": "Haircut includes a thorough consultation with a Master Stylist.",
    "provider": {
        "@type": "LocalBusiness",
        "name": "The Hair Necesseties",
        "image": "http://example.ca/company-image.jpg",
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "123 Hair Today Gone Tomorrow St.",
            "postalCode": "43333",
            "addressRegion": "Ohio",
            "addressLocality": "Akron",
            "addressCountry": "http://example.ca/homepage#Country",
            "name": "Hair Necessities Address",
            "@id": "http://example.ca/homepage#PostalAddress"
        },
        "@id": "http://example.ca/homepage"
    },
    "offers": {
        "@type": "Offer",
        "name": "Master Stylist Haircut Offer",
        "price": 80,
        "priceCurrency": "USD",
        "availability": "InStock",
        "url": "http://example.ca/master-stylist-haircut",
        "@id": "http://example.ca/master-stylist-haircut#Offer"
    },
    "@id": "http://example.ca/master-stylist-haircut"
}
</script>

, , , ,
Previous Post
Schema App Highlighter Overview
Next Post
New to Schema App? Here are the first 5 things to do after you hit subscribe!

Menu