How the ClinicStats Score works
20 checks, 5 points each, in four sub-scores of 25. Every rule below is the rule the scanner uses. Rubric version 2.0, last reviewed .
Scoring
Each check returns one of four flags, the way a lab panel does. The score is the sum of points across all 20 checks.
A check we cannot measure, for example Google rating when no Google listing is found, is flagged Not measured. It is left out, and the sub-score is scaled up from the checks that were measured, so a missing data source never counts against you.
| Flag | Meaning | Points |
|---|---|---|
| Normal | Meets the pass rule | 5 |
| Borderline | Meets the borderline rule | 3* |
| Out of range | Meets neither rule | 0 |
| Not measured | Data not available; left out | n/a |
* 3 points unless a check states otherwise below.
Findable
Can patients find you in Google search and on the map?
5 checks × 5 = 25 pts
| Check | Pass (5 pts) | Borderline | Why it matters |
|---|---|---|---|
| Title, meta description and H1title_meta_h1 | The homepage has a <title> of 10–65 characters, a meta description of 50–170 characters, and exactly one non-empty H1. | All three are present but one is outside the length range, or there is more than one H1. (3 pts) | The title and description are what patients see in search results; the H1 tells search engines what the page is about.Source: Google Search Central: Influencing title links and snippets |
| Indexable by search enginesindexable | No noindex in the meta robots tag or X-Robots-Tag header, a sitemap is found (sitemap.xml or listed in robots.txt), and a canonical link is present. | Indexable, but the sitemap or the canonical link is missing. (3 pts) | If search engines are told not to index the page, or cannot find your pages, patients will not find you in search.Source: Google Search Central: Block indexing with noindex |
| Mobile speed and Core Web Vitalspage_speed | Mobile PageSpeed Insights performance score of 90 or more, and where Chrome UX Report field data exists, LCP ≤ 2.5 s, INP ≤ 200 ms and CLS ≤ 0.1. | Lab score of 50–89, or any field metric in the "needs improvement" range (LCP ≤ 4 s, INP ≤ 500 ms, CLS ≤ 0.25). (3 pts) | Most patients search on phones. Slow pages lose visitors, and Core Web Vitals are part of Google page experience signals.Source: web.dev: Web Vitals |
| Secure connection (HTTPS)https | The site loads over HTTPS with a valid certificate, and http:// redirects to https://. | HTTPS works, but the plain http:// address does not redirect to it. (3 pts) | Browsers mark non-HTTPS pages as "Not secure", and HTTPS is a Google ranking signal.Source: Google Search Central: HTTPS as a ranking signal |
| Name, address and phone match Googlenap_gbp | The phone number and street address on the website match the Google Business Profile listing. | One of phone or address matches, the other differs or is missing on the site. (3 pts) | Consistent name, address and phone across the web helps Google trust and rank your local listing.Source: Google Business Profile: Tips to improve your local ranking |
Trusted
Does the site show who you are, who treats patients, and that it is safe?
5 checks × 5 = 25 pts
| Check | Pass (5 pts) | Borderline | Why it matters |
|---|---|---|---|
| Medical business structured dataschema_medical | The page has valid JSON-LD of type MedicalClinic, Physician, MedicalBusiness, Dentist (or a schema.org subtype of these) with name, address and telephone. | Medical JSON-LD is present but missing one of name, address or telephone, or only a generic LocalBusiness/Organization type is used. (3 pts) | Structured data tells Google and AI assistants exactly what kind of practice you are and how to reach you.Source: schema.org: MedicalClinic |
| Providers listed and verified (NPI)providers_npi | The homepage or team page names at least one provider with a credential (MD, DO, NP, PA, DDS, PhD, LCSW, etc.) or the title "Dr.", and at least one name matches an active record in the CMS NPPES NPI Registry. | Providers with credentials are named on the site, but none could be matched in NPPES. (3 pts) | Patients want to know who will treat them. Named, verifiable clinicians are a strong trust signal for people and search engines.Source: CMS NPPES NPI Registry API |
| Google rating and reviewsgbp_reviews | Google Business Profile rating of 4.5 or more with 50 or more reviews. | Rating of 4.0 or more, or 10 or more reviews. (3 pts) | Star rating and review volume are among the first things patients compare, and they influence local map rankings.Source: Google Business Profile: Tips to improve your local ranking |
| Accessibility basicsaccessibility | The <html> element declares a lang, at least 90% of images have alt text, and every visible form input has a label (label element, aria-label or aria-labelledby). Colour contrast is not tested. | Two of the three basics pass, or image alt coverage is 70–89%. (3 pts) | Screen-reader users need alt text, labels and a declared language to use your site; these basics also help search engines.Source: web.dev: Learn Accessibility |
| Third-party ad trackerstrackers | No Meta Pixel, TikTok Pixel, LinkedIn Insight Tag or Google Ads remarketing tag is found in the HTML of the homepage or of a same-domain booking or intake page. Tags injected later by a tag manager are not visible to this check. | A tracker is found on the homepage only, not on a booking or intake page. (3 pts) | Ad trackers can send visitor data to third parties. HHS has issued guidance on tracking technologies on health websites; this check reports exposure only and is not a legal assessment.Source: HHS OCR: Use of Online Tracking Technologies by HIPAA Covered Entities |
Bookable
Can a new patient book, call or check cost in one step?
5 checks × 5 = 25 pts
| Check | Pass (5 pts) | Borderline | Why it matters |
|---|---|---|---|
| Online booking above the foldonline_booking | A booking link or widget (e.g. Zocdoc, NexHealth, Jane, SimplePractice, "Book online") appears in the header, hero, or first part of the mobile HTML. We approximate the first mobile viewport with the top of the DOM and header/hero sections, not a rendered screenshot. | A booking link exists, but only further down the page. (3 pts) | Patients who can book in one tap convert far more often than those who have to call or hunt for a form.Source: web.dev: Mobile-first design |
| Click-to-call phone linkclick_to_call | The page has at least one tel: link. | A phone number is shown as text, but it is not a tappable tel: link. (3 pts) | On a phone, a tappable number turns a visitor into a call in one step.Source: web.dev: Make phone numbers clickable |
| Insurance or self-pay prices statedinsurance_pricing | The site names the insurance plans accepted, or states self-pay prices. | Insurance is mentioned in general terms, but no plans or prices are named. (3 pts) | Cost is a top question for new patients. Clear insurance and pricing information prevents drop-off and wasted calls.Source: CMS: No Surprises Act, good-faith estimates for self-pay patients |
| Patient portal linkpatient_portal | The site links to a patient portal (e.g. MyChart, athenahealth, FollowMyHealth, or a link labelled "Patient portal"). | None. Pass or out of range. | Existing patients look for the portal to message, pay and see results. A clear link reduces phone volume.Source: HealthIT.gov: What is a patient portal? |
| Hours and new-patient informationhours_new_patients | Opening hours are stated (on the page or in structured data) and there is new-patient information (forms, "new patients", "accepting new patients"). | Only one of hours or new-patient information is found. (3 pts) | Patients choosing a new clinic need to know when you are open and whether you are taking new patients.Source: schema.org: openingHoursSpecification |
AI-ready
Can ChatGPT and other AI assistants read, quote and name your clinic?
5 checks × 5 = 25 pts
| Check | Pass (5 pts) | Borderline | Why it matters |
|---|---|---|---|
| AI crawlers allowed in robots.txtrobots_ai | robots.txt does not block GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot or Google-Extended from the site. | One or two of these crawlers are blocked. (3 pts) | AI assistants can only cite and recommend your clinic if their crawlers are allowed to read your site.Source: RFC 9309: Robots Exclusion Protocol |
| Content readable without JavaScriptserver_rendered | The initial HTML (before JavaScript runs) contains at least 150 words of meaningful visible text. | The initial HTML has 50–149 words of visible text. (3 pts) | Many AI crawlers do not run JavaScript. If your content only appears after scripts run, they see an empty page.Source: Google Search Central: Understand JavaScript SEO basics |
| llms.txt filellms_txt | A /llms.txt file exists and is plain text or Markdown with a heading. | No /llms.txt file, or the file has no Markdown heading. This scores 2 of 5 points and never fails, because the file is an emerging proposal and Lighthouse treats a missing file as not applicable. (2 pts) | llms.txt is a proposed standard that gives AI tools a short, clean summary of your site.Source: llms.txt proposal |
| Quotable facts in plain textquotable_facts | The page text states the address, phone number, services offered and insurers accepted. | Two or three of these four facts are stated in plain text. (3 pts) | AI assistants quote plain-text facts. If your address, phone and services are only in images or scripts, they cannot repeat them.Source: Google Search Central: Creating helpful, reliable, people-first content |
| Named in an AI answerai_answer | Asked one sample prompt ("Which {specialty} clinics in {city}, {state} would you recommend?"), ChatGPT with web search names the clinic or its domain. | None. Pass or out of range. | Patients increasingly ask AI assistants for recommendations. This is a single sample, not a ranking, but it shows whether you appear at all.Source: OpenAI: Overview of OpenAI crawlers (OAI-SearchBot) |
What the scan does not do
- It reads public pages only. It does not log in, submit forms or see patient records.
- It tests the address you enter and a few linked pages, not every page of the site.
- The AI answer check is one sampled prompt. AI answers change from one run to the next, so read it as a smoke test, not a ranking.
- The tracker check reports what we found. It is not a legal or HIPAA compliance assessment.
Rubric version 2.0, changelog
v2.0
November 2026
- Replaced the 14-point weighted audit (5 to 10 points per check) with 20 checks of 5 points each.
- Grouped the checks into four sub-scores of 25: Findable, Trusted, Bookable and AI-ready.
- Added provider verification against the CMS NPPES NPI Registry, a third-party ad tracker check, an accessibility basics check and a sampled AI answer check.
- Added a borderline result with partial points, and a "not measured" result that is left out of the score instead of counting as a fail.
- Published the pass rule, borderline rule and source for every check on this page.
v1.x
Until November 2026
- A 14-point technical and conversion audit summing to 100 points, with weights between 5 and 10 points per check.
See these 20 checks run on your site
The report shows the measured value and the reference for each check, so you can see exactly why a flag was set.
Questions about a rule? Tell us. Rules change only with a new rubric version, listed above.