XooCode(){

ContactPoint

ContactPoint tells search engines how people can reach an organization. It holds a phone number, email, contact type, available languages, and operating hours. Google reads ContactPoint from Organization and LocalBusiness markup to populate knowledge panel contact details and voice search results for queries like "call [business name]."

Full example of schema.org/ContactPoint json-ld markup

The markup is verified as valid with Rich Results Test from Google.

schema.org/ContactPoint
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://xoocode.com/#organization",
  "name": "Xoo Code Inc.",
  "url": "https://xoocode.com",
  "contactPoint": [
    {
      "@type": "ContactPoint",
      "contactType": "customer service",
      "telephone": "+1-570-555-0142",
      "email": "support@xoocode.com",
      "availableLanguage": ["English", "French"],
      "contactOption": "TollFree",
      "hoursAvailable": {
        "@type": "OpeningHoursSpecification",
        "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
        "opens": "09:00",
        "closes": "17:00"
      }
    },
    {
      "@type": "ContactPoint",
      "contactType": "technical support",
      "telephone": "+1-570-555-0199",
      "email": "techsupport@xoocode.com",
      "availableLanguage": "English",
      "hoursAvailable": {
        "@type": "OpeningHoursSpecification",
        "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
        "opens": "08:00",
        "closes": "20:00"
      }
    }
  ]
}
</script>

contactType values

contactType is a free-text field, not a schema.org enum. Google recognizes specific values: "customer service", "technical support", "billing support", "bill payment", "sales", "reservations", "credit card support", "emergency", "baggage tracking", "roadside assistance", "package tracking". Use these exact lowercase strings. Capitalized or custom values like "General Inquiries" are not recognized by Google and the contact info may not appear in knowledge panels.

telephone format

Use the full international format with country code: "+1-570-555-0142". Google can parse various formats, but the E.164-style international format (starting with +) is the most reliable. Do not use local formats like "(570) 555-0142" because Google cannot determine the country code without it. The hyphen separators are optional but improve readability.

contactOption

contactOption marks special capabilities. "TollFree" means the number is free to call. "HearingImpairedSupported" means TTY/TDD support is available. These are schema.org enum values and must use PascalCase. Google uses contactOption to add badges and filters in search results.

Minimal valid version

The smallest markup that still produces a valid ContactPoint entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/ContactPoint (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Xoo Code Inc.",
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer service",
    "telephone": "+1-570-555-0142"
  }
}
</script>

Google rich results this unlocks

ContactPoint is a structural type. It does not produce a rich result on its own.

Its value comes from combining it with a primary type whose markup earns a rich result (Article, Product, Event, and so on). ContactPoint becomes the trunk that the primary type branches off viamainEntityorbreadcrumb. Include it on every page as the backbone of your markup.

Common ContactPoint mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Custom contactType instead of Google-recognized value

    Wrong
    "contactType": "General Inquiries"
    Right
    "contactType": "customer service"

    contactType is technically free text, but Google only recognizes specific lowercase values: "customer service", "technical support", "billing support", "sales", "reservations". Custom values like "General Inquiries" or "Help Desk" are ignored by Google and the contact info will not appear in knowledge panels.

  2. 02

    Local phone format without country code

    Wrong
    "telephone": "(570) 555-0142"
    Right
    "telephone": "+1-570-555-0142"

    Google needs the country code to route calls correctly, especially for voice search results ("call Xoo Code"). Without the leading + and country code, Google cannot determine whether the number is in the US, UK, or elsewhere. Use the full international format starting with +.

  3. 03

    availableLanguage as a locale code instead of language name

    Wrong
    "availableLanguage": "en-US"
    Right
    "availableLanguage": "English"

    schema.org expects either a Language object or the English name of the language as a plain string. Locale codes like "en-US" or ISO 639-1 codes like "en" are not recognized. Use full language names: "English", "French", "Spanish", "German".

  4. 04

    contactOption with wrong casing

    Wrong
    "contactOption": "toll free"
    Right
    "contactOption": "TollFree"

    contactOption values are schema.org enums and must use PascalCase. The two valid values are "TollFree" and "HearingImpairedSupported". Lowercase or space-separated forms like "toll free" are not recognized.

About the example data

These are the two primary contact points for Xoo Code Inc., the fictional Canadian software company behind the Xoo universe. The customer service line handles orders and general questions about XooTee merchandise. The technical support line handles issues with XooStructured, the company's schema markup IDE.

Comments

Loading comments...

Leave a comment