With Google and others increasingly serving information in new formats on both mobile and desktop search engines (e.g. product, service or company “cards”), maintaining accurate and up-to-date structured data is a must as an SEO best practice.
Many businesses fit neatly into one of the organization types provided by Schema.org, but we encountered a case of a business that’s dependent on both local and national SEO results (but not large enough to completely separate corporate and retail). For this reason, we wanted to maintain a parent Organization for organic searches while still marking up individual locations data to improve their local SEO. It was important to us to maintain an explicit relationship between locations and the company as a larger entity.
We settled on creating a parentOrganization > LocalBusiness hierarchy, allowing us to define information for the larger organization & homepage while optimizing location pages. Below is an example of the JSON-LD script that we used for both the parent organization and the local listings.
Other situations where this could be useful include:
- Defining Headquarters / Corporate Offices and service locations
- Websites that do business both online and in brick and mortar locations
Homepage:
The script below is pared down to basic information and defines the umbrella business information:
<script type="application/ld+json">{
"@context": "http://schema.org",
"@type": "Organization",
"name": "Your Parent Company Name",
"logo": "https://yourParentCompany.com/LOGO.png",
"url": "https://yourParentCompany.com",
"sameAs": [
"https://www.facebook.com/yourParentCompany/", “https://www.twitter.com/yourParentCompany/”
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-800-111-1111",
"contactType": "Sales",
"email": "[email protected]",
"contactOption": "TollFree",
"areaServed": "United States",
"availableLanguage": "English"
},
"address": {
"@type": "PostalAddress",
"addressCountry": "United States",
"addressLocality": "Los Angeles",
"addressRegion": "CA",
"postalCode": "90230",
"streetAddress": "1025 mainOffice Street"
}
}</script>
Location Pages:
The goal here is to markup location data, without abandoning the “parent” organization, done so by creating each location as a LocalBusiness subtype of the parentOrgnanization.
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "LocalBusiness",
"@id": "https://yourParentCompany.com/location-1/",
"name": "Your Company Name - Location Number 1",
"description": "Your Company Location Number 1, Providing the best goods and or services to the area since mid-March of 1699 BC.",
"image": [
"https://yourParentCompany.com/LOGO.png"
],
"areaServed": "serviceArea",
"url": "https://yourParentCompany.com",
"telephone": "+1-650-801-3333",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 localBusiness Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94117",
"addressCountry": "US"
},
"parentOrganization": {
"@type": "Organization",
"@id": "https://yourParentCompany.com",
"name": "Your Parent Company Name",
"description": "Your Parent Company Name: Providing local and international services since Mid January of 1699 BC.",
"image": [
"https://yourParentCompany.com/LOGO.png"
],
"url": "https://yourParentCompany.com/",
"telephone": "+1-800-111-1111"
}
}
</script>
Needless to say, the above code is just a starting point for creating JSON-LD markup for businesses with similar needs. For example, one of our key goals was to display each locations’ reviews on SERPs, and if you’re adding or updating your structured data this is a great time to add any such data to the localbusiness JSON.
Once you’ve added the data, make sure to confirm that Google’s seeing the right values with their testing tool.
Have other ideas, improvements, questions? Let us know!