This one’s going to take a little ramp-up. Hang with me.
What’s Schema?
Schema.org is a type of markup for your site that Google, Bing, and Yahoo promote.
The idea is it helps you tell search engines exactly what a specific piece of content on your site is. For example, you’d use different Schema if you want to announce, “Here’s my business’s name, address, and phone number,” or “Here’s a customer testimonial, or “Look – a video.”
Some SEOs say Schema in general makes a big difference for your rankings. I’m not one of them; I suspect it can help a little. So let’s assume it helps a little.
How do you use it?
What is Schema’s role on your site, if your main goal is to get visible in Google Places and beyond?
For me, its main use is to highlight your basic business info – your “NAP” (name, address, phone number), which should be on every page of your site.
In some cases I also use it to mark up testimonials. (Here’s a good post on that.)
But for now let’s just talk about using Schema on your all-important NAP info. It usually looks like this in your code:
<div itemscope itemtype=”https://schema.org/LocalBusiness”>
<span itemprop=”name”>Local Visibility System, LLC</span>
<div itemprop=”address” itemscope itemtype=”https://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>86 Richards Ave</span>
<span itemprop=”addressLocality”>North Attleboro</span>,
<span itemprop=”addressRegion”>MA</span>
<span itemprop=”postalCode”>02760</span>
</div>
<span itemprop=”telephone”>(508) 308-4040</span>
</div>
And as you may know, you can use a free Schema generator to create a blob of Schema for your business – like MicrodataGenerator.com or Raven Tools’ generator. (In fact, I suggest you use a tool to do it.)
The problem: vague “itemtype”
Notice that first line. In your blob of Schema, it probably reads:
<div itemscope itemtype=”https://schema.org/LocalBusiness“>
“Local Business” is vague. All that tells Google & co. is that you’re not Amazon or Nike.
You should not settle for that lame “LocalBusiness” itemtype in your Schema name / address / phone blob: Either there’s an itemtype (AKA Schema) that’s specific to your business, or you can improvise one (more on this in a minute).
First, try to find a Schema that describes your business. For example, https://schema.org/Dentist or https://schema.org/AccountingService.
That might be easy if you used MicrodataGenerator.com to generate your NAP blob. There, you may have seen some common types of businesses:
If one of those categories describes your business accurately, no need to read on. If that’s the case, go to MicrodataGenerator, select the specific Schema that describes your business (pictured above), generate your NAP blob, put it on your site, and pour yourself a cold one.
Find the right itemtype / Schema here
You’re probably 90% of the way to the perfect Schema NAP blob. Again, the only blemish is that first line – with “LocalBusiness” in it:
<div itemscope itemtype=”https://schema.org/LocalBusiness“>
All we’re trying to do is figure out what to put in that line instead of “LocalBusiness.” We’re literally looking for one word. Once we find it, you can make the swap and then stick that whole NAP block on every page of your site.
Finding the right itemtype was tricky – until now.
That’s why first I scraped Moz Local’s huge list of local-business categories. (You’ll see these under “Category Research” if you’re logged into your free or paid Moz account.)
Then I cleaned up the list. There was a lot of junk and repetition. I cut it down to the realistic categories – the ones that might conceivably describe your business.
Then I asked structured-data markup expert David Deering for help. He’s a Level 10 contributor at the Google Webmaster Forum, where he answers markup questions every day. He knows Schema like I know Judas Priest songs.
David looked at The List and found the right Schema for each category.
The result? You can open up this spreadsheet (on Google Drive) and scroll through it to find your type of business and the corresponding Schema / itemtype.
Now look in the right-hand column and grab the single word that comes after the https://schema.org/ part. That’s what you’ll want to replace “LocalBusiness” with in your Schema blob.
Let’s say you were doing this for my business. And let’s say I retired from the local-search biz and opened my very own beauty parlor.
Where I used to have “LocalBusiness” in that very first line, I’d put “HealthAndBeautyBusiness” instead.
<div itemscope itemtype=”https://schema.org/HealthAndBeautyBusiness“>
<span itemprop=”name”>Face By Phil</span>
<div itemprop=”address” itemscope itemtype=”https://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>86 Richards Ave</span>
<span itemprop=”addressLocality”>North Attleboro</span>,
<span itemprop=”addressRegion”>MA</span>
<span itemprop=”postalCode”>02760</span>
</div>
<span itemprop=”telephone”>(508) 308-4040</span>
</div>
Fix that one line of code, and then put that whole blob of code (like the above) on every page of your site. You’re done here.
But what if you still don’t find an accurate Schema?
That’s what I asked David after he sent me The List. What if the geeks at Schema.org left your type of businesses out in the cold?
Can you still use Schema to “tell” Google & co. exactly what kind of business you’ve got?
Or what if you don’t think your type of Schema is specific enough (like if you’re a pediatric dentist and don’t want to settle for the broad “Dentist” Schema)?
You’re in luck. And the workaround should take you less than 5 minutes, if you carefully read this bit of explanation from David
(I put the extra-important parts in italics.)
Use an additional ontology called Productontology (productontology.org). This is great to use to specify products and even services, but it can also be used to help extend other schemas to get more specific.
In simple terms, the process involves finding the matching entity in Wikipedia and then creating a URI with Productontology. So let’s take for example a deli. There is no exact schema type for a deli. So we have to use https://schema.org/FoodEstablishment. But since that’s not very specific, we should pull in the use of Productontology.
So first, we go to Wikipedia and find the page for Deli: https://en.wikipedia.org/wiki/Delicatessen.
Now we have to turn it into a Productontology URI. A Productontology URI begins with “https://www.productontology.org/id/”. We take the last part of the Wiki URL, https://en.wikipedia.org/wiki/Delicatessen, and add it to the Productontology URI.
So the full Productontology URI for a deli becomes https://www.productontology.org/id/Delicatessen.
Next, we have to add it to the markup. In order to do that, we have to use the “additionalType” property. So, the markup for a deli would look something like this:
<div itemscope itemtype=“https://schema.org/FoodEstablishment”>
<link itemprop=”additionalType” href=“https://www.productontology.org/id/Delicatessen” />
<span itemprop=”name”>Name of Deli</span>
<div itemprop=”address” itemscope itemtype=“https://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>100 Main St.</span>
<span itemprop=”addressLocality”>New York</span>,
<span itemprop=”addressRegion”>NY</span>
<span itemprop=”postalCode”>12345</span>
</div>
<span itemprop=”telephone”>(555) 123-4567</span>
</div>
Of course, more properties could be added to the above markup, but it’s just a rough example of how the “additionalType” property along with a Productontology URI can be used to help extend schemas and specify schema business types much better.
-David
So…remember a minute ago how if you found your type of business in the big spreadsheet, you just had to tweak that 1st line of code? Well, if you didn’t find your type of business in the spreadsheet, what you’ll have to do is tweak that one line plus add an additional line to your Schema NAP blob.
Example time. Let’s revisit my “Face By Phil” example. (Don’t worry – it’s still fictional.) Let’s say I didn’t run just any old beauty parlor, but specialized in laser hair removal. I’d want Google to know that, so I’d want my Schema to make that point clear. Here’s what my NAP code would look like:
<div itemscope itemtype=”https://schema.org/HealthAndBeautyBusiness“>
<link itemprop=”additionalType” href=”https://www.productontology.org/doc/Laser_hair_removal” />
<span itemprop=”name”>Face By Phil</span>
<div itemprop=”address” itemscope itemtype=”https://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>86 Richards Ave</span>
<span itemprop=”addressLocality”>North Attleboro</span>,
<span itemprop=”addressRegion”>MA</span>
<span itemprop=”postalCode”>02760</span>
</div>
<span itemprop=”telephone”>(508) 308-4040</span>
</div>
As you can see, you’re only customizing the parts in green – although it would be smart to change both URLs completely, so you don’t make any typos.
Examples of Schema + Productontology
Here are some examples of the info you’d use to customize those two lines:
Dermatologist:
Use in 1st line: https://schema.org/Physician
Use in 2nd line: https://www.productontology.org/id/Dermatology
Fertility clinic:
Use in 1st line: https://schema.org/MedicalClinic
Use in 2nd line: https://www.productontology.org/id/Fertility_clinic
Funeral home:
Use in 1st line: https://schema.org/LocalBusiness
Use in 2nd line: https://www.productontology.org/id/Funeral_home
Graphic designer:
Use in 1st line: https://schema.org/ProfessionalService
Use in 2nd line: https://www.productontology.org/id/Graphic_designer
Home inspector:
Use in 1st line: https://schema.org/ProfessionalService
Use in 2nd line: https://www.productontology.org/id/Home_inspection
Kennel:
Use in 1st line: https://schema.org/LocalBusiness
Use in 2nd line: https://www.productontology.org/id/Kennel
Landscape architect:
Use in 1st line: https://schema.org/ProfessionalService
Use in 2nd line: https://www.productontology.org/id/Landscape_architect
Laser hair removal service:
Use in 1st line: https://schema.org/HealthAndBeautyBusiness
Use in 2nd line: https://www.productontology.org/id/Laser_hair_removal
Magician:
Use in 1st line: https://schema.org/EntertainmentBusiness
Use in 2nd line: https://www.productontology.org/id/Magician
Music school:
Use in 1st line: https://schema.org/School
Use in 2nd line: https://www.productontology.org/id/Music_school
Pediatric dentist:
Use in 1st line: https://schema.org/Dentist
Use in 2nd line: https://www.productontology.org/id/Pediatric_dentistry
Personal Trainer:
Use in 1st line: https://schema.org/HealthAndBeautyBusiness
Use in 2nd line: https://www.productontology.org/id/Personal_trainer
Resort:
Use in 1st line: https://schema.org/TouristAttraction
Use in 2nd line: https://www.productontology.org/id/Resort
Tailor:
Use in 1st line: https://schema.org/ProfessionalService
Use in 2nd line: https://www.productontology.org/id/Tailor
Wedding photographer:
Use in 1st line: https://schema.org/ProfessionalService
Use in 2nd line: https://www.productontology.org/id/Wedding_photography
—
Got the perfect Schema NAP for your site yet? If you’re still stumped, feel free to leave a comment.
Or if you’d rather let someone else mess with it, contact David. He offers all kinds of markup services, and has worked with small / local sites as well as with national brands. This post wouldn’t have been possible without his know-how. Oh, and follow him on Google+.
(By the way, here’s the spreadsheet again.)
This is the rare post where it takes longer to explain the step than to do the step. But getting the right Schema should be a quick one-time deal for your business, and it may give you that extra little edge in the local results.
Ruben Pope says
Thanks for the new post! I understand have to “generate your NAP blob,” but I don’t know where exactly “put it on my site.” Is there some sort of universal folder in WP, I can paste this into?
Paul says
I have mine in my footer so that it shows up on every page. If there is a better place to put it I would love to know. Didn’t know I could improve on the LocalBusiness thing so this post is super awesome thanks Phil.
Timothy Geiger says
Very helpful details on the Schema NAP! Were is it applied on each page?
Jeffrey Enabe says
Great detailed post on local Schema markup! Really love how how you explain how to get very, specific local business information in there.
Dino Basaldella says
Hey Phil,
I wasn’t aware of productontology.org. I was able to add a bit more granularity to an existing Schema markup in a highly competitive arena. It may provide that tiny edge we need 😉
Thanks for the heads-up and another informative post!
Dino
Peter says
Ok, I found a description for my business on Moz that I like, now how would I enter the data. I’m using WordPress site. Doesn’t it appear (publicly) on the page where you add it?
Mark says
Great post Phil. You Sir are a local search artist and a gentleman. =^)
I knew there was a way to do this – it basically hints all around it on the schema.org pages but the lack of instruction on “how” there is (typically) completely lacking.
This is awesome – Thank you!
Robin Moody says
Great post Phil.
Do you have any suggestions for a particular WP plugin? Everytime plugin I have used has put the schema in a box on the page. I want it hidden in the source code. Would that be an addition the htaccess file or editor or something and going in through FTP?
A plugin would be better.
Thanks and really great article!
Phil says
@Ruben, Timothy, Paul, Peter
Anywhere on the page is fine. But I recommend putting it in footer.php.
You may also want to refer to this post I did back in March:
https://www.localvisibilitysystem.com/2014/03/10/10-guidelines-for-putting-nap-info-on-your-site-for-local-seo/
@Jeffrey and Dino
Thanks!
@Robin
As I recall, Yoast’s Local SEO plugin will put your Schema blob on every page.
David Deering says
Hi Robin. Just to follow up on what Phil said, I also wanted to add that hiding structured data markup on a page actually goes against Google’s guidelines for rich snippets. They will ignore any hidden microdata structured data markup, but even worse, it’ll cause them to distrust your markups, too. So as a general rule, you should only mark up content that is visible on a page, where it’s located on the page.
I hope that helps.
David
Jo Shaer says
Have I mentioned before that I love you Mr Rozek x This is brilliant!
Phil says
Now that’s a little overboard, Jo 🙂
Mariano says
I tried doing this, but got an error message from the Google Rich Snippet Tool:
Item
type: https://schema.org/Attorney
property:
name: Ozols Law Firm
streetaddress: 8880 Rio San Diego Dr #22
addresslocality: San Diego
addressregion: CA
postalcode: 92108
telephone: (619) 288 – 8357
Error: Page contains property “streetaddress” which is not part of the schema.
Error: Page contains property “addresslocality” which is not part of the schema.
Error: Page contains property “addressregion” which is not part of the schema.
Error: Page contains property “postalcode” which is not part of the schema.
Gene Maryushenko says
It looks to be working correctly on their website?
David Deering says
Hi Mariano. Without the benefit of seeing your markup, it looks like the problem is that you have not declared the PostalAddress itemtype. You see, you can’t simply use the address properties for a local business or organization; you must first declare a new PostalAddress itemtype. So it would look something like this:
Ozols Law Firm
8880 Rio San Diego Dr. #22
San Diego,
CA
92018
(619) 288-8357
And, of course, you could add other properties and types to this as well. You just need to be sure that all of the properties are properly nested within the appropriate schema types.
David
David Deering says
Aw man, my code got stripped out. lol Sorry. You could always check the example at schema.org/LocalBusiness to see how to properly format the address.
Mariano says
Thank you! Fixed!
Gene Maryushenko says
Very cool post Phil! Does it matter if its productontology.org/id/ or productontology.org/doc/ ? I noticed you used /doc/ in your “Face by Phil” example.
Phil says
Great question, Gene. I’ll have to defer to David on that one!
Gene Maryushenko says
I just noticed some of the categories redirect to /doc/ when you type in /id/
David Deering says
Hi Gene. Yes, you should use https://www.productontology.org/id/…. instead of /doc/.
Jason Stovall says
Hot uusable info for sure Phil. I’m assuming we paste code between header and footer after finding correct Schema?
Phil says
Assuming you’re on WordPress, again, I’d go with footer.php. Or the sidebar.
Andy Kuiper says
Thanks Phil 🙂
Anyone…
How to best handle a professional service where the professional focusses on more then one area?
Focus on just the ‘main’ aspect of the profession? Or different markup for each professional subset ‘section’ of a site?
e.g.
Main aspect: Lawyer
Subsets within the main aspect:
—> DUI law
—> Criminal law
—> Family law
Landing pages/sections on site about these professional subsets.
I’ve had varied responses to this query?
Thanks 🙂
Phil says
Dang. Good question, Andy. My guess is you focus on the “main” aspect of the profession. If there isn’t one main practice area – like in the example you gave – then you’re talking about a general-practice attorney, in which case I’d go with https://schema.org/Attorney
Andy Kuiper says
Thanks Phil 🙂
Dan Leibson says
Great post Phil!
Do you know what inspired the use of Productontology vs using the built in sameAs attribute to link to the wikipedia page of the service?
Phil says
Excellent question, Dan. I’m stumped. I would think SameAs would do the trick. But once again, I’m sure David has a better answer.
David Deering says
Hi Dan. Well, the “sameAs” property is very similar to but not quite the same as the “additionalType” property. The definition of the sameAs property is: “URL of a reference Web page that unambiguously indicates the item’s identity. E.g. the URL of the item’s Wikipedia page, Freebase page, or official website.” So, for example, you can use the sameAs property to say that “this business is the same business that’s on this Google+ page, or this Facebook page, or this Freebase page”. But for the sake of getting more specific with a schema type, the “additionalType” property is the most appropriate property to use.
Dan Leibson says
Thanks David! That was really helpful and allowed me to make a great recommendation to a client. Seems like when taken in that context the combination of sameAs and Productontology allows a more robust use of schema for businesses that don’t keep all the traditional data on their page.
David Deering says
Sounds great, Dan. Just keep in mind that when using the additionalType property, you would typically use an external vocabulary, like Productontology. But when using the sameAs property, you would use a regular URL of a reference page.
Ken Mabry says
Thanks Phil… fantastic post! I’ve been following you blog for quite some time now.
This post is much appreciated. It’s tough to find plain-english advice on how to use this stuff.
After reading through the post, I was curious to know if you have any recommendations on how to use schema.org markup to define business service areas?
Phil says
Great question, Ken. I’d probably refer to this:
https://schema.org/AdministrativeArea
David Deering says
As Phil mentioned, using schema.org/AdministrativeArea would be a good way to go, Ken. But it gets a little tricky, since you can’t just jump directly from LocalBusiness to AdministrativeArea. In a nutshell, you would have to declare things in this format: LocalBusiness >> makesOffer >> Offer >> itemOffered >> Service >> serviceArea >> AdministrativeArea… and then you’d have to use either the “name” or “geo” property to specify the exact area that the service is being offered in. There’s actually more to it than that, but that’s the basic structure of how it would be done.
I hope that helps.
David
Rachel Rossicone says
This is awesome. Thanks for sharing Phil!
Phil says
My pleasure, Rachel!
Vadim Mialik says
I like the intro of your post stating the reality of the importance of schema. Most posts seem to start with the significance of their posts to solve the problem of local SEO. Having said this, great post. I would start with templates and edit the categories. Now this adds another level of focus. I also have a feeling that this will become more and more important. Thanks Phil.
Phil says
Thanks, Vadim.
Nicola says
Hi, great post. I didn’t know productontology.org
I use very ofter schema markup on my web pages. To apply address information to Organization or LocalBusiness data i use this html/schema markup
Via XI maggio 43,91025 – Marsala (Sicilia)
It’s semantically correct this solution? Note that i use address tag and you in yor post use div
Thanks
Phil says
@Nicola
I’m not sure of the best the syntax for Italian businesses.
Bill Bean says
Putting a single NAP “blog” on every page not necessarily a good idea if there’s one website for multiple business locations. This has created some problems for us in the past as Google seemed to give priority to the structured data over the other specific meta tags on a specific location page.
For businesses with multiple locations we only put the A & P of the NAP on the specific location pages (e.g. domain.com/locations/city-1)
Phil says
When you say “Google seemed to give priority to the structured data over the other specific meta tags,” are you referring to what Google displayed in the SERPs?
Alinka says
Great post! Thank you so much for writing this up. We have more than 3 podiatrists working in our practice with 1 location. Should we use MedicalClinic schema or still use Physician schema like listed in the spreadsheet? Thanks SO MUCH in advance.
Phil says
Good question, Alinka. I’d go with MedicalClinic, if you’re marketing the practice as a whole rather than marketing the 3 podiatrists separately.
Alinka says
Thank you, Phil. One more question. This really helps!!! I’m trying to mark up as much content as I can, instead of just NAP. I don’t see any documentation anywhere about samples or examples on how to mark up things like MedicalSpecialty and availableService. If you can help or show example, would truly appreciate it. Newbie here. Thanks so much
Phil says
Another good question, Alinka. I could probably stumble my way to an answer, but I think your best bet would be to hire David 🙂
Gabriel Reynaga says
Great info thanks for sharing. We have been using the Local Business tags for our clients but that will stop today.
Phil says
Glad to hear, Gabriel!
Bryan Bledsoe says
Is it okay to customize some pages with with schema names for the type of services a business offers. For example specialties like graphics/vehicle wraps, window tinting (auto, home and business) and leather interior upgrades or should each page have the same schema name? Thank you
David Deering says
Hi Bryan. Well, in a situation like that, you would still use the same schema type on all of the pages for the particular type of business that you are, but you would define your specialties through the use of the Offer schema type. So in other words, your business type wouldn’t change, but the “offer” on your various pages would.
David
Campbell McArthur says
Hi Dave,
I forgot to ask, do I need to regenerate the code for my existing code or can I just change where it says Local Business to ProfessionalService?
Here is the existing code that I have in my footer
PC Medics On Call
449 Purdue Drive
Wilmington,
NC
28403
Phone: (910) 200-0150
David says
Would it do anything to put this schema in a Youtube video if promoting a local business?
Or just put the NAP?
Thanks,
David
David says
Just to clarify, I mean in the description section under the video.
Phil says
I’d just do the NAP.
Mark Jones says
This is a really awesome post. I had never heard of the https://www.productontology.org/doc/ trick before. Do you recommend using Garage_door as the end of the url for a garage door repair business?
Phil says
I probably wouldn’t. You work on garage doors, but your business isn’t a garage door. I’d look for another one.
David Deering says
Mark, I agree 100% with Phil–if you can’t find an EXACT match for your business on Wikipedia, then don’t use a Productontology URI. Doing so might do more harm than good. Instead, simply find the schema type that best matches your type of business and go with that.
David Faltz says
Hey Phil,
Nice articles as always. I also enjoyed reading your “Tough Questions for David Deering” post. I noticed your markup does not include either a link to the site or Google maps url.
I also read your post “10 Guidelines for Putting NAP Info on Your Site for Local SEO,” where #6 says not to put links to your site unless it helps usability, but then I have seen some markups include either or. Even the generators you link to have a space for url to website or map url.
Is there a reason you do not like to include? If you were to include, which one would be better to use?
Cheers
David
Phil says
Thanks, David.
I usually strip out (or simply don’t add) links in the NAP because they just don’t add anything – for users or for search engines, I suspect. But I can picture them falling into the “over-optimization” pile, given how sensitive Google is to all kinds of links (external and internal).
Heidi says
Great article Phil! I am interested to know what anyone would recommend for a Real Estate Property Management business. I am more interested in getting traffic from people looking to rent an apartment or house, rather than people interested in signing up for our property management service. So, I can’t decide whether to use https://schema.org/LocalBusiness or https://schema.org/ProfessionalService. And would it be weird to put Rental or Apartment in the second line? ie: https://www.productontology.org/id/Rental . Or should I stick with productontology.org/id/Property_Manager . ? Thanks!
Phil says
I’d use ProfessionalService + https://www.productontology.org/doc/Property_management
Marie Ysais says
Finally!! I found just what I was looking for and I could actually understand what you were talking about! There are a ton of confusing sites out there that don’t break t down like you do! Thanks Phil!
Phil says
My pleasure, Marie! Although David should get most of the credit.
Marie Ysais says
Yes, David all of that information in this beautiful post saved me lots and lots of time! Hats off to both of you.
David Deering says
Well, that’s great to hear, Marie. Glad we could help.
Thomas Rogers says
The specialization of the industry in the schema is brilliant. I have always used the generic local business. This has probable been the simplest and easy to understand example of schema I have read thus far. No more schema generators. Thank you so much
Phil says
Thanks, Thomas.
Tim says
I just gotta tell you – THIS ROCKS!
THANKS for all the geeky info, research and sharing of how to go about this.
Best, Tim
Phil says
Geek on, Tim 🙂
Zachary Straub says
Great article Phil. I’m going to be interested in seeing how Schem is going to integrate new and emerging businesses that aren’t exactly “Google friendly” (as of 2014) such as cannabis clinics. For now alt. medicine seems to be the reigning category. Hopefully we find out more in 2015. Thanks for the post!
Phil says
Thanks, Zachary. For “emerging” businesses I’d definitely go the Productontology route, if possible.
Zachary Straub says
So far so good Phil, I gave the Productontology method a shot with a social media marketing firm I’m helping out, and the Schema seems to be holding up. Will post more if I find out any different. Thanks again for informative the post!
scott says
Hey guys,
Perhaps I did something wrong here, but when I run this additional markup through the structured data testing tool, it’s giving me flack:
https://developers.google.com/webmasters/structured-data/testing-tool?url=http%253A%252F%252Fwww.acnjanitorial.com%252F
Did I screw something up, or is the structured data testing tool not going to recognize this additional information properly?
Phil says
I don’t think the testing tool recognized it properly. It’s no different from David’s example of a home inspector (who also uses the “ProfessionalService” itemtype) using Productontology. I think you’re OK.
David Deering says
Hi Scott. Actually, it’s a simple fix. You need to use /id/ and not /doc/. And I think your particular quotation marks were throwing the tool off, too (certain fonts will do that). But the tag should look something like this:
I hope that helps.
David
David Deering says
Rrrgh, the code got stripped out. Sorry. Let me try that again…
[link itemprop=”additionalType” href=”https://www.productontology.org/id/Commercial_cleaning” /]
Scott says
Hey guys,
Thanks a ton for your responses. I was able to get it fixed and recognized by the structured data testing tool:
https://www.google.com/webmasters/tools/richsnippets?q=https%3A%2F%2Fwww.acnjanitorial.com%2F
Looking good!
David – you were right about the quotations… those were also throwing it off. I’m not sure where I had pasted them from, but that’s something to always be weary of, especially when using a site building service like Weebly.
Jeff Meland says
Just a note about the double quotes. If you copy the example schema from above, and paste into your wordpress website, you may have unrecognized double quotes.
For Example this line:
100 Main St.
Must be changed to this:
100 Main St.
You have to look close at the double quotes to see the difference.
Make sure to test in google webmaster tools to make sure google recognizes what you are telling it.
Otherwise the schema does you no good.
Good luck!
Jeff
Jose says
Hi Phil
Great article. Just one question, regarding “itemtype” and “additionalType” properties to declare business type in foreign languages (a local site in portuguese, actually).
Do I have to declare the business types in english (meaning one from your spreadsheet + the ones picked up from Productontology) or do I use portuguese expressions that define my business?
By logic, I would bet on the second one, portuguese business category names, as I’m trying to signal a portuguese site ranking in portuguese searchs, but hey, it’s Google…
What would you do in this case?
Thank you
Phil says
Great question, Jose. I have the itemtype (and additionaltype, if applicable) in English. That markup isn’t visible unless you check the source code, so it wouldn’t look odd to Portuguese speakers. Only Google will see it. Also, Schema.org doesn’t support non-English languages yet: https://support.google.com/webmasters/answer/1211158?hl=en
But in the rest of your site / SEO work, yes, you’ll want to use the Portuguese words.
Jose says
Thank you, Phil.
Yes, you are absolutely right, “itemtype” only works in english, I get error if I try to use portuguese expressions there. Also, your Productontology ninja trick doesn’t work either. It requires an article in the english Wikipedia (mandatory). I tried a work around, creating a translate page on Wk explaining the portuguese expression I want to use, but it was deleted in a few hours and Productontology gives now an empty result. So my friend, I’ll have to live with the good old “LocalBusiness” here… and pray hopefully for Schema.org give support to foreign languages on their markup.
Nevertheless, I manage to build a proper and complete markup, under LocalBusiness, and included the social links with “sameAs” property, as explained by David (thank you, David!) on that article in Whitespark. All working well running smoothly.
Again, thank you very much, you article was a mind opener. Hats off, sir! 😉
Phil says
Sure thing, Jose.
FYI, you don’t have to use “LocalBusiness”: you can pick a more-specific “itemtype.” Just has to be in English, for the moment.
Jose says
Thank you, Phil.
Now I’m working a small country inn, sort of a rural hotel – also in portuguese.
Do you think I can use itemtype “LodgingBusiness” (broader) and then “additionalType” Hotel? Like this:
( The Google Testing Tool returns no errors on that )
Or do I get better results going for “Hotel” straight away in the itemtype tag?
Phil says
Go for “Hotel” in the itemtype.
Sudesh Roul says
Thank you, Phil.
Can you please give an example, how can it be implemented by the JSON-LD markup?
Rich Owings says
Yeah, I’m stuck on JSON-LD implementation too. If I add
“additionalType” : “https://www.productontology.org/doc/Patent_attorney”,
it throws an error.
Corey Barnett says
I’m getting this error
The property ”additionalType” is not recognized by Google for an object of type ProfessionalService.
I also tried information_technology_consulting and couldn’t get it to work either.
Phil says
Try retyping all the quotation marks.
If you still get an error then I’m stumped.
Dan says
On the spreadsheet some of the items say “See alternate instructions”. I am wondering where the alternate instructions are located. I am trying to create markup for a professional cleaning service company. Any ideas would be greatly appreciated.
Phil says
See the steps below the “But what if you still don’t find an accurate Schema?” header in the post.
Dan says
The only wiki entry that would show up is “maid service” and that isn’t really what my client does or is. They do commercial cleaning. Any ideas?
Phil says
I’d go with https://schema.org/ProfessionalService as the “itemtype.” Skip the Productontology step.
Dan says
Thanks!
Rich Owings says
So for a patent attorney, would it be appropriate to use…
https://schema.org/Attorney
and
https://www.productontology.org/id/Patent_attorney
And if so, could that also go on an intellectual property practice group page for a firm?
Great, great, great post!
Phil says
Hey Rich,
Yes, that’s exactly right. I’d only add that it’s fine to put that Schema markup on every page of the site. Unless, of course, it’s a big firm that’s got only one patent attorney, and you’re just talking about how best to mark up his page.
Rich Owings says
Thanks, Phil! Yes, it’s a big firm. 90+ attorneys, over 30 practice groups and 5 locations. It will be interesting to see how much schema markup can help. They definitely have some ranking issues and cleaning up the basics hasn’t moved the needle much.
Phil says
Gotcha. FWIW, I don’t think cleaning up the basics + adding Schema will do much. Your clients’ success will probably come down to links, reviews, and a “sticky” site.
Rich Owings says
They have a good and deep site, with lots of links. They don’t want to do reviews, so I’m fighting that battle with them. I am also going to do a link analysis to see if they have any toxic links.
I figure schema is worth trying on a few different levels (home page, location pages, and a few practice groups and individual attorneys) to see if it does impact anything.
Lynda S. says
Can you add multiple Additional Types if it applies to the Business?
Phil says
I don’t believe so.
Lynda S. says
I actually found a way. I am using JSON-LD and the following code is for a store that does dog grooming and dog training:
“additionalType”: [
“https://www.productontology.org/id/Dog_grooming”,
“https://www.productontology.org/id/Dog_training”
],
Google’s Schema.org checker says all is well. =>
Phil says
Ah. Good find, Lynda.
Johann says
Hi,
Can we use a category page for productontology ?
For example https://www.productontology.org/id/Category:Skiing_equipment
It’s the best fit I could find 🙁
David Deering says
Johann, is Skiing Equipment its own Wikipedia page? And are you using it for the business itself or for your products?
Johann says
Hi David,
Yes the category page exists on wikipedia (https://en.wikipedia.org/wiki/Category:Skiing_equipment) but there is no wikipedia.org/wiki/Skiing_equipment page… That’s why I asked.
It would be used for the business itself (on the adress page), not for products.
David Deering says
I see. Well, it would be ok to use that for perhaps the products that the business sells, but you shouldn’t use it for the business. The business might SELL skiing equipment, but the business is not A skiing equipment. When using Productontology for a business type, the URI must be an exact match for what type of business it is, not what it does or sells.
I hope that makes sense and that I was clear enough in explaining it.
David
Matt Stack says
How many additional lines can you use when doing this. Would it be bad to put multiple additional types if there is multiples services?
Phil says
See this:
https://www.localvisibilitysystem.com/2014/06/30/how-to-pick-or-improvise-the-right-schema-org-markup-for-your-local-business/#comment-330476
Still, I wouldn’t use ProductOntology to mark up all your services. Try to find an itemtype that describes your business, and if you can’t then consider specifying one ProductOntology line.
Chris Alphen says
Hi Phil,
Thanks for this great post. I read every comment hoping to find the answer to what should be a common question.
A plumber who has 2 additional types-heating and AC. Both are covered by schema.org/HVACBusiness which eliminates the need for multiple additional types. Since there is a schema category for HVAC should I list the additional type as
link itemprop=”additionalType”schema URL or should I use the productontology URL?
1.5 years and still going.
Obviously a timeless piece. Thanks again Phil!
David Deering says
Hi Chris. Well, since schema.org has an HVACBusiness type, there’s no need for you to use the additionalType property. The schema type has you nicely covered already. (You would only use the additionalType property IF schema.org did not have an appropriate type for your business.)
Chris Alphen says
Hi David,
Thanks for your reply. To be clear the item type is plumber. Since not all plumbers do HVAC I’d like to make it clear that HVAC is an additional type. So I did add that 1 line using productontology.org/id/HVAC.
Google finds no structured data in the test. I think my problem goes beyond the scope of this post. It’s a WordPress site I inherited that probably has no CSS support for schema. If that’s the case would I be better off trying JSON-LD.
After reading a whole bunch more articles on this topic I finally posted the question at webmaster central.
Thanks again David
David Deering says
I see. Well if the primary entity/item type is a plumber, then do NOT use additionalType or productontology with any HVAC URIs. What you’re describing is a plumber who also offers HVAC services. That would be clarified on the HVAC service pages as a plumber (main entity) who offers a certain HVAC service. So unfortunately, it’s not as simple as using the additionalType property along with schema.org/Plumber. The business is a Plumber. What services they offer is a different story.
So think of it in this way: When you boil it all down, what type of business is it? And what services do they offer? The two are very different things but they can both be marked up with schema. You just can’t handle describing everything with one simple markup. Attempting to do so would confuse search engines rather than help them better understand.
I hope that helps to clarify things.
David
Chris Alphen says
Thanks David,
So a company that does plumbing, heating, and AC has to decide which of the three to markup sitewide. Is that the same as moving and storage? Real estate and insurance?
I get that you’re doing your best to provide answers that are supported by the current system. I appreciate that. I’d like to get this right so if markup for itemtype plumber is placed via the footer on every page can I place an additional markup with itemtype HVAC on pages related to heating or AC? In those cases I guess I’d place the itemtype HVAC on the page itself while the plumber one is in the footer. Or as I think about it, would it be better to create different sidebars for different pages?
Much obliged.
Chris
David Deering says
In a nutshell, a plumber that offers AC and heating services is still a plumber. Same for a real estate agent that offers insurance–the main entity is still a real estate agent. Never should you use additionalType along with schema.org/Plumber in an attempt to describe a plumber that offers AC and heating services. As I mentioned earlier, plumber is the type of business, heating and AC are services that they offer.
Unfortunately, there are no shortcuts to use in your case. Each page should have unique markups. And as a general rule, never should a website use the same markups on every page. Every webpage is different, so every markup should be different to reflect the page’s content.
Chris Alphen says
Thanks for making that crystal clear David. I really appreciate the time you’ve taken here to address my Issue.
Once I solve the WordPress issues I’m going to take your advice and markup each page as applicable.
Thanks
Lynda S. says
A company I am working on currently has its own Wikipedia page. Would it benefit the site to add that company’s wikipedia page to the schema markup using Productontology?
David Deering says
Hi Lynda. Well, adding the company’s Wikipedia link to the markup would be a good idea. But you would not add it with the additionalType property and a Productontology link. You would use the “sameAs” property instead.
Lynda S. says
Thank you for the reply! I realized the sameAs property would be better after I posted this and was looking through the Schema.org docs.
Thank You again!
michele baldoni says
Hi, I have i simple question and i hope you can answer me:
If i have a listing of place like a page with 20 hotels of Milan (like OTA listing), I can/have to implement schema for place, or Schema will be implement only into hotel’s single page ?
I hope you understand my poor english
Thanks
Michele
David Deering says
Hi Michele. You can do both, but I’d suggest focusing more on the individual hotel pages and marking them up well.
michele baldoni says
Thanks a lot.
Glenn says
This is a great Schema.org post and very useful information!
I wanted to clarify a question that I don’t believe has been asked. Does the Schema Markup via JSON-LD placed in the footer supersede or over ride schema for individual pages. For example, I need to markup the map on our location and contact us pages however, do not desire to place “has map” schema in the footer to adhere to the rules – I have not placed a map in the footer. Also, when schema is placed in both the footer and on an individual page I’m receiving this error message “there was an error parsing your JSON-LD.” Perhaps, schema cannot be utilized in both the footer and in an individual page simultaneously?
Thanks!
Ben says
Hey guys. Excellent post. I’ve read through all of the comments, and I don’t think this has been addressed. Can you use this method for products offered instead of business type? For instance, my company sells and installs stairlifts for people with mobility issues. Could I add a new JSON-LD block for “@type”: “Product” and specify https://www.productontology.org/id/Stairlift as an additionalType? Thanks!
David Deering says
Yep, you sure can, Ben. As long as there exists a Wikipedia page for Stairlift, which I see does, you can use Productontology to specify the type of product that you’re offering. Just be sure to nest everything together into one JSON-LD script.
Ben says
Thank you for the reply. Just a point of clarification – when you say “Just be sure to nest everything together into one JSON-LD script” – do you mean everything product related, or everything including business type and NAP? Right now, I have a JSON-LD block with all of the NAP stuff, and then a second block with @type = Product which specifies the Productontology stairlift. Is this correct, or no?
David Deering says
Well, you really should try to keep things within one block. So if you’re marking up a product page, the product type would be the top-level entity, and then you would include your company’s markup as the seller, such as:
Product
offers > Offer
seller > Your Company
I hope that makes sense and helps clarify things for you, Ben.
Scott St. Gelais says
Great post! I was wondering since the general ProfessionalService type for local businesses has been deprecated, do you still recommend using it?
Sharan Binning says
Hi there,
I have implemented the structured using JSON-LD on my simple HTML website. I have a quick question though, do you think I should update all of my website pages to contain the markup or would just the homepage be enough?
As my site is in HTML, I’ll have to go through each page and add the JSON markup. But I only want to do it if you think there is an advantage of doing that.
Thanks & Regards.
David Deering says
Good question, Sharan. I’m a firm believer that every page of a website should have structured data markup on it, but the markup should be unique for every page. So if possible, I’d recommend adding markup to every page of your site, but again, making sure that the markup accurately reflects the unique content that’s on the page.
Johannes Maneljuk says
This is the single best post on schema markup for local SEO ever. Thank you so much!
stephen says
hello,
I have two categories coming up under my schema.org testing tool for https://mirabalphotography.com. ‘organization’ which is WordPress plugin’s Yoats’s default, AND the new schema I’ve learned, professionalService from this page (thank you). Is it ok that I have two ‘itemtypes’, or should I only have one?
David Deering says
Hi Stephen. Well, you really should use the most appropriate schema type for your business and you should have only one block of markup on each page. I work a lot on sites running Yoast’s plugin (it’s the absolute worst when it comes to adding schema markups) and most of the time I have to edit the plugin files themselves to change the itemtype and also get rid of the unwanted extraneous markups that it creates. But unfortunately that’s necessary in order for the markups on the site to be correct. So if you’re able to do that, that’s what I would recommend.
stephen says
Thank you so much David for replying! I do have two more EASY questions.
1) Yoast automatically includes the ‘website’ type for search engine purposes. Will this effect my photographer type?
2) Can I have more than ‘photographer’ as my additional type, can I also add ex. wedding photographer and enagagement photographer? or does photographer cover my SEO base? thanks again!
BTW FOR OTHERS: The solution for those that will find this in the future is here.
… l/wp-content/plugins/wordpress-seo/frontend/class-json-ld.php
Find this line
* Class constructor
*/
public function __construct() {
$this->options = WPSEO_Options::get_all();
add_action( ‘wpseo_head’, array( $this, ‘json_ld’ ), 90 );
add_action( ‘wpseo_json_ld’, array( $this, ‘website’ ), 10 );
add_action( ‘wpseo_json_ld’, array( $this, ‘organization_or_person’ ), 20 );
}
then delete ….. add_action( ‘wpseo_json_ld’, array( $this, ‘organization_or_person’ ), 20 );
Just be sure and include your new schema learned on this page in your footer as this will remove what you put into Yoast and also add all the ‘sameAs’ social profiles you added into Yoast-SEO as this won’t show either anymore.
David Deering says
Hi Stephen. To answer your questions…
1. The WebSite schema type should really only be used on your homepage. All other pages should use WebPage (or an extension of that type) or a more specific schema type based on the main entity of the page.
2. I would recommend sticking with Photographer, then getting more specific on your other pages about what type of photography you do.
I hope that helps to answer your questions.
austin says
This is a GREAT reference article – thanks a ton for pulling it together. I have a question that I do not think is referenced here already.
I am updating a site for a medical clinic that has a few services (physical therapy, imaging, etc.). I plan to add a pervasive markup to the footer (where I have the office address), and I think I am clear about how to indicate the practice as a medical clinic with ONE overall “medicalSpeciality”, but in addition to that, I want to add details about “availableService”, and have 2 questions:
1) Is it best practice to list the Service as a “name” or as a “URL” (in other words:
OR
2) Can I add multiple lines with a bunch of different “availableService” entries (e.g. for 8 of the key services the clinic provides)?
Thanks a ton for your help. Again, this is an amazing reference.
Robert says
Why do the examples of the additionalType at the top of the page say doc and the ones below (the doctor examples) say id? I having good luck with your advice but want to add another line. Is it because one of them is available in your spreadsheet (where did those come from anyway?)
I want to say both LocalBusiness and a subset. In the following example, should I use doc or id?
Robert says
I figured this out. I wanted to put an additional type under LocalBusiness. I wrote the string using the additional type guidance above then validated it. Google doesn’t recognize an additional type under LocalBusiness. You can only add an additional type to one of the categories.
David Deering says
Hi Robert. Can you please paste the code that you’re using so that we can take a look?
Robert says
My question is in regard to a schema for a self storage business that is local. I know how to add SelfStorage as my itemtype but asked myself if I could make the itemtype LocalBusiness then add an AdditionalType of SelfStorage. My original question was how to add the AdditionalType and if it needed to say doc or id. The question was moot as when I followed the instructions above and added the wikipedia result to the string with id, it worked.
My schema:
Generic Self Storage Company
123 Easy Street
Anytown,
PA
13440
info@genericss.com
(410) 993-0551
When I validated it, it said:
The property ”additionalType” is not recognized by Google for an object of type LocalBusiness.
The validator I used is:
https://developers.google.com/structured-data/testing-tool/
David Deering says
Well, since SelfStorage is an extension of the LocalBusiness itemtype, there’s no need to use the additionalType property in this case, Robert. Just use https://schema.org/SelfStorage.
Brent Nau says
Guys great reference article for schema. Doing a bit of research it looks like the “ProfessionalService” itemtype has been deprecated (source: https://schema.org/ProfessionalService). So I guess we default back to “LocalBusiness” when there is not an appropriate itemtype? You may want to clean up the Google Doc to reduce any confusion on using “ProfessionalService”.
Ben Horle says
Hi
I use your Review PDF and its really helped!
Can you tell me what schema I should be using please?
Catering seems a bit vague, we mainly target wedding catering but wikki doesn’t seem to have a page for that.
My site is https://www.sussexchef.com
Thanks for your help with this!
Phil says
Hey Ben, check out the spreadsheet.
Ben Horle says
Hi
Yes I did but for “caterers” it says “See alternate instructions”
Leaves me wondering what to list myself as.
Thanks for getting back to me so quickly!
Phil says
You’ll want to follow the instructions for Productontology (the 2nd half of the post) and use https://schema.org/ProfessionalService and https://www.productontology.org/doc/Catering
Ben Horle says
That’s great, thank you so much! I get this error for my telephone number though,
The property ”telephone” is not recognized by Google for an object of type ProfessionalService.
Have I done something wrong?
Ben Horle says
I got it the ” was in the wrong font
verry tricky this coding to a novice!
Tyron Jenkins says
I don’t think professional services is the correct schema property to use. Professional Services implies the business practices a regulated service i.g. Attorneys, Dentist, Locksmith, etc. and schema.org eludes to this in their documentation.
Catering, photography and other service area type businesses should probably use property type “Service” https://schema.org/Service and follow the examples there.
The ‘service’ property allows you to indicate the type of service, e.g. ‘Catering’ as well as the providers mobility (static or dynamic). And an expected type of ‘Service’ is ‘Provider’ which has an expect type of ‘LocalBusiness’. example below.
###
“@context”: “https://schema.org/”,
“@type”: “Service”,
“serviceType”: “Weekly home cleaning”,
“provider”: {
“@type”: “LocalBusiness”,
“name”: “ACME Home Cleaning”
},
###
Tyron Jenkins says
I meant, ‘Provider’ is a property of ‘Service’ and ‘LocalBusiness’ is an expected type of ‘Provider’.
JJ Steadman says
I read through the provided Google Sheet and the comments here and didn’t find an immediate answer to my question. So here it is:
My company offers online HR software/technology (to get generic, we’re a technology company and we display our NAP on our site). Technically we are a local business, but our reach is international. Looking through the schema Google Sheet, I could not find a Schema that best fits our offering.
Based on that, I’ve defaulted to this:
Would you suggest something other than LocalBusiness here? Did I miss a better one?
David Deering says
Hi JJ. It looks like the system stripped your code out. So you might want to post it elsewhere and provide us with a link to it so we can check it out. And if you can share your URL, that would be very helpful, too.
Thanks.
JJ Steadman says
Well that’s unfortunate.
Website is http://www.bamboohr.com
I’ve put the code in a GDoc to make it accessible. Here’s that URL:
https://docs.google.com/document/d/1op-ZJe12ZFX4oAco4Pd5i9gxoWOhsSXNIPQt0k9gPA4/edit?usp=sharing
stephen mirabal says
Hello,
Since “ProfessionalService” Schema has been depracated, does this mean all photographers need to revert to “LocalBusiness” schema?
Jess says
Spreadsheet’s missing ‘Architect’ probably a bit of an oversight seeing as you’ve got landscape architect in there alright! All professional services, I’m guessing.
David M. O'Neill says
Nice article with some great references.
JSON-LD is becoming the standard format for Schema.org data, are you planning on a revised article covering those structures?
Also, and more importantly, many businesses perform their services at a client’s location and that information is vital for being “found” via geo-locations in SERPs. How do you handle a contractor building a house in a city different from his home office?
David Deering says
Hi David. Yes, you’re right, JSON-LD is quickly becoming the markup standard, although search engines can still easily extract microdata as well. But you can simply use the same markup structures as above and convert them to the JSON-LD syntax.
Regarding your question about businesses that provide services outside of the city that their office is located in, the “areaServed” property would be a nice way to mark up those details.
Jason Taylor says
David, can you give me an example of where the “areaServed” property would be placed in context and how it would look? For example, I’m trying to markup the contact page for a swimming pool contractor (couldn’t find a productontology this) who builds in-ground pools across Southwest Florida. Cities include Fort Myers, Cape Coral, & Naples. How would I add that into the markup?
David Deering says
You could do something such as this, listing each city they target under the areaServed property::
“@type”: “HomeAndConstructionBusiness”,
“name”: “Name of Pool Contractor”,
“areaServed”: [
{
“@type”: “City”,
“name”: “Fort Myers”,
“sameAs”: “https://www.wikidata.org/wiki/Q506451”
},
{
“@type”: “City”,
“name”: “Cape Coral”,
“sameAs”: “https://www.wikidata.org/wiki/Q462789”
},
……
]
Jason Taylor says
David,
Thanks so much. This has been a tremendous help!
Larry James says
I am a web designer building a site for a Hot Tub store that sells and services hot tubs. II cannot find a Hot Tub business in the google sheet, so I am using as my first line, and as my second line. Is this correct? The business also sells and services Awnings, so could I use a third line >> ?
David Deering says
Hi Larry. Unfortunately, it looks like the codes you added to your comment were stripped out, but I think I understand the question. Since a store that sells hot tubs is pretty niche and there is no existing schema type that is an exact match to the business, I’d suggest using simply schema.org/Store. There is no Wikipedia or Wikidata page for a hot tub store, so you can’t really use the additionalType property in your case for the business’ markup. (By the way, there is a Wikipedia article for Hot Tub. But the store SELLS hot tubs; it isn’t A hot tub–seemingly small but important error many people make.)
Then on the various hot tub pages, you could mark up the hot tubs as products that the store sells.
So I hope that helps.
David
gene says
Very insightful article. I am having trouble picking between LocalBusiness and Service. Can the 2 be combined?
Its essentially a local business that provides a service. The service is “Lice Removal”…. Also an in home service.
Would you recommend using one or the other?
Anyway to see what competition is using?
Any insight is appreciated.
David Deering says
Hi Gene. Good question but no, you can’t combine the two. So just try and select the best LocalBusiness subtype in schema.org and if an exact match does not exist, then simply use LocalBusiness. Whatever services your business provides would be considered as various types of offers, each marked up separately.
I hope that helps answer your question.
Jo Shaer says
Grrrr… Hubspot keeps stripping the productontology link out of my schema – I have added it to the footer. Hubspot Support tell me that Moz say schema links need to go in the header. Any clarification, Phil or David?
David Deering says
Hi Jo. Well, the markup can be placed in the head, body or footer of the page. The location does not make too much of a difference, really. But I’m not sure why Hubspot would be stripping out only the productontology link. Can you share the URL so that I can take a look?
Jo Shaer says
Hey David! It’s on my own site https://www.lollipoplocal.co.uk/ right down at the bottom. I have to add the code into a rich text editor – obviously I need to use the source code option to be able to include the schema code. When I click done, it just strips out the productontology link – I think because it doesn’t have the the spans around it??? It just says link itemprop rather than span itemprop…?
David Deering says
It’s possible that it’s stripping out any links that are not visible or hyperlinked. I’m not sure. But just out of curiosity, what’s the productontology link that you’re using?
David M. O'Neill says
Are you using JSON-LD?
Jo Shaer says
Not intentionally… I’m not sure what that is :O Is that a question I should ask Hubspot?
David M. O'Neill says
JSON-LD is a XML like format for schema that fits inside tags ergo you should be able to insert it almost anywhere. HubSpot may still strip it out – tough to tell.
David Deering says
Yes, JSON-LD is simply another syntax that can be used to add structured data markup to a website as David mentioned. But it would involve basically redoing your entire markup. I think the best option is to figure out why Hubspot is stripping out your link.
But it’s also very possible that you may not need to use productontology or that you might be using it incorrectly. So that’s why I asked what link you’re using so that we can be sure it’s correct.
Jo Shaer says
Ah sorry, David D, I completely misunderstood – that will teach me to try to get my brain to work on a Bank Holiday!
I would be happy with either of these: https://www.productontology.org/id/Inbound_marketing
https://www.productontology.org/id/Digital_marketing
Thanks also for the explanation David M O’Neill.
David Deering says
lol No problem, Jo. Regarding the productontology tag, you really shouldn’t be using either of them for your business’ markup. Those are the services that your business provides. In other words, you *offer* inbound marketing but *your company* is not inbound marketing. See the difference? So I would suggest not using them for your business’ markup but you can use those tags when marking up your inbound marketing and digital marketing *services*.
I hope I explained things clearly enough.
David
Jo Shaer says
Ha, I remember those rules! So I could use this markup for my business then…? https://en.wikipedia.org/wiki/Digital_marketing_engineer
And then use the other markups on the actual service pages? Should/Can these be used independently of the regular LocalAddress markup? Is there a template for this?
Thanks for your patience and clarity in explaining all this, David
David Deering says
Hey Jo. Well, a digital marketing engineer is technically a person, not a business or organization. It might seem like a small detail but personally, I wouldn’t use it. But you could use the other productontology tags on the pages that describe your digital marketing and inbound marketing services. So in the markups, your business would be the provider of those services.
cosmin says
hi,
wanted to ask how you add two or more type of business.
I mean the business can be in 2 categories like Drug Addiction Treatment Center and Addiction Treatment Center. so how i add both categories?
next question is what are the schema.org tags for this categories of google+
Drug Addiction Treatment Center
Addiction Treatment Center
Alcoholism Treatment Program
Jeewan Garg says
Should not be used this one https://www.productontology.org/id/In_vitro_fertilisation
instead of the following one
https://www.productontology.org/id/Fertility_clinic
Adam Singer says
This was so awesomely helpful and insightful. Thank you! Really surprised there is no schema for employment recruiter.
justin says
Hello,
We are an insurance broker, what should we use when on our “request a quote” page, is it a product? Service? What should we use exactly to describe the page?
David Deering says
Hi Justin. Well it really depends on what type of content is on the page, but if it’s strictly a Request a Quote page, I’d go with schema.org actions such as potentialAction > AskAction. But the content on the page itself will ultimately determine what to do in this case.
Jason Taylor says
I’ve been trying to incorporate productontology into my client’s websites. However, I noticed that from the time I first discovered this awesome article about 2-3 weeks ago until now, none of the productontology.org links that you’ve posted above work anymore. They all produce the following error:
“404 Error: Class not found in Wikipedia”
I also notice that almost all of the links that have /id/ in them all re-direct to a /doc/ link. For example:
/id/Fertility_clinic now redirects to /doc/Fertility_clinic and produces a 404 error message. Can you help me with this? I’m looking for a productontology for a landscape designer. Thank you.
David Deering says
Hi Jason. Yes, Martin Hepp posted something about this issue recently, but I’m sure things will get straightened out soon: https://plus.google.com/+MartinHepp1/posts/fzSFBFJ1THi
Adam Ford says
Hi Dave,
As a few people have remarked, “professionalservice” is DEPRECATED, but a hefty percentage of your spreadsheet is flagged with that. Do you recommend using “service” instead or “localbusiness”, presumably either with Productontology??
David Deering says
Hi Adam. Yes, thanks for pointing that out and we’ll see about updating things. In the meantime, you can leave ProfessionalService if you are currently using it as it won’t harm anything. However, please keep in mind that schema.org/Service is to be used to mark up the *service* that a business provides, which is not the same thing as the type of business it is. So in other words…
Schema Business Type = What You ARE
Schema Service = What You DO
I hope that helps explain things a little more.
Adam Ford says
Yes, cheers.
I did have a look at the schema for service and the difference were fairly obvious. Schema.org actually make the reference between the two in the header of the Professionalsrvice schema in a slightly misleading way.
I’ve only just discovered this blog recently, but you are my new favourite thing on the entire internet, GREAT content. please keep it up. Although some weirdness when sharing this site on SOME social platforms, which aren’t picking up a preview image?? No idea why that would be, but maybe useful feedback.
One other question – do you recommend using WordPress plugins for schema markup?
Any chance you or anyone else might have done a post on pros and cons of that? And any preferences among plugins?
Joseph says
I like to use JSON- LD but the concept is the same. Vey good explanations of markup extensions.
Susan says
Wow! I’m so excited about this thread. All of the comments and responses are so very clear that I feel like I’ve just taken a schema markups course. Thank you so much for this.
So, my question is about aggregateRating. I know a static number can be inserted into this field, but my client is a Review company and wants these numbers to be generated dynamically on their clients’ websites. I’m not a programmer which puts me at a major disadvantage, and I’ve done a fair amount of research, but I just can’t find a yea or nay to this issue. Your assistance is very much appreciate!
I’ll be following you regularly from now on. Thanks!
David Deering says
Hi Susan. To answer your question, yes, you can definitely insert dynamically-created content into your schema markup. If you’re not too experienced with coding, using microdata might be easier for you. But you can definitely mark up the dynamic aggregate rating.
I hope that helps.
David
Aaron Douglass says
I’m not sure if my web developer has added any schema to my site. How would I go about finding out?
it’s http://www.gastrocateringsurrey.com
Thank you!
David Deering says
There are a few ways to check, Aaron. One way is to simply search the source code. Another way to check is by using Google’s testing tool. Here are the results for your home page: https://search.google.com/structured-data/testing-tool?url=https://www.gastrocateringsurrey.com/#url=https%3A%2F%2Fwww.gastrocateringsurrey.com%2F
However, if the markup was being added to the site through Javascript, it would not appear in the source code and the testing tool would not be able to see it. You’d have to use something like Chrome’s “Inspect” tool in order to see it. But after checking, unfortunately it doesn’t look like any schema markup has been added to your site.
stephen m says
hello again,
Is the sameAs proprty only used in connection to social media? Or would it also be beneficial to list directory listings and pages within tyour niche? for instance, since I am aphotographer, would it be useful to list my association link and myweddin.com directory listing page? thanks!
David Deering says
Yes, that would be perfectly fine to do, Stephen. You could basically use the sameAs property to link yourself to any of your other online profile pages.
Adam Ford says
Hello, I’m having trouble with productontology.org
I’m a marketing agency. So my primary Type is “Professional Service” and I want to add “Marketing” through productontology.org. The Wikipedia page exists, but at
https://www.productontology.org/doc/Marketing
I get “ERROR (404): No respective entry available
productontology.org cannot provide a class definition fo the requested URI.
Reason: There is no Wikipedia article https://en.wikipedia.org/wiki/Marketing for ‘Marketing’.
If you want to use this word (to be precise: this “lemma”) as a class, you must first create a respective article in the English Wikipedia by clicking on the link given above.
Here is the direct link to create such a page in Wikipedia: https://en.wikipedia.org/w/index.php?title=Marketing&action=edit.”
Actually I’m getting the 404 even on URLs that the site Homepage is using as examples.
Eg https://www.productontology.org/doc/Hammer.html
Same 404 error message.
ANY IDEAS why this isn’t working?
Josh says
Adam, I’m having this same issue. Did you ever get anywhere with this?
James M. says
Hi.
I wanted to thank you for a great article. I’m pretty new to schema.org markup and your article helped a lot. I have a couple of questions though. I’m trying to add markup for a fairly niche business. it’s a store in NYC that does balloon decorating for events/parties as well as being a florist and a party equipment rental service. Complicated and I couldn’t find anything remotely close in Wikipedia. Should I stick with “Store”? Right now I am using “Store” with “Florist” as an additional type.
The business does events/delivery in the NYC area but they also ship wholesale products worldwide. Would it be wrong to include “NYC” as the areaServed with a same as link to wikidata? Is there some way to differentiate between their wholesale services and their local retail/delivery?
Oh, one other quick question about the Google Structured Data Testing Tool. When I try to markup a telephone link directly, it doesn’t seem to be able to see it. (Gives me a warning that the telephone field is recommended.) If I wrap it in a span, it seems to see it fine. Is this some quirk of their validator or a real problem with my markup?
This doesn’t get seen: (###) ###-####
While this seems fine: (###) ###-####
Thanks again for the article and any help.
James M. says
The html and markup that I posted seems to have gotten stripped and added to the post. Hope this helps.
This doesn’t get seen: “(718) 438-7222”
This seems ok: “(718) 438-7222″ (Basically the difference is the first one is a regular anchor with a tel link while the second one has the anchor wrapped in a span and the span has the itemprop=”telephone”)
David Deering says
Hi James. Good questions. Well, regarding which schema type to use, keep in mind that there is a fundamental difference between what the business IS and what it DOES or OFFERS. So if the business is essentially a store that offers balloon decorating and party rentals, it is still a schema.org/Store that “makesOffer” > “Offer” > “Service” > “Balloon Decorating”. I would also suggest removing the additionalType property and just simply going with schema.org/Store. Again, the flowers are products that the store offers/sells. But if the business is categorized as a florist, then go with schema.org/Florist.
The delivery service would be a schema.org/Service that you could specify as being offered only within a certain area. You wouldn’t necessarily have to specify an area where your products are offered, as it’s assumed they are offered to anyone anywhere unless you define an area.
And for the phone number, to simplify things you can just do something like this: [meta itemprop=”telephone” content=”+1-###-###-####” /]
Hope that helps.
David
James M. says
Thanks David! That does help a lot. I did decide to stick with “Store”. And I see your point about how both the balloons and flowers are products that the store offers as well as services that they offer under event/party decorating.
It does seem strange that Google (or at least their testing tool) can’t read “tel” links. I tested in out with “mailto” links and it couldn’t read those either. (With both it complained about an unspecified type.) Moving the markup to a meta tag is a good workaround though.
Thanks again.
James
Don Qix says
Hi guys i have a page that offers septic vault repair and i serve USA only, what i want to do is have an organized schema that tells Search engines esp. google that this page https://www.mywebsite.com/repair is about a service that i offer and i want the search engine to know that it is my organization that offers it. I chose org since we have multiple branches instead of localbusiness, do you think my code below would work?
`
{
“@context”: “https://schema.org/”,
“@type”: “Service”,
“serviceType”: “Septic Vault Repair”,
“provider”: {
“@type”: “Organization”,
“url”: “https://www.website.com/repair”,
“name”: “Don Quixote Septic Services”,
“telephone”: “+1-650-221-3312”
},
“areaServed”: {
“@type”: “Country”,
“name”: “USA”
}
}
`
i tested it on google structured data and it seems ok but i wonder if i’m missing something or perhaps im doing it wrong even google doesnt show any errors
thanks a lot guys
David Deering says
You’re on the right track. If you are a local business,, I would recommend using the LocalBusiness schema type or perhaps the HomeAndConstructionBusiness schema type. I would also recommend including all of your location and address info and using the sameAs property with links to your Google+ page and other important social media and citation sources. And on a page such as that, be sure to make the “service” the top-level entity within your markup.
Hope that helps.
Don Qix says
@david … Thank you so much for your reply, i applied what you advised. What if I have multiple branches and multiple services offered but all branches offers the same service? I have another question that applies what you told me and see if i can make it right this time but let me explain it first.
I have this branch page https://www.website.com/newyork that offers all of our services, this page covers the whole new york city as i have other pages for other cities and it has physical office and a contact number it also has google business verified so obviously it has a map
We accept cash and cheque payments that is payable to my name, our business is open 24 hours 7 days a week
and so heres my schema in json format which i already test on google strucured data testing tool and shows no error but i have concerns, please take a look
–>
{
“@context”: “https://schema.org/”,
“@type”: “Service”,
“serviceType”: “Septic Vault And Plumbing Services”,
“provider”: {
“@type”: “LocalBusiness”,
“url”: “https://www.website.com/newyork”,
“telephone”: “+1-650-221-3312”,
“image”: “https://www.website.com/newyork/plumbingbg.jpg”,
“priceRange”: “$100”,
“paymentAccepted”: “Cash and Cheque payable to Don Quix”,
“geo”: {
“@type”: “GeoCoordinates”,
“latitude”: “40.75”,
“longitude”: “73.98”
},
“hasMap”: “https://google.com/maps/bsfuEnYapCS2”,
“openingHours”: “Mo, Tu, We, Th, Fr, Sa, Su 01:00-01:00”,
“address”: {
“@type”: “PostalAddress”,
“addressLocality”: “Mexico Beach”,
“addressRegion”: “NY”,
“streetAddress”: “3102 Highway 98”
},
“description”: “We provide professional septic vault and plumbing services in new york.”,
“name”: “Don Quix Plumbing New York Branch”,
“telephone”: “850-648-4200”
},
“areaServed”: {
“@type”: “City”,
“name”: “New York”
},
“hasOfferCatalog”: {
“@type”: “OfferCatalog”,
“name”: “Septic Vault and Plumbing Services”,
“itemListElement”: [
{
“@type”: “Offer”,
“itemOffered”: {
“@type”: “Service”,
“name”: “Septic Vault Repair”,
“url”: “https://www.donquix.com/repair”
}
},
{
“@type”: “Offer”,
“itemOffered”: {
“@type”: “Service”,
“name”: “Septic Vault Cleaning”,
“url”: “https://www.donquix.com/cleaning”
}
},
{
“@type”: “Offer”,
“itemOffered”: {
“@type”: “Service”,
“name”: “Plumbing Services”,
“url”: “https://www.donquix.com/plumbing”
}
}
]
}
}
–>
but i have some concerns if you dont mind
1) Its a branch so instead of using organization i used localbusiness, do you think its a good idea?
2) Under LocalBusiness i entered the page exact url as the LocalBusiness URL, is it acceptable?
3) Under LocalBusiness i entered the page title with branch as the LocalBusiness name, is it acceptable?
4) Under LocalBusiness i entered the page description as the LocalBusiness description, is it acceptable?
5) Under LocalBusiness i entered the branch page contract number as the LocalBusiness telephone, is it acceptable?
6) Since i dont have specific price and instead of empty i just put the minimum fee that we charge on our customers, is it fine?
7) I am confused on servicetype vs offercatalog name but i still put the same value as i assume its the same, is it?
8) Then at hasoffercatalog I entered all the services that we offer as all branches offers the same but i also entered the url, do you think its ok?
I wonder if its really acceptable to be this far when it comes to schema as we all know that some schema are not supported on googles rich snippets but still i want to be organized.
Thank you so much for taking time to read this very long question.
Phil says
@Belen: I suggest booking a formal consultation with David. He’s generous in answering comments on this post, but we may be beyond the scope of that. He’s the best there is at Schema implementation, and is worth the investment.
Zain says
The Product Types Ontology: Class Definition for “Magician” (DEPRECATED, DO NOT USE)
Placed at https://www.magicofzain.com/ but am worried that it is not right.
Help?
caroline says
Hi
I’m new to schema and hoped someone could shed some light on what category to use for a hotel listing website. I think hotel may be incorrect. My website is comprised of pages for specific towns/cities and details the hotels/other accommodation options available there such as campsites/guest houses etc. Each property details things such as cost/amenities and where available has an affiliate link to websites such as Booking.com to provide the user with the opportunity to book (that is I do not make bookings for users, I am simply a directory).
Any help would be appreciated. Thanks
Caroline
David Deering says
Hi Caroline. Sounds like schema.org/ItemList might be the best bet for your pages, and you could use the specific schema types such as Hotel, Campground, etc. for each listing or you could just use the more generic LodgingBusiness for all listings, up to you.
Jennifer says
Great article! What about an Appliance Repair business? Did a search on Wikipedia and there is no listing for “Appliance Repai” but there is one for Home Repair. But for an appliance repair business, would this be too general as well?
https://en.wikipedia.org/wiki/Home_repair
David Deering says
Hi Jennifer. Well, keep in mind that there’s a big difference between the *type* of business it is and what services they *offer*. So appliance repair would be a service that the business offers, or in other words, LocalBusiness (or a more appropriate subtype) > makesOffer > itemOffered > Service > name > Appliance Repair.
But I’d definitely not recommend using Home Repair as an additionalType since appliance repair and home repair are two very different things.
Hope that helps.
David
OWDT says
Great info, we are in the process of creating several us and international locations for our business. This is very useful info. I didn’t see web design ore webdesigner in the list… only “graphic designer” so most likely we will be sticking with “@type”: “LocalBusiness”
David Deering says
Hi OWDT. Yes, I would just go with LocalBusiness but also mark up the services that you offer such as web design and so on.
stephen says
Hi ya’ll!
I’ve been scouring the internet on the proper way to add a suite number using schema and have found 0 authroity on the subject. Is it a whole new address line or is it used on the same line in the schema? In my experience it seems as if all sources and citation should be matching exactly in regards to the format of the address presentation. PLEASE HELP 🙁
Phil says
Same line is fine. The formatting doesn’t need to match perfectly from site to site. There is a “close enough.”
Relevant post: https://whitespark.ca/acceptable-google-maps-nap-abbreviations-and-variations/
Ken says
Hi, thanks for the great info! Is productontology.org compatible with JSON-LD? I don’t see examples of it on their site. What is Google’s view point on using productontology? Thanks!
David Deering says
Hi Ken. Yes it is. JSON-LD, like microdata, is just another syntax that can be used to implement the schema.org vocabulary. So whatever properties are used with microdata can also be used in JSON-LD.
Ken says
Thanks David! Is there other syntax exclusive to productontology that I need to consider? The only one, in my situation that comes to mind is adding this (along with the json-ld markup).
“additionalType”: “https://www.productontology.org/id/Personal_injury_lawyer”
Thanks again!
Tyler Stavola SEO says
Is it best to include local business schema on all pages or only Contact page and home page. I don’t want to overuse the wrong schema on every page.
Jason says
what would the schema be for a towing company? I’ve tried searching the internet and cant find anything.
Thanks for any help you can give.
justin says
I’ve been using a tool to generate schema but was stumped on the productontology as it didnt have that option to do automatically. Thank you..the only slight confusion I have left is where you are using https://www.productontology.org/id/BLANK as the url structure on every example except for the one inthat grew block of text with the green text to replace where the url structure is DOC instead of ID?
https://www.productontology.org/doc/Laser_hair_removal
Christian says
Hello, Phil and David,
do you know a way to map Google My Business categories into schemas (type, itemtypes)? Or to extend the schema type with the Productontology-ID.
I’m working on a directory service and need to automate this process.
Many thanks for this great article and the work done.
Christian