On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

contactPoint

contactPoint · Recommended

Appears in

Organization

What is it?

contactPoint is a structured way to describe how an organization can be contacted, including the type of contact, phone number or email, hours of availability, and supported languages. It is more structured than plain telephone or email fields because it groups contact information with context, who the contact is for, when it is available, and what language it supports.

The field expects a ContactPoint object (or an array of ContactPoint objects for multiple contact channels).

Why this matters for AEO

When a user asks "how do I contact [company] for support?" or "what is [company]'s sales number?", AI answer engines benefit from knowing which type of contact corresponds to which purpose. A single phone number is ambiguous, contactPoint with contactType: "customer support" removes that ambiguity.

Google's Knowledge Panel surfaces contact information including phone numbers and contact types. For voice assistants responding to "call [company]'s customer service", the contactType field routes the intent correctly. Organizations with multiple departments (support, billing, sales) benefit most from contactPoint arrays, which give AI systems the granularity to answer department-specific contact queries.

What the specs say

Schema.org:contactPoint expects ContactPoint. "A contact point for a person or organization." [Source: https://schema.org/contactPoint]

Google: Recommended for Organization. "The best way for a user to contact your business, if applicable." [Source: https://developers.google.com/search/docs/appearance/structured-data/organization]

ContactPoint sub-fields

  • contactType — Text
  • telephone — Text
  • email — Text
  • faxNumber — Text
  • availableLanguage — Language or Text
  • contactOption — ContactPointOption
  • hoursAvailable — OpeningHoursSpecification
  • areaServed — Text or AdministrativeArea
  • productSupported — Text

Format and code

Single contact point:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Basecamp",
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "telephone": "+18005550100",
    "email": "support@basecamp.com",
    "availableLanguage": "English"
  }
}

Multiple contact points:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Shopify",
  "contactPoint": [
    {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "telephone": "+18888168123",
      "availableLanguage": ["English", "French", "Spanish"],
      "contactOption": "TollFree"
    },
    {
      "@type": "ContactPoint",
      "contactType": "sales",
      "telephone": "+18888160783",
      "availableLanguage": "English"
    }
  ]
}

With hours of availability:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "HubSpot",
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "telephone": "+18884827768",
    "hoursAvailable": {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "18:00"
    }
  }
}

Invalid, missing contactType:

{
  "@type": "ContactPoint",
  "telephone": "+15555550100"
}

contactType is what differentiates contactPoint from a plain telephone field. Always include it.

Webflow implementation

Static pages

Add to Site Settings > Custom Code for the site-wide Organization schema:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Company",
  "url": "https://yoursite.com",
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "telephone": "+15555550100",
    "email": "support@yourcompany.com",
    "availableLanguage": "English"
  }
}
</script>

CMS template pages

Contact points are typically static per organization. For multi-location CMS sites, each location page may have its own contact point using a CMS embed with bound fields for telephone and email.

In Schema HQ

contactPoint is emitted a ContactPoint builder in the Organization schema configuration. Select the contact type, enter telephone and email, choose supported languages, and Schema HQ generates the correct nested ContactPoint JSON-LD.

Real examples

No live crawl examples were captured. Shopify :

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Shopify",
  "url": "https://shopify.com",
  "contactPoint": [
    {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "telephone": "+18888168123",
      "contactOption": "TollFree",
      "availableLanguage": ["English", "French"]
    },
    {
      "@type": "ContactPoint",
      "contactType": "sales",
      "telephone": "+18888160783"
    }
  ]
}

Related fields

FAQ

What values are valid for contactType?

Schema.org supports a controlled vocabulary for contactType. Recognized values include: "customer support", "technical support", "billing support", "bill payment", "order support", "subscriptions", "credit card support", "emergency", "baggage tracking", "reservations", "sales". Use values from this list for maximum interoperability.

Is contactPoint better than having separate telephone and email on Organization?

Both can coexist. telephone and email directly on Organization are simpler and sufficient for basic contact information. contactPoint adds semantic context (contact type, language, hours). For organizations with multiple contact channels or types, contactPoint provides granularity that plain telephone cannot.

Can I have more than one contactPoint?

Yes. Provide an array of ContactPoint objects for each distinct contact channel. Google's documentation acknowledges multiple contact points. Each should have a different contactType to avoid ambiguity.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Generate schema for your site with Schema HQ

Get Early Access

Get Early Access

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us