
Scenario 1: Single-Location Business Schema (Contact-Us)
This is for businesses with one physical location. The “Contact Us” page provides contact details and location information for that single location.
WebPage
: Describes the contact page itself.mainEntity
: Should point to theLocalBusiness
schema. This indicates the page is primarily about the business location.isPartOf
: Should point to theWebSite
schema.publisher
: Should point to theLocalBusiness
schema.- Breadcrumb Ensure accurate breadcrumb schema
LocalBusiness
: Describes the business and its physical location. This is the primary schema type.name
: The official business name.url
: The URL of the contact page (or the homepage, if you don’t have a separate contact page – but a dedicated contact page is better).image
: URL(s) of relevant images (e.g., photos of the business location).address
: Full postal address (PostalAddress
schema).telephone
: Business phone number (international format).email
: Business email address.geo
: Latitude and longitude coordinates (GeoCoordinates
schema).openingHoursSpecification
: Opening hours.sameAs
: URLs of the business’s social media profiles and Google Business Profile.priceRange
: (Optional) General price level.aggregateRating
: (Optional, only if based on verifiable reviews for this location).- contactPoint: May also be useful here.
- Website: Describes the overall website.
Organization
: In this case, because it’s a single location, and themainEntity
of theWebPage
isLocalBusiness
, it might seem redundant to also include a separate, completeOrganization
schema. However, for maximum clarity and to cover all bases, I still recommend including it. It reinforces the overall business identity. Make sure it’s consistent with theLocalBusiness
information. Alternatively, if the information is identical, you could technically just useLocalBusiness
and omit a separateOrganization
. But including both is safer.Person
(Generally Not Needed): Unless your “Contact Us” page specifically highlights a particular person (e.g., “Contact our CEO”), you generally would not includePerson
schema on a contact page. The focus is on the business, not an individual.- BreadcrumbList:
Scenario 2: Multi-Location Schema for Business (Contact-Us)
This applies if you have multiple physical locations, and your “Contact Us” page either:
- Lists all locations: Provides contact information for all your locations.
- Is a directory: Acts as a directory or landing page, linking to separate pages for each individual location.
In either of these cases, the schema approach changes:
WebPage
: Describes the “Contact Us” page itself.mainEntity
: Instead of pointing toLocalBusiness
, themainEntity
should point toOrganization
. This is because the page is about contacting the overall organization, not a specific location.isPartOf
: Should point to theWebSite
schema.publisher
: Should point to theOrganization
schema.- Breadcrumb:
Organization
: Describes the overall business. This is the primary schema type for this general “Contact Us” page.- Include all the usual
Organization
properties (name, description, logo, etc.). - Don’t include a specific address (unless you have a headquarters address that’s different from your individual locations).
- Include general contact information (a main phone number, a general inquiry email).
- You could use the
contactPoint
property to list multiple contact points, one for each location (but this is better handled with separateLocalBusiness
schemas on individual location pages).
- Include all the usual
LocalBusiness
(NOT on the General Contact Page):- The full
LocalBusiness
schema, with all the location-specific details (address, phone, hours, etc.), should not be on the general “Contact Us” page. - Instead, each individual location should have its own dedicated page (e.g.,
/contact/location1/
,/contact/location2/
, or/locations/location1/
,/locations/location2/
). - Each of those location-specific pages would have its own
WebPage
schema (withmainEntity
pointing toLocalBusiness
) and its ownLocalBusiness
schema with the details for that location.
- The full
ItemList
(Optional – For a Directory): *If your “Contact Us” page acts as a directory listing all your locations, you could (optionally) useItemList
schema to structure that list. Each item in the list would then link to the corresponding location page. This is more advanced, and not strictly necessary, but it can be helpful. This is not a substitute for havingLocalBusiness
on the individual location pages.Person
(Generally Not Needed): Same as with the single-location scenario.WebSite
: Describes the overall website. Include, and link.- BreadcrumbList:
Conceptual JSON-LD Examples:
Scenario 1 (Single Location – “Contact Us” Page):
HTML
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebPage",
"@id": "[Contact Page URL]#webpage",
"url": "[Contact Page URL]",
"name": "Contact [Your Business Name]",
"description": "Contact information for [Your Business Name].",
"isPartOf": {
"@type": "WebSite",
"@id": "[Homepage URL]#website"
},
"publisher": {
"@type": "LocalBusiness",
"@id": "[Contact Page URL]#localbusiness"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"@id": "[Contact Page URL]#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "[Homepage URL]"
},
{
"@type": "ListItem",
"position": 2,
"name": "Contact",
"item": "[Contact Page URL]"
}
]
},
"mainEntity": { // <-- Points to LocalBusiness
"@type": "LocalBusiness",
"@id": "[Contact Page URL]#localbusiness"
}
},
{
"@type": "WebSite",
"@id": "[Homepage URL]#website",
"url": "[Homepage URL]",
"name": "[Website Name]",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "[Homepage URL]/?s={search_term_string}"
},
"query-input": "required name=search_term_string"
}
},
{
"@type": "LocalBusiness", // Primary schema for this page
"@id": "[Contact Page URL]#localbusiness",
"name": "[Your Business Name]",
"url": "[Homepage URL]", // Or the Contact Page URL - be consistent
// ... all other LocalBusiness properties ... (address, phone, email, geo, etc.)
"aggregateRating": { // ONLY if verifiably accurate for this location
"@type": "AggregateRating",
"ratingValue": "[Your Rating]",
"reviewCount": "[Number of Reviews]"
}
},
{
"@type": "Organization",
"@id": "[Homepage URL]#organization",
// ... Organization details ...
}
]
}
</script>
Scenario 2 (Multi-Location – General “Contact Us” Page):
HTML
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebPage",
"@id": "[General Contact Page URL]#webpage",
"url": "[General Contact Page URL]",
"name": "Contact [Your Company Name]",
"description": "Contact information for [Your Company Name] locations.",
"isPartOf": {
"@type": "WebSite",
"@id": "[Homepage URL]#website"
},
"publisher": {
"@type": "Organization",
"@id": "[Homepage URL]#organization"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"@id": "[Contact Page URL]#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "[Homepage URL]"
},
{
"@type": "ListItem",
"position": 2,
"name": "Contact",
"item": "[Contact Page URL]"
}
]
},
"mainEntity": { // <-- Points to Organization (NOT LocalBusiness)
"@type": "Organization",
"@id": "[Homepage URL]#organization"
}
},
{
"@type": "WebSite",
"@id": "[Homepage URL]#website",
"url": "[Homepage URL]",
"name": "[Website Name]",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "[Homepage URL]/?s={search_term_string}"
},
"query-input": "required name=search_term_string"
}
},
{
"@type": "Organization",
"@id": "[Homepage URL]#organization",
"name": "[Your Company Name]",
// ... general Organization details ... (NO specific address)
"contactPoint": [ // Example - if you list multiple contact points here
{
"@type": "ContactPoint",
"telephone": "[Phone Number 1]",
"contactType": "customer service",
"areaServed": "[Region/City 1]"
},
{
"@type": "ContactPoint",
"telephone": "[Phone Number 2]",
"contactType": "customer service",
"areaServed": "[Region/City 2]"
}
// ... more contact points if needed
]
}
// NO LocalBusiness schema on this general contact page.
// LocalBusiness would be on the *individual location pages*.
]
}
</script>
Key Takeaways:
- Single Location:
WebPage
withmainEntity
pointing toLocalBusiness
. Include fullLocalBusiness
andOrganization
schema. - Multi-Location (General Contact):
WebPage
withmainEntity
pointing toOrganization
. Include fullOrganization
schema. Don’t includeLocalBusiness
on this general page; put it on the individual location pages. - Breadcrumb: Include on all pages.
- Website Include and reference.
mainEntity
is Key: ThemainEntity
property is how you tell search engines the primary focus of the page.
Remember to replace the bracketed placeholders with your actual website and business information. And always validate your schema using the Google Rich Results Test.
Related Posts
- This is the end of the road. Click the Read Our Blogs button below to get back to the main blogs section.
Frequently Asked Questions about Contact Page Schema Reference (Location)
Listed below are some of the main areas you should have an understanding on about Contact Page Schema Reference (Location).