BlogFindings

ContactPoint schema: 119 of the 191 home pages with a clickable phone number named no telephone in their markup

Lantad requested the robots.txt and then the home page of all 1,419 hostnames in this repository's two committed corpus seed files on 30 September 2026 as LantadBot, following redirects and executing no JavaScript. 1,074 answered HTTP 200 with an HTML content type. 191 of those offered a visitor a clickable tel: link and 119 of the 191 carried no telephone property anywhere in their JSON-LD. 512 pages declared a node of an organization type and 251 of those attached no telephone, no email and no contactPoint to it.

18 min read Lantad

This run counted which of the two each home page shipped. The question matters for an AI crawler in a narrow way that is worth stating before any figure: an answer engine asked how to contact an organisation has to produce a string, and the cheapest reliable place to get one is a labelled field rather than a guess at which of the numbers scattered through a footer is the main line. Lantad requested the robots.txt and then the home page of all 1,419 hostnames in this repository's two committed corpus seed files on 30 September 2026, sent as its own declared crawler user agent, with redirects followed, a twenty second timeout, one attempt per URL, from one network location, and no JavaScript executed. 14 hostnames served a robots.txt that disallows this scanner at the site root and a further 52 answered that request with a 5xx status, which RFC 9309 treats as an unavailable file a crawler should read as disallowing everything, so 66 hostnames were dropped unread. 1,074 of the remaining 1,353 answered HTTP 200 with an HTML content type, and those 1,074 are the denominator throughout.

In short

  • Lantad read 1,074 home pages on 30 September 2026 with no JavaScript executed. 191 of them offered a visitor a clickable tel: link, and 119 of those 191 declared no telephone property anywhere in their JSON-LD, with 115 of the 119 carrying no telephone or email in microdata either.
  • ContactPoint schema is free text in the field that classifies it. The 288 ContactPoint nodes on 165 home pages carried 54 distinct contactType spellings, 46 of which were used exactly once, and the two most common split one idea in two: 114 nodes said customer support and 76 said customer service.
  • 512 of the 1,074 pages declared a node of an organization type and 251 of those 512 attached none of telephone, email or contactPoint to it, so the markup named the organisation and then declined to say how to reach it.
  • 72 pages declared both a clickable number and a number in their markup, and on 7 of the 72 the two named different numbers, including nami.org, whose markup gives 703-524-7600 while the page links tel:+18009506264, and grandstreetdental.com, whose markup gives (917) 257-9006 while all three of its links give 718-942-9942.
  • Google's Organization structured data documentation, carrying Last updated 2026-09-08 UTC, lists telephone, email, address and contactPoint as recommended and states that there are no required properties, so none of the absences counted here is a defect against any published rule.
StageCountWhat happened
Hostnames requested1,419The committed corpus, an editorial frame rather than a random draw
robots.txt disallowed this scanner at the root14Home page not requested for these
robots.txt answered 5xx, read as disallow per RFC 930952Home page not requested for these either
Answered 200 with an HTML content type1,074The denominator for every figure below
Carried at least one ld+json block that parsed615622 carried a block; on 7 none of them parsed
Declared a node of an organization type51247.7 percent of the pages read
Offered a clickable tel: link19117.8 percent of the pages read
Declared a telephone property in JSON-LD18217.0 percent of the pages read
Had a tel: link and no telephone in JSON-LD11962.3 percent of the 191
Had neither a tel: link nor a telephone property77372.0 percent of the pages read
One GET of https://<host>/robots.txt and then one of https://<host>/ for each hostname, sent as LantadBot/1.0 (+https://lantad.co/bot) with redirects followed and a twenty second timeout, from one network location, with no JavaScript executed and no stylesheet fetched. Measured by Lantad on 30 September 2026 across the 1,419 hostnames in worker/seeds/corpus-seeds-industry.json and worker/seeds/corpus-seeds-platform.json.

What is ContactPoint schema, and what actually reads it?

The definition is one sentence long. The schema.org page for ContactPoint calls it a contact point, for example a Customer Complaints department, and defines nine properties on it: areaServed, availableLanguage, contactOption, contactType, email, faxNumber, hoursAvailable, productSupported and telephone. It is used on Organization, Person and a handful of other types, so the normal shape is an Organization node with one or more contact points hanging off it, each one classified by what it is for.

The classification is the part that matters for anything trying to extract a main number, and the specification is deliberately loose about it. The expected type of contactType is Text. Its description says that a person or organization can have different contact points, for different purposes, gives a sales contact point and a PR contact point as examples, and says the property is used to specify the kind of contact point. There is no enumerated list of permitted values anywhere on that page. Whatever an author types is valid, which is the root of the count in a later section.

Google is the one operator that publishes a position detailed enough to quote. Google's documentation on Organization structured data, carrying Last updated 2026-09-08 UTC, lists telephone, email, address and contactPoint among the properties it supports, describes contactPoint as the best way for a user to contact your business, if applicable, and asks for the country code and area code on a phone number meant to be the primary contact method. It also says, in its own words, that there are no required properties, and that an author should instead add the properties that apply to their organization. That sentence is load bearing for everything below: not one of the absences counted in this post is a defect against a published rule.

The honest frame follows from that, and it is the same frame as the canonical tag run earlier the same day. No crawler was observed reading a contact point here, because no crawler was observed reading anything. This run fetched pages. It held no server logs, inspected nobody's retrieval pipeline, and made no request from any address other than its own. Google's own stated use is knowledge panels rather than AI answers, and no vendor documentation read in this run says whether an answer engine prefers a labelled telephone property to a number it finds in prose. So the consequence of the gap below is undocumented rather than known, and a post that told you a missing telephone property costs you citations would be inventing the part that is missing.

  • ContactPoint defines a contact channel and its purpose schema.org/ContactPoint, read 30 September 2026. Nine properties, among them contactType, telephone, email, areaServed and availableLanguage.
  • contactType is free text Its expected type is Text and the page enumerates no permitted values, giving only a sales and a PR contact point as examples.
  • Google supports telephone, email, address and contactPoint Google's Organization documentation, Last updated 2026-09-08 UTC. All are listed as recommended and the page states there are no required properties.
  • Any of it is required Neither source requires a contact channel. A page that omits one is not in breach of anything, which is why this post counts absences rather than errors.
  • An AI answer engine prefers a labelled telephone to one in prose No vendor documentation read in this run addresses it. Google's stated use is knowledge panels, not AI answers. Undocumented, not disproved.
  • This run observed a crawler reading a contact point It did not. Two GETs per host from one network location, no server logs held, no retrieval pipeline inspected.
What is and is not documented about machine consumption of ContactPoint, as read at the named sources on 30 September 2026. Present means a published page commits to the behaviour, not that the behaviour carries any particular weight.

119 of 191 home pages with a clickable phone number named no telephone

191 of the 1,074 pages carried at least one anchor whose href begins with tel:, which is the ordinary way a site makes a number tappable on a phone. 182 declared a telephone property somewhere in their JSON-LD. Those two numbers are close enough to look like the same set of sites, and they are not. Only 72 pages did both.

Split four ways, the 1,074 pages divide into 72 that shipped a number in both places, 119 that gave a visitor a clickable number and a machine nothing, 110 that did the reverse, and 773 that carried neither. The 119 is the figure worth carrying away. On each of those pages a person can tap a number that the site clearly considers its number, and anything extracting without rendering has to find it in the footer text and decide for itself whether it is the switchboard, a regional office or a fax line. 115 of the 119 carried no telephone or email in microdata either, so this is not a syntax choice: those pages express the number once, to a human, and nowhere else.

The absence is not explained by sites having no structured data. 37 of the 119 had markup naming an organisation and left the phone number out of it, which is the version of the finding that is hardest to read as an oversight of scale. salesforce.com declares one Organization node, no telephone property anywhere, and links tel:18006649073. aig.com declares fifteen Organization nodes and one PostalAddress across two ld+json blocks, no telephone property in any of them, and links tel:8002255244. Others in that set are clevelandclinic.org, kaiserpermanente.org, plannedparenthood.org, eurostar.com, travelers.com, hdfcbank.com, lemonade.com and mcgill.ca.

The 110 pages that did the reverse are worth a line, because they show the same split from the other side rather than a better practice. nike.com is the extreme case: its home page declares 51 ContactPoint nodes carrying 51 telephone properties, one per market, and offers no tel: link at all. A machine reading that page is better served than a visitor on a phone. That is the mirror of the 119 and it comes from the same cause, which is that the two surfaces are maintained separately. The pattern is the one the 141 of 382 home pages with no structured data in the raw HTML and the 70 of 146 markup values that were not on the page both describe: the markup and the page are two documents, and only one of them has a reader who notices.

Where the number appearsPagesShare of 1,074What it means for an extractor
Both a tel: link and a telephone property726.7 percentReadable either way, though 7 of the 72 disagree
A tel: link only11911.1 percentA person can tap it, a machine must guess
A telephone property only11010.2 percentA machine can read it, a visitor cannot tap it
Neither77372.0 percentNo phone number offered on the home page at all
Every one of the 1,074 home pages that answered HTTP 200 with an HTML content type, classified by whether a phone number was reachable by a visitor (an anchor with a tel: href in the delivered HTML) and by a machine (a telephone property anywhere in a parseable application/ld+json block). Measured by Lantad on 30 September 2026.

251 of 512 organization nodes carried no contact channel at all

622 of the 1,074 pages carried at least one application/ld+json block and on 615 of them at least one block parsed as JSON, a ratio consistent with the 117 of 612 home pages whose JSON-LD carried a defect measured earlier on this corpus. 512 of the 1,074 declared at least one node of an organization type, counting Organization and the business, government, education, medical and media subtypes but not Place or its subtypes.

Of those 512, exactly 251 attached none of telephone, email or contactPoint to the organization node. That is the quietest finding in this run and probably the most general. The markup answers who this is, which is the job the 103 of 385 pages with JSON-LD that named no organization run was about, and then stops short of how to reach them, even though the same specification offers three separate ways to say it and Google's documentation recommends all three. Identity is the property entity confidence turns on, and the organisation fields that do get filled tend to be the ones a template can fill without asking a person: a logo URL, which on 44 of 433 declared URLs returned no image at all, and a sameAs reference, which 310 of 317 organisations pointed at a social profile. A telephone number is the field that needs somebody to decide which number is the right one to publish, and on 251 pages nobody did.

Where the gap sits is more interesting than its size, and it does not sit where the earlier structured data runs found their absences. Those tracked the platform: a site builder emits markup and a hand built content management system does not. This one tracks the sector, and specifically whether an organisation's phone number is a thing people are meant to use. Healthcare is the worst case by a distance: 42 of its 94 readable pages offered a clickable number, the highest rate of any stratum, and only 21 declared one in markup, leaving 30 pages in the gap. That is a third of the entire finding from one stratum, and it is the stratum where a phone number is most likely to be the point of the page. dana-farber.org, nyulangone.org, chop.edu, charite.de, hse.ie and dkfz.de are all in it.

At the other end, static-docs and spa-startups produced no gap at all, for the plain reason that 0 of their 75 readable pages offered a phone number to anybody. A documentation site and a single page application startup do not publish a switchboard, so there is nothing to be inconsistent about. The small business strata sit in the middle and lean the other way: wix-squarespace declared more numbers in markup (25) than it made clickable (14), which is what a site builder template filled in from a settings form looks like, and matches what the 2 of 172 home pages carrying machine readable opening hours run found about which fields a template fills and which it leaves.

StratumPages readtel: linktelephone in markupGap
healthcare94422130
finance93212015
education103151012
wordpress-smb37291812
government85848
saas11515247
webflow421046
media-local30946
travel797115
wix-squarespace5414254
framer31523
bubble-nocode42323
saas-marketing37433
ecommerce655182
shopify-dtc34232
news582121
spa-startups44010
static-docs31000
Phone number presence on the 1,074 home pages that answered, grouped by the corpus stratum each hostname is filed under in the two committed seed files. Strata are editorial: a site is filed by what its pages are built to do or what it is built on, and this is not a random sample of the web. Gap counts pages with a tel: link and no telephone property. Measured by Lantad on 30 September 2026.

54 spellings of contactType, and 46 of them used exactly once

165 of the 1,074 pages declared at least one ContactPoint node and there were 288 nodes in total, so the type is present on a sixth of the pages read. On the evidence of this corpus authors take the contactType property seriously: only 7 of the 288 nodes omitted it. What they do not do, because nothing asks them to, is agree on what to write in it.

The 281 nodes that declared a contactType used 54 distinct values after normalising whitespace and case. 46 of the 54 were used exactly once. The two most common are the same idea spelled two ways: 114 nodes say customer support and 76 say customer service, and nothing in the specification prefers either, because as the section above establishes there is no enumerated list to prefer from. Then sales at 31 and technical support at 6, and after that a long tail of one-offs: general inquiries, membership and general enquiries, corporate office, public records, package tracking, news desk, investor relations, claims, reservations, tax consultation scheduling.

Several of the singletons are not English at all, which is the case that makes the design problem concrete rather than pedantic. Swiss and Turkish sites in the corpus shipped sanitat, tox-zentrum, telefonzentrale fur notfallmassige uberweisungen and musteri hizmetleri as contactType values. Each is a perfectly good description of what the number is for. None is a token any extractor could have a rule for. A consumer that wants the main switchboard from one of these pages has to fall back to guessing from the order the nodes appear in, which is exactly the position it was in on the 119 pages that declared no telephone property at all. The field is populated and still not usable as a key, in the way an @id that two different things reuse is populated and not usable as an identifier.

Two smaller counts belong with this. 8 of the 288 nodes declared a contactType and then carried no telephone, no email and no url: wur.nl, mistral.ai, evolvehealing.net, leapingai.com, carecycle.ai, optainhealth.com, techwolf.ai and highlandscurrent.com each ship a contact point that names a purpose and offers no way to make contact. And the distribution of nodes per page is lopsided in a way worth knowing before quoting the 288: 124 pages declared one, 24 declared two, and a single page, nike.com, declared 51, so a fifth of every ContactPoint node in this run came from one home page.

contactType valueNodesNote
customer support114The most common value, and not the specification's example
customer service76The same idea as the row above, spelled differently
sales31One of the two examples schema.org gives
technical support6The only other value reaching six nodes
newsroom contact2Two news sites, independently
public engagement2Two government sites, independently
credit card support2Product specific, on one banking group
careers2A recruitment channel rather than a customer one
46 further values, each used once46Including four that are not in English
No contactType declared7The node exists and says nothing about its purpose
Every contactType value that appeared more than once across the 288 ContactPoint nodes found on 165 home pages, with the tail and the omissions counted. Values were normalised for case and whitespace before grouping, and are quoted as returned otherwise. Measured by Lantad on 30 September 2026.

Written by

Lantad

Published .

A phone number on a web page usually exists twice. Once as something a person can see and tap, which on a modern site means an anchor whose href begins with tel:, and once as something a machine can lift without reading the page, which means a telephone property inside the structured data in the head. The two are written by different people at different times for different reasons, and nothing on the page complains when only one of them is there.

Common questions

What is ContactPoint schema?

ContactPoint is a schema.org type for a contact channel and its purpose. The schema.org page defines nine properties on it, among them contactType, telephone, email, areaServed and availableLanguage, and it normally hangs off an Organization or Person node. Google's Organization documentation, Last updated 2026-09-08 UTC, lists contactPoint as recommended and describes it as the best way for a user to contact your business. Nothing about it is required.

Does a missing telephone property hurt AI visibility?

Nothing measured here shows that it does, and this post does not claim it. No crawler was observed reading a contact point during this run, no server logs were held, and no vendor documentation read in this run says whether an answer engine prefers a labelled telephone property to a number it finds in prose. What can be said is narrower: on the 119 pages with a clickable number and no telephone property, anything extracting without rendering has to pick a number out of the page text and decide for itself which one is the main line.

Why measure home pages rather than contact pages?

Because one page per hostname was requested and it was always the home page, which is the main limit on every figure here. A site may well declare a full ContactPoint block on a dedicated contact page that this run never asked for, so the 119 counts home pages that link a number without marking it up, not organisations whose contact details are unreadable by machines anywhere. Reading contact pages would need a discovery step this run did not perform.

How were the numbers on each page counted?

A visitor facing number means at least one anchor in the delivered HTML whose href begins with tel:. A machine readable number means a telephone property inside an application/ld+json block that parsed as JSON. No JavaScript was executed and no stylesheet was fetched, so a number injected after load is recorded as absent and the 119 is a floor rather than an estimate. The corpus is an editorial sampling frame, so every rate supports a statement about these 1,419 hostnames and nothing wider.

See what AI can read on your site

Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.