Reputation: 245
I am interested in best SEO practices for creating schema markup for a School that has subdivisions: Preschool, ElementarySchool, MiddleSchool, and HighSchool. My plan initially is to create JSON-LD for each of the division pages and the home page.
My questions are:
I have included JSON-LD code for what I'm thinking the code for some of these pages might look like.
<script type='application/ld+json'>
{
"@context": "http://schema.org/",
"@type": "School",
"address": {
"@type": "PostalAddress",
"addressCountry": "Country",
"addressLocality": "City",
"addressRegion": "State",
"postalCode": "12345",
"streetAddress": "123 School St",
"telephone": "+15432190100",
"description": "This is a very good school"
},
"areaServed": "City",
"name": "School",
"url": "https://www.school.edu",
"sameAs": [
"https://www.facebook.com/school",
"https://www.youtube.com/user/school",
"http://twitter.com/school",
"https://www.instagram.com/school/"
]
}
</script>
Note: The phone number and name are different but the address is the same. Would this be duplicate or spammy in Google's eyes?
<!--Preschool-->
<script type='application/ld+json'>
{
"@context": "http://schema.org/",
"@type": "Preschool",
"address": {
"@type": "PostalAddress",
"addressCountry": "Country",
"addressLocality": "City",
"addressRegion": "State",
"postalCode": "12345",
"streetAddress": "123 School St",
"telephone": "+15432190101",
"description": "School has a very good preschool"
},
"areaServed": "City",
"name": "School - Preschool",
"url": "https://www.school.edu/preschool",
"parentOrganization": {
"@type": "School",
"name": "School"
}
}
</script>
Upvotes: 1
Views: 2818
Reputation: 81
I tried to provide you the best solution with all possibilities.
Let's clear your doubts first.
Ans1: You are going in the right direction though structure needs to be modified as shown in below code.
Ans2: For implementing Subdivision, the best method is to use Educational Organization Schema which provides SubOrganization.
Ans3: You can check the use of contactPoint in your case in below given code.
Ans4: There aren't any pitfalls if you are doing that properly.
Below JSON-LD contains all the structure that you might require like School, PreSchool, MiddleSchool etc.
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EducationalOrganization",
"name" : "School",
"address": {
"@type": "PostalAddress",
"addressCountry": "IN",
"addressLocality": "City",
"addressRegion": "State",
"postalCode": "000000",
"streetAddress": "#310 Example",
"telephone": "+15432190100",
"description": "This is a very good school"
},
"areaServed": "City",
"@id" : "http://www.example.com/homepage-url",
"url": "http://www.example.com/",
"logo": "http://www.example.com/images/logo.png",
"email" : "[email protected]",
"sameAs": [
"https://www.facebook.com/example",
"http://twitter.com/example",
"https://www.instagram.com/example"
],
"subOrganization" : [
{
"@type": "Preschool",
"name" : "Preschool 1",
"telephone" : "+1-877-672-7777",
"@id" : "http://www.example.com/preschool-1",
"url": "http://www.example.com/preschool-1",
"address":{
"@type":"PostalAddress",
"streetAddress":"#310 Example",
"addressLocality":"City",
"addressRegion":"State",
"postalCode":"000000",
"addressCountry":"IN"
},
"contactPoint" : [
{ "@type" : "ContactPoint",
"telephone" : "+1-877-746-0909",
"contactType" : "Customer Service",
"contactOption" : "TollFree",
"areaServed" : "IN"
} ,
{ "@type" : "ContactPoint",
"telephone" : "+1-877-746-0606",
"contactType" : "Bill Payment",
"contactOption" : "TollFree",
"areaServed" : "IN"
}
]
},
{
"@type": "Preschool",
"name" : "Preschool 2",
"telephone" : "+1-877-672-8888",
"@id" : "http://www.example.com/preschool-2",
"url": "http://www.example.com/preschool-2",
"address":{
"@type":"PostalAddress",
"streetAddress":"#310 Example",
"addressLocality":"City",
"addressRegion":"State",
"postalCode":"000000",
"addressCountry":"IN"
},
"contactPoint" : [
{ "@type" : "ContactPoint",
"telephone" : "+1-877-746-3030",
"contactType" : "Customer Service",
"contactOption" : "TollFree",
"areaServed" : "IN"
} ,
{ "@type" : "ContactPoint",
"telephone" : "+1-877-746-2020",
"contactType" : "Bill Payment",
"contactOption" : "TollFree",
"areaServed" : "IN"
}
]
},
{
"@type": "MiddleSchool",
"name" : "MiddleSchool 1",
"telephone" : "+1-877-672-9999",
"@id" : "http://www.example.com/middleschool-1",
"url": "http://www.example.com/middleschool-1",
"address":{
"@type":"PostalAddress",
"streetAddress":"#310 Example",
"addressLocality":"City",
"addressRegion":"State",
"postalCode":"000000",
"addressCountry":"IN"
}
},
{
"@type": "MiddleSchool",
"name" : "MiddleSchool 2",
"telephone" : "+1-877-672-0000",
"@id" : "http://www.example.com/middleschool-2",
"url": "http://www.example.com/middleschool-2",
"address":{
"@type":"PostalAddress",
"streetAddress":"#310 Example",
"addressLocality":"City",
"addressRegion":"State",
"postalCode":"000000",
"addressCountry":"IN"
}
}
]
}
</script>
The above code is also verified with Google Structured Data Testing Tool. Attaching the screenshot for your reference.
Don't worry about "Uncategorized Error", it's likely a Bug in Google Schema Tool. More info about that error here.
Hope it works :)
Upvotes: 4