Guide

Medical Schema Markup Checklist: FAQ, Physician, and AI-Readable Structured Data

Guide·October 13, 2026·9 min read·By The Doc Mirror Team
medical-schema-markup-checklist

Medical Schema Markup Checklist: FAQ, Physician, and AI-Readable Structured Data

Meta title: Medical Schema Markup Checklist for 2026 Meta description: A practical checklist for Physician, MedicalBusiness, and FAQPage schema, including what AI assistants can actually read from structured data. URL slug: medical-schema-markup-checklist


This checklist covers the exact schema markup a doctor's website needs, with code you can copy and steps to test it. It is a companion to our guide on why schema matters in the first place, so this page skips the theory and goes straight to implementation.

You will find three schema types worth prioritizing: Physician, MedicalBusiness, and FAQPage. Each one has a real code example below, not just a description. You will also find the validators to run before you trust any of it, and the mistakes that show up most often on doctor websites.

Schema markup is one piece of a larger picture. It sits alongside crawlability and content quality as part of SEO for doctors overall. Treat this checklist as the setup phase. Once the code is live and validated, the ongoing work is keeping it accurate as your practice changes.

Physician and MedicalBusiness schema: the basics

Every doctor website needs two schema types at minimum: Physician and MedicalBusiness (or its child type, MedicalClinic). Physician describes you as a clinician. MedicalBusiness describes your practice as a physical, bookable location.

Here is a working Physician example. Replace every value with your own facts before publishing.

{
  "@context": "https://schema.org",
  "@type": "Physician",
  "name": "Dr. Ravi Kumar",
  "medicalSpecialty": "Cardiovascular Disease",
  "url": "https://example-clinic.com",
  "image": "https://example-clinic.com/images/dr-ravi-kumar.jpg",
  "telephone": "+1-555-010-2000",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "400 Heart Center Drive",
    "addressLocality": "Denver",
    "addressRegion": "CO",
    "postalCode": "80202",
    "addressCountry": "US"
  }
}

Here is a working MedicalClinic example for the same practice.

{
  "@context": "https://schema.org",
  "@type": "MedicalClinic",
  "name": "Denver Heart Clinic",
  "medicalSpecialty": "Cardiovascular",
  "telephone": "+1-555-010-2000",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "400 Heart Center Drive",
    "addressLocality": "Denver",
    "addressRegion": "CO",
    "postalCode": "80202",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "17:00"
    }
  ]
}

Both blocks go inside a tag in the page's or ``. They do not change how the page looks to a patient. Confirm every field against schema.org's own definitions for Physician and MedicalBusiness, since property names are case-sensitive and unofficial fields get ignored.

FAQPage schema and its current status

FAQPage schema marks up a list of real questions and answers already visible on the page. The mainEntity array holds each question, and each question holds one acceptedAnswer.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need a referral to see a cardiologist?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "In most cases no, though some insurance plans require one. Call our office and we will confirm what your plan needs before your scheduled visit."
      }
    },
    {
      "@type": "Question",
      "name": "What should I bring to my first cardiology appointment?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Bring a list of current medications, prior test results if you have them, your insurance card, and a photo ID."
      }
    }
  ]
}

Google's rules for which sites qualify for FAQ rich results in search have changed more than once. Do not assume your FAQPage markup will produce a visible rich result in Google search, and verify current eligibility directly on Google Search Central before you plan around it.

What does not change is the value to AI assistants. Regardless of whether Google shows a rich result, FAQPage schema tells any system reading your page, including ChatGPT, Gemini, Claude, and Perplexity, that a block of text is a genuine question paired with a genuine answer. That structure makes it easier to lift and quote, which is exactly the kind of FAQ content AI assistants can quote directly in a response.

What "AI-readable" beyond basic SEO schema actually means

Standard SEO schema was built with one reader in mind: a search engine deciding whether to show a rich result. AI assistants read the same code but use it differently, and three things matter more for them than for classic SEO.

First, the schema and the visible page text must say the same thing. An AI assistant that reads conflicting facts in the markup versus the paragraph above it will often default to the more cautious answer, which usually means leaving you out.

Second, the page has to be reachable by AI crawlers such as GPTBot, ClaudeBot, and PerplexityBot before any of this matters. Schema on a page those crawlers cannot fetch is invisible to them, no matter how clean the code is.

Third, add a sameAs array to your Physician or MedicalBusiness schema, linking to your verified profiles on Healthgrades, Practo, Google Business Profile, or your hospital's staff directory. This helps an AI assistant confirm you are the same entity across sources, which is part of how it resolves who you actually are before deciding whether to name you.

How to validate your schema

Run every page through these checks before you consider the setup finished.

  1. Google's Rich Results Test. Paste your page URL or raw code. It confirms Google can parse your markup and lists every error by field.
  2. Schema.org's Structured Data validator. This checks your JSON-LD against the raw vocabulary, catching property names or nesting the Rich Results Test does not flag.
  3. View page source. Search for application/ld+json in your page's source code to confirm the script tag actually renders and is not stripped by a caching or JavaScript issue.
  4. Duplicate check. Search the source for a second or third schema block. Some SEO plugins add their own Physician or Organization schema on top of a manually added one, and conflicting duplicates can confuse both Google and AI crawlers.
  5. A real-question spot check. Ask ChatGPT, Gemini, Claude, and Perplexity a question a patient would type, such as "cardiologist in Denver taking new patients," and see whether your practice is named accurately.

Revalidate every time you edit the page, change your hours or address, or redesign the site, since a template change can silently strip existing markup.

What most doctor sites get wrong

The same handful of errors show up across almost every doctor website we audit.

Duplicate schema is the most common. A WordPress SEO plugin auto-generates Physician or Organization schema, and a developer adds a second manual block, and now the page ships two conflicting versions of the same facts.

Invisible FAQ content is close behind. Marking up questions and answers that are not actually shown on the page violates the schema.org and Google guidelines, and it can trigger a manual penalty in search.

Mismatched facts across sources is a quieter problem. The schema says one clinic name, the Google Business Profile says another, and a directory listing says a third. Schema cannot resolve a contradiction it did not create, so fix the underlying facts first.

Stale schema is the last one. A practice that moves offices or changes hours and never updates the JSON-LD is stating something false with full machine confidence, which is worse than having no schema at all.

The full checklist

Use this list as a working document. Check each item off as you complete it.

Put this checklist to work

Code that validates cleanly still depends on the rest of your visibility being healthy: your identity across directories, your crawlability to AI assistants, and the accuracy of the facts you are labeling.

The Doc Mirror audits your practice across Google, ChatGPT, Gemini, Claude, Perplexity, and 6 directories, and shows exactly which structured data gaps to close first. Check your current structured data and see how it compares to what AI assistants can actually read.

Run your free audit at thedocmirror.com

By the The Doc Mirror team

Run a free visibility audit

See your Doctor Visibility Score across Google, ChatGPT, Gemini, and Claude.

Free · No signup · 60 seconds · Private

Run free check →

Frequently asked questions

Do I need a developer to add schema markup?

Not necessarily. Many WordPress SEO plugins let you fill in Physician and MedicalBusiness fields through a form, which then generates the JSON-LD for you. A developer is useful if you want FAQPage schema tied precisely to your visible content, or if your site is custom-built rather than on a standard platform.

Will FAQPage schema get me a rich result in Google search?

It depends on current Google policy, which has shifted more than once on which sites qualify for FAQ rich results. Check Google Search Central directly before planning around a visible rich result. Independent of that, FAQPage schema still helps AI assistants identify and quote your question-and-answer content accurately.

Can one page have more than one schema type?

Yes. An about page commonly carries both Physician and MedicalBusiness schema in the same script tag or in separate ones. A blog post can carry Article schema alongside FAQPage if it ends with a question section.

How is JSON-LD different from other schema formats?

JSON-LD is a single script block that sits separately from your visible HTML, which is why Google recommends it and why it is the easiest to maintain. Older formats like Microdata require adding attributes directly inside your visible tags, which is harder to edit safely.

How often should I revalidate my schema?

Any time an underlying fact changes, such as a new address, updated hours, or an added specialty, update the schema the same day. Also revalidate after any website redesign, since template changes often strip existing markup without any visible sign on the page.

What happens if my schema has an error?

A syntax error, such as a missing comma or an incorrect property name, can invalidate the entire block, not just the one field. Google's Rich Results Test and the Schema.org validator will both flag the specific line, so fix errors immediately rather than leaving a broken block live.

Does schema markup cost anything to add?

The code itself is free, since schema.org and JSON-LD are open standards. The cost, if any, is either your time filling in a plugin form or a developer's time for a custom implementation.

← Back to Resources