Ryan Lutz
Ryan Lutz

Reputation: 245

Schema Data for a School

Best Schema Practiced for School with Subdivisions

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:

  1. is this a good method of doing this and in line with best schema practices?
  2. When using schema, what is the best method of associating a subdivision of a school with the school?
  3. Would it be appropriate to use the schema contactPoint to mark up each of the names and phone numbers on the contact page?
  4. Are there any opportunities I should take advantage of or pitfalls I should avoid?

I have included JSON-LD code for what I'm thinking the code for some of these pages might look like.

Home Page:

<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>

Preschool Page

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

Answers (1)

Kaushal Gajjar
Kaushal Gajjar

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

Related Questions