Medical Webpage Schema: A Complete Implementation Guide

medical professional

Healthcare schema markup is a standardized vocabulary you add to your website that helps search engines understand the context of your content. Instead of Google just seeing text on a page, schema tells it exactly what that text represents: who wrote it, who reviewed it, what medical condition it covers, and what credentials back it up.

Developed collaboratively by Google, Bing, Yahoo!, and Yandex, Schema.org provides this universal language. It does not change how your website looks to visitors. It adds a machine-readable layer that search engines use to interpret, validate, and display your content more effectively.

For medical websites, this matters more than almost any other industry, forming a critical component of effective healthcare SEO.

Key takeaways

  • Schema is not a ranking factor. It enables rich results and clarifies E-E-A-T signals. It will not rescue thin content.
  • MedicalWebPage is the right type for almost all treatment and condition content. Reserve HealthTopicContent for 5,000+ word pillar pages.
  • reviewedBy, sameAs, and lastReviewed carry the weight. Get those three right before anything else.
  • Google documents rich results for a fraction of Schema.org’s medical vocabulary. Drug, MedicalTherapy, and MedicalProcedure trigger nothing today.
  • Plan for quarterly audits. Stale reviewer data actively damages the trust signal you built it for.

Part 1 · Foundations

Why medical websites need schema markup

Healthcare content falls under Google’s “Your Money or Your Life” (YMYL) guidelines. These guidelines apply to topics that can impact a person’s health, financial stability, or safety. Google evaluates YMYL content with significantly higher standards for accuracy, authority, and trustworthiness.

Without schema, Google has to infer your expertise from unstructured text. It sees “Reviewed by Dr. James Chen” as just another line of copy. With schema, that same text becomes structured data that Google can parse, validate against external sources, and factor into its quality evaluation.

Schema markup directly addresses each component of Google’s E-E-A-T framework.

Experience

author

Author schema with biographical detail demonstrates real-world clinical experience behind the words.

Expertise

reviewedBy

Pairing the property with Physician or MedicalOrganization types validates medical credentials.

Authoritativeness

sameAs

Links to LinkedIn, medical directories, and hospital staff pages establish third-party verification.

Trustworthiness

lastReviewed

Review dates and MedicalAudience properties show ongoing maintenance and appropriate targeting.

Why this matters here

For addiction treatment centers and behavioral health providers specifically, where patients are making life-changing decisions about care, these structured trust signals can be the difference between a bounce and a phone call.

Schema types that matter for medical websites

Before diving into MedicalWebPage implementation, it helps to understand the broader schema ecosystem for healthcare. These types work together to build a complete picture of your organization, your team, and your content.

Organization and MedicalOrganization schema

Organization schema is your foundational layer. It tells Google who you are at the highest level: your official name, website URL, and logo.

MedicalOrganization builds on this by specifying your medical nature. It allows you to define whether you are a Hospital, MedicalClinic, Dentist, Pharmacy, or another healthcare entity. This schema type supports operating hours, address, contact information, and departmental details. When a patient searches for “addiction treatment center near me,” having your MedicalOrganization schema clearly define your facility type gives Google a much stronger relevance signal.

LocalBusiness and MedicalBusiness schema

For most medical practices, local search drives the majority of new patient inquiries. LocalBusiness schema (specifically MedicalBusiness) provides geographically relevant details that Organization schema alone does not cover.

This includes your physical address, phone number, opening hours, accepted payment methods, and service area. Properly implemented LocalBusiness schema increases your chances of appearing in Google Maps results and the local pack. Without it, you are essentially invisible to patients searching within your geographic area.

Physician schema

Physician schema lets you showcase individual providers directly to search engines. For each doctor on your team, you can specify their name, medical specialty, educational background, professional affiliations, and links to their individual profile pages. This contributes to your organization’s overall authority while also boosting the visibility of individual provider profiles in search results.

MedicalWebPage schema: the core of your content strategy

MedicalWebPage is the primary schema type for medical content pages. It explicitly tells search engines that a particular page contains health-related information, distinguishing it from a general blog post, contact page, or service listing.

This is the schema type that carries your most powerful E-E-A-T signals: who authored the content, who reviewed it for medical accuracy, what condition or topic it covers, and when it was last verified.

MedicalWebPage vs. HealthTopicContent

Use for roughly 90% of pages

MedicalWebPage

Pages that answer a specific question, cover one aspect of a condition, or explain a treatment approach.

  • How to Treat Alcohol Withdrawal
  • Is Rehab Covered by Insurance?
  • What to Expect During Detox

Pillar pages only, 5,000+ words

HealthTopicContent

Definitive, long-form resource pages covering symptoms, causes, treatment, prevention, and prognosis in one place.

  • Alcohol Use Disorder: Complete Guide
  • Everything About Opioid Addiction

Most addiction treatment and behavioral health articles should use MedicalWebPage.

Supporting schema types

Beyond MedicalWebPage, several other schema types strengthen your content strategy.

Expandable result

FAQPage

Marks up question-and-answer pairs. When Google recognizes the markup it can display expandable FAQ results, giving your page more visual real estate.

Blog and news

Article / BlogPosting

Supports headline, author, datePublished, image, and publisher. For medical content, linking author to a credentialed Physician reinforces E-E-A-T.

Star ratings

Review / AggregateRating

Surfaces patient feedback as star ratings. Especially powerful in healthcare, where trust heavily influences provider selection.

Service detail

Service

Describes each medical service in structured detail: telehealth consultations, outpatient programs, medication-assisted treatment.

Part 2 · Implementation

The MedicalWebPage JSON-LD template

JSON-LD (JavaScript Object Notation for Linked Data) is the recommended format for schema markup. It lives within a script tag in your page’s HTML, usually in the head section. Unlike Microdata or RDFa, JSON-LD does not get embedded throughout your page’s body content. It sits in one clean, self-contained block that is easy to manage and update.

Note

Google explicitly recommends JSON-LD over Microdata and RDFa. There is no upside to the alternatives on a modern site.

Here is a complete MedicalWebPage template with all critical E-E-A-T signals. Copy this structure and replace the values for your specific content.

JSON-LD · MedicalWebPage
{
  "@context": "https://schema.org",
  "@type": "MedicalWebPage",
  "@id": "https://example.com/treating-alcohol-withdrawal#webpage",
  "url": "https://example.com/treating-alcohol-withdrawal",
  "name": "How to Safely Treat Alcohol Withdrawal: Medical Protocol Guide",
  "description": "Evidence-based guide to alcohol withdrawal treatment including medication protocols, symptom management, and safety monitoring by board-certified addiction medicine specialists.",
  "datePublished": "2024-11-15",
  "dateModified": "2024-12-01",
  "lastReviewed": "2024-12-01",
  "author": {
    "@type": "Person",
    "@id": "https://example.com/authors/sarah-williams#person",
    "name": "Sarah Williams",
    "jobTitle": "Senior Medical Writer",
    "description": "Medical writer specializing in addiction treatment with 8 years experience in behavioral health content.",
    "url": "https://example.com/authors/sarah-williams",
    "sameAs": ["https://www.linkedin.com/in/sarah-williams-medical-writer"]
  },
  "reviewedBy": {
    "@type": "Person",
    "@id": "https://example.com/medical-team/dr-james-chen#person",
    "name": "Dr. James Chen, MD, FASAM",
    "jobTitle": "Medical Director, Addiction Medicine",
    "description": "Board-certified in addiction medicine and psychiatry with 15 years treating substance use disorders.",
    "url": "https://example.com/medical-team/dr-james-chen",
    "sameAs": [
      "https://facility-website.com/staff/james-chen-md",
      "https://www.healthgrades.com/physician/dr-james-chen-xyz123",
      "https://www.linkedin.com/in/drjameschen"
    ],
    "hasCredential": {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "Medical Board Certification",
      "recognizedBy": {
        "@type": "MedicalOrganization",
        "name": "American Board of Addiction Medicine"
      }
    },
    "worksFor": {
      "@type": "MedicalOrganization",
      "name": "Example Addiction Treatment Center",
      "url": "https://example.com"
    }
  },
  "about": {
    "@type": "MedicalCondition",
    "@id": "https://example.com/conditions/alcohol-withdrawal#condition",
    "name": "Alcohol Withdrawal Syndrome",
    "alternateName": ["AWS", "Alcohol Detoxification"],
    "code": {
      "@type": "MedicalCode",
      "code": "F10.239",
      "codingSystem": "ICD-10"
    }
  },
  "audience": {
    "@type": "MedicalAudience",
    "audienceType": "Patient",
    "healthCondition": {
      "@type": "MedicalCondition",
      "name": "Alcohol Use Disorder"
    }
  }
}

Key properties explained

Understanding what each property does and why it matters helps you implement schema correctly, not just copy and paste a template.

@id Absolute URL with hash fragment Required for entity linking

Creates a unique identifier for each entity in your schema. This allows Google to distinguish between your content entity, your author entity, and your reviewer entity, even when they share the same page URL.

Always use the hash fragment pattern to differentiate entities on the same URL: #webpage for the page itself, #person for authors and reviewers, #condition for medical conditions. These must be absolute URLs. A relative path like /article#webpage will fail validation.

reviewedBy Person or MedicalOrganization Highest impact

Explicitly states who verified the medical accuracy of your content. For YMYL medical pages, this is arguably the most impactful schema property you can implement. The more detail you include within the object (sameAs URLs, hasCredential, worksFor), the stronger the authority signal becomes.

For addiction treatment content specifically, link your Medical Director’s reviewedBy schema to:

  • American Society of Addiction Medicine (ASAM) profile
  • State medical board verification page
  • Published research on PubMed, via ORCID ID if available
  • Facility staff page with credentials

That creates a verifiable chain of authority that generic “reviewed by Dr. Smith” text alone cannot achieve.

sameAs Array of 2 to 5 profile URLs Highest impact

Your credential verification system. When you include URLs pointing to a reviewer’s hospital bio, state medical board listing, or verified LinkedIn profile, you enable what Google calls entity reconciliation. Google can connect your reviewer to their Knowledge Panel or the broader Knowledge Graph, verify credentials across multiple authoritative sources, and aggregate expertise signals from other publications they have reviewed or authored.

For medical reviewers, prioritize in this order:

  • Facility staff bio pages
  • State medical board verification pages
  • Professional organization directories (ASAM, APA)
  • Healthcare provider rating sites (Healthgrades, Vitals)
  • Professional LinkedIn profiles

An empty sameAs array provides zero verification value. If you have no external profiles to reference, omit the property entirely rather than leaving it empty.

hasCredential EducationalOccupationalCredential Supporting signal

Validates board certifications in a structured format. Not strictly required, but it provides an additional E-E-A-T signal that complements your sameAs URLs. For addiction medicine, relevant certifications include ABAM (American Board of Addiction Medicine) and ABPN (American Board of Psychiatry and Neurology).

lastReviewed ISO 8601 date Freshness signal

Tells Google when a medical professional last verified the accuracy of the page content. This is distinct from dateModified, which indicates when the page was last changed technically. The two are not interchangeable and should not be set from the same field in your CMS.

Never

Never backdate lastReviewed to make content appear fresher. Google may cross-reference your dates with Wayback Machine snapshots or Search Console crawl dates. Timestamp manipulation can trigger manual actions.

about MedicalCondition with MedicalCode No documented rich result

Explicitly defines what health topic the page covers. Including the ICD-10 code via the MedicalCode property adds clinical precision that differentiates your content from generic health information. Worth including for semantic clarity, but do not expect a visible search feature from it.

audience MedicalAudience No documented rich result

Defines who the content is written for. Setting audienceType to “Patient” signals consumer-facing health information rather than clinical literature intended for practitioners, which helps Google serve your content to the right queries.

WordPress implementation

For medical schema on WordPress, you have four practical approaches. The right choice depends on your technical comfort level and how many pages you need to manage.

RankMath or Yoast

RankMath Pro provides a Medical Webpage option in its Schema tab where you can add author details. Yoast has less robust medical schema support, primarily handling basic WebPage types.

The main limitation is that most plugins do not support the full reviewedBy object with hasCredential and nested properties. For basic page schema, plugins work fine. For the detailed medical reviewer schema that actually moves the needle on E-E-A-T, you will need to supplement with custom JSON-LD.

Theme functions

Adding custom JSON-LD through your child theme gives you complete control over every schema property. Hook into wp_head and gate by post type or category.

PHP
function mr_add_medical_schema() {
  if ( ! is_single() || ! in_category( 'treatment-guides' ) ) {
    return;
  }
  $schema = array(
    '@context' => 'https://schema.org',
    '@type'    => 'MedicalWebPage',
    '@id'      => get_permalink() . '#webpage',
    'url'      => get_permalink(),
    'name'     => get_the_title(),
  );
  echo '<script type="application/ld+json">'
     . wp_json_encode( $schema, JSON_UNESCAPED_SLASHES )
     . '</script>';
}
add_action( 'wp_head', 'mr_add_medical_schema' );

Advanced Custom Fields

Create custom fields for reviewer details, then generate the schema dynamically from the field values. This is the approach that scales.

PHP · ACF
$reviewer = get_field( 'medical_reviewer' ); // post object

if ( $reviewer ) {
  $schema['reviewedBy'] = array(
    '@type'  => 'Person',
    '@id'    => get_permalink( $reviewer ) . '#person',
    'name'   => get_the_title( $reviewer ),
    'url'    => get_permalink( $reviewer ),
    'sameAs' => array_filter(
      (array) get_field( 'reviewer_sameas_urls', $reviewer->ID )
    ),
  );
}

Code Snippets plugin

Install the Code Snippets plugin, create a new snippet, and paste your JSON-LD template with PHP conditional logic to target specific post types or categories. This avoids editing theme files directly, which means your schema survives theme updates.

Scaling across many pages

For sites with dozens or hundreds of medical content pages, build an “Our Medical Team” custom post type and add a post object field to your content pages so editors select a reviewer from a dropdown. The reviewedBy schema generates from that selection, which keeps implementation consistent and removes the main source of human error.

Supported vs. unsupported medical schema

An important distinction that trips up many implementers: Schema.org’s medical vocabulary is extensive, but Google does not support or recognize all of it for search features.

Schema.org includes types like Drug, MedicalTherapy, MedicalProcedure, MedicalTest, MedicalSignOrSymptom, and MedicalGuideline. These were developed in collaboration with the W3C Healthcare and Life Sciences group and represent a comprehensive medical ontology. Google’s supported structured data types are a much smaller subset.

Schema typeGoogle rich resultWorth implementing?
MedicalWebPageRecognized, no visual snippetYes, core E-E-A-T carrier
FAQPageExpandable FAQ resultYes, documented and visible
LocalBusiness / MedicalBusinessLocal pack, Maps, knowledge panelYes, drives patient inquiries
AggregateRatingStar ratings in resultsYes, where reviews are genuine
Article / BlogPostingTop stories, article snippetYes, for blog content
HealthTopicContentRecognized, no visual snippetOnly for 5,000+ word pillars
DrugNone documentedOptional, semantic value only
MedicalTherapyNone documentedOptional, semantic value only
MedicalProcedureNone documentedOptional, semantic value only
MedicalSignOrSymptomNone documentedLow priority
MedicalGuidelineNone documentedLow priority

The unsupported types are not useless. They still provide semantic context that may help Google’s algorithms understand your content. But do not expect them to generate visible rich snippets the way FAQPage or AggregateRating schema does. Prioritize the types with documented, measurable search impact first, then layer in additional medical vocabulary as a secondary effort.

Implementation challenges and practical limitations

Schema markup for medical websites is not a magic bullet, and treating it as one leads to wasted effort and unrealistic expectations.

The maintenance burden

Medical schema requires ongoing maintenance. When a doctor leaves your practice, a new provider joins, your hours change, or you add a service, your schema must be updated to match. Outdated schema with incorrect provider information or stale review dates actively undermines the trust signals you are trying to build.

Watch out

Plan for quarterly schema audits at minimum, and treat clinician departures as a same-week schema task rather than a backlog item. A sameAs URL pointing to a 404 staff page is worse than no sameAs at all.

Technical complexity at scale

For a single page, implementing MedicalWebPage schema is straightforward. For a site with hundreds of treatment pages, symptom guides, and blog posts, the challenge scales significantly. Without a systematic approach like the ACF method described above, maintaining accurate schema across an entire content library becomes a significant operational task.

The gap between Schema.org and Google

Many SEO recommendations around medical schema overstate what Google actually does with the data. Schema.org’s medical vocabulary is rich and detailed, but Google’s documentation only confirms support for a fraction of it. Implementing elaborate MedicalCondition schemas with differential diagnosis modeling or epidemiology data in JSON-LD may be technically valid, but there is no evidence Google uses this depth of detail for ranking or rich results today.

Focus your effort on the properties and types that have documented impact: reviewedBy, sameAs, lastReviewed, MedicalWebPage, FAQPage, and LocalBusiness.

Part 3 · Judgement

Medical schema misconceptions and what to watch for

Medical schema markup has attracted its share of overpromises, misunderstandings, and outright bad advice. Knowing what schema can and cannot do protects you from wasting budget on low-impact implementations and helps you evaluate an SEO consultant’s recommendations with a critical eye.

The claim

“Schema markup is a ranking factor.”

What actually happens

Google has stated repeatedly that it is not. What schema does is enable rich results, improve how Google interprets your content, and strengthen E-E-A-T signals. Those things can lead to better visibility and higher click-through rates, which indirectly support performance. Adding schema to a thin, poorly written page will not make it rank.

The claim

“We should build out Drug, MedicalTherapy, MedicalProcedure, and MedicalRiskFactor markup across the site.”

What actually happens

These are all valid Schema.org types within the broader medical ontology maintained with the W3C Healthcare and Life Sciences group. The problem is that Google does not use most of them for any documented rich result or ranking feature. They were designed for broader web use cases including clinical data exchange, not specifically for search.

When a consultant recommends differential diagnosis modeling, epidemiology data, or controlled vocabulary tagging, ask what measurable search outcome that implementation will produce. If the answer is vague, be skeptical. Controlled testing from organizations like SearchPilot has shown schema impact on rankings is often modest or undetectable outside the specific types Google documents.

This is not a scam in every case. Some consultants genuinely believe deeper medical structured data will pay off as Google’s systems evolve. But billing significant hours for types with no current documented impact, while reviewedBy, sameAs, and LocalBusiness are still missing, is a misallocation of your budget.

The claim

“Any medical schema is good medical schema.”

What actually happens

Schema that does not accurately reflect your page content is worse than no schema at all. If your page is a 500-word blog post about coping with anxiety, marking it up as a comprehensive HealthTopicContent page with audience targeting for clinical practitioners misrepresents what the content is.

Google’s quality raters and automated systems look for alignment between your structured data claims and the actual content on the page. Schema that overstates your content’s depth, your reviewer’s involvement, or your organization’s credentials can trigger manual actions or simply be ignored.

What to focus on instead

MedicalWebPage with reviewedBy and sameAs for content pages. LocalBusiness or MedicalBusiness for facility pages. FAQPage for question-and-answer content. AggregateRating for review visibility. Get these right before investing in anything more complex.

Testing and validation

Validation is not optional. Pushing schema live without testing is like publishing medical content without a reviewer.

Validation workflow

  1. Schema.org Validator

    Run every page through validator.schema.org to catch JSON-LD syntax errors and structural issues.

  2. Google Rich Results Test

    Then run the Rich Results Test to verify Google-specific implementation and see which rich results your page qualifies for.

  3. Google Search Console

    Monitor Enhancement reports for deployed pages over time. This is where problems surface after a template change or plugin update.

Watch out

A page can pass Schema.org validation and still fail the Rich Results Test if it is missing properties that Google requires for enhanced features. Run both tools, in that order.

Common errors and how to fix them

Missing reviewedBy property

Google expects medical content to include a medical reviewer for E-E-A-T validation. Always include reviewedBy for treatment content, symptom guides, and medication information.

✕ Missing reviewer
{
  "@type": "MedicalWebPage",
  "author": { ... }
}
✓ Complete
{
  "@type": "MedicalWebPage",
  "author": { ... },
  "reviewedBy": {
    "@type": "Person",
    "name": "Dr. Sarah Johnson",
    "sameAs": [ ... ]
  }
}

Invalid @id format

The @id must be an absolute URL with a fragment identifier. Relative URLs and URLs without hash fragments will fail.

✕ Fails validation
"@id": "/article#webpage"
"@id": "https://example.com/article"
✓ Correct
"@id": "https://example.com/article#webpage"

Incorrect date formats

Schema.org requires ISO 8601 format (YYYY-MM-DD). Formats like “12/01/2024” or “December 1, 2024” will not validate.

✕ Fails validation
"lastReviewed": "12/01/2024"
"lastReviewed": "December 1, 2024"
✓ Correct
"lastReviewed": "2024-12-01"

Empty sameAs arrays

Including sameAs with no URLs provides no verification value and can trigger warnings. Either include two or more authoritative URLs, or remove the property entirely.

✕ No value
"sameAs": []
✓ Correct
"sameAs": [
  "https://facility.com/staff/chen-md",
  "https://www.healthgrades.com/physician/xyz"
]

Nested objects missing @type

Every nested object in your schema needs its own @type declaration. A worksFor property without "@type": "MedicalOrganization" is incomplete and may not be processed correctly.

✕ Incomplete
"worksFor": {
  "name": "Example Hospital"
}
✓ Complete
"worksFor": {
  "@type": "MedicalOrganization",
  "name": "Example Hospital",
  "url": "https://hospital.com"
}

Pre-launch checklist

  • Every @id is an absolute URL with a hash fragment
  • All dates use ISO 8601 (2024-12-01), never slashes or month names
  • reviewedBy is present on every treatment, symptom, and medication page
  • Each sameAs array holds 2 to 5 live, authoritative URLs, or is omitted entirely
  • Every nested object declares its own @type
  • Page passes validator.schema.org with zero errors
  • Page passes the Google Rich Results Test and reports the expected result types
  • Search Console Enhancements shows no unparsable structured data after the next crawl

Measuring schema impact

Once schema is live and Google has crawled your pages, you need to track whether it is working.

Search Console Enhancement reports

Navigate to the Enhancements section in Google Search Console. You will find dedicated reports for each rich result type you have implemented: FAQ, Review snippet, LocalBusiness, and so on. These reports show valid items, items with warnings, and items with errors. Check for “Unparsable structured data” to catch JSON-LD syntax errors that slipped through testing.

Set this once

Turn on Search Console alerts for “New structured data issues detected.” It is the fastest way to catch a validation problem introduced by a template change or plugin update, rather than finding it a month later.

Tracking rich result performance

In the Search Console Performance report, filter by search appearance to isolate rich results or specific types like the FAQ rich result. This shows impressions, clicks, and click-through rate for pages with active rich results versus those without. A meaningful increase in impressions for rich result pages, combined with higher CTR compared to standard listings, indicates your schema is driving additional visibility and engagement.

Manual verification

Periodically search your target keywords and check whether rich results appear as expected. If you implemented FAQPage schema on a page targeting “what to expect during detox,” search that query and confirm the expandable sections are showing. If you added AggregateRating to your LocalBusiness markup, search your facility name and check for star ratings. Manual checks are not scalable, but they confirm your structured data is rendering correctly in live results.

Implementation priority

Roll out medical schema in phases, starting with the pages that will benefit most.

  1. High-value pages

    Treatment methodology pages, condition and disorder overviews, “what to expect” process pages, and insurance or admissions pages carrying medical information. These drive the most organic traffic, target the highest commercial intent keywords, and face the strongest YMYL quality evaluation.

  2. Blog content

    Symptom guides, medication information articles, and evidence-based treatment comparisons.

  3. Supporting content

    FAQ pages, aftercare and continuing care information, and family resource guides.

  4. Ongoing maintenance

    Monthly reviews of lastReviewed dates, quarterly audits of provider information and sameAs URLs, and immediate updates when team members or services change.

Once you have established the template and workflow, adding schema to new pages becomes a routine part of the content publishing process rather than a separate technical project.

Schema is only as strong as the reviewer behind it

The reviewedBy property is a claim. The sameAs URLs are the proof. MedicallyReviewed connects healthcare websites with licensed medical professionals who review content for accuracy and come with the verifiable profiles, bio pages, and credential documentation your structured data needs.

If you are building out medical content for an addiction treatment center, behavioral health provider, or healthcare organization, get in touch to learn how our medical review services support both your content quality and your structured data strategy.

Talk to us about medical review