Contact Page Schema Reference (Location)

2025-02-22 by Thomas

6 minutes reading time

Location Or Contact Page Schema

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 the LocalBusiness schema. This indicates the page is primarily about the business location.
    • isPartOf: Should point to the WebSite schema.
    • publisher: Should point to the LocalBusiness 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 the mainEntity of the WebPage is LocalBusiness, it might seem redundant to also include a separate, complete Organization 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 the LocalBusiness information. Alternatively, if the information is identical, you could technically just use LocalBusiness and omit a separate Organization. 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 include Person 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 to LocalBusiness, the mainEntity should point to Organization. This is because the page is about contacting the overall organization, not a specific location.
    • isPartOf: Should point to the WebSite schema.
    • publisher: Should point to the Organization 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 separate LocalBusiness schemas on individual location pages).
  • 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 (with mainEntity pointing to LocalBusiness) and its own LocalBusiness schema with the details for that location.
  • ItemList (Optional – For a Directory): *If your “Contact Us” page acts as a directory listing all your locations, you could (optionally) use ItemList 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 having LocalBusiness 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 with mainEntity pointing to LocalBusiness. Include full LocalBusiness and Organization schema.
  • Multi-Location (General Contact): WebPage with mainEntity pointing to Organization. Include full Organization schema. Don’t include LocalBusiness on this general page; put it on the individual location pages.
  • Breadcrumb: Include on all pages.
  • Website Include and reference.
  • mainEntity is Key: The mainEntity 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

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