Back to Blog
Guides20 min read14 August 2026

Schema for Law Firms and Legal Services: The Full Guide

Law firm schema markup done accurately: LegalService, attorney Person entities, the review-stars reality, and what changed for legal sites in 2026.

By AI Schema Gen Team

For a law firm, schema markup is one of the highest-value things you can add to your website: it makes you findable in local search, helps Google connect the right attorney to the right practice area and jurisdiction, and increasingly determines whether AI systems can represent your firm accurately when a prospective client researches their options. People already ask ChatGPT, Perplexity, and Google's AI who to hire and what a legal issue involves, and structured data is how you make sure your firm is understood correctly rather than guessed at.

But legal is a "Your Money or Your Life" (YMYL) field, which means Google evaluates it with unusual rigor on trust and expertise, and it also means a lot of the legal-SEO advice out there is outdated or simply wrong in ways that can cost you. Some of the most-shared law-firm schema guides still tell you to use a schema type Google retired, and to chase rich results that no longer exist. So this guide does it accurately: the right schema types for your firm, how to establish your attorneys' credibility, the honest reality about review stars (most guides get this wrong), what changed for legal sites in 2026, and how it all supports being found by clients and AI alike. Let's build it right.

Let's set accurate expectations first, because a lot of legal-SEO content oversells this.

There's no special "law firm rich result." Adding LegalService schema doesn't produce a unique visual treatment in search reserved for attorneys, the way Product or Recipe markup can. What legal schema actually does is more foundational and, in 2026, more valuable:

  • Local visibility, because the firm type is a LocalBusiness subtype, it feeds Google structured hours, location, and service areas that support your presence in Maps and the local pack, where most new-client searches land.
  • Entity clarity, it disambiguates your firm and your attorneys, so Google connects the right lawyer to the right practice area, office, and jurisdiction rather than inferring it from prose.
  • E-E-A-T signals, it makes your attorneys' credentials and your content's authorship machine-readable, which is exactly what YMYL legal content is judged on.
  • AI client search, it reduces ambiguity about who you are, what you practice, and where you operate, which supports accurate representation when AI systems answer prospective clients' questions.

None of that is a flashy rich result, and all of it matters more than one. And an honest note we'll return to: Google states plainly that there's no special schema required for its AI features, and no schema guarantees an AI citation or a specific ranking, we won't pretend otherwise. What good schema does is make your firm legible and trustworthy to the systems clients use. That's the real goal.

What's the right schema type for a law firm?

Getting the type right is the foundation, and it's where many firms leave value on the table, or actively hurt themselves by using a type Google no longer honors. Here's the hierarchy, in plain terms.

LocalBusiness is the generic base, and using only this is a common mistake. It works, but it misses the legal-specific signal about what your firm actually is.

LegalService is the type you want for the firm itself. Schema.org defines it as a business that provides legally-oriented services, advice, and representation, law firms specifically, and it's a subtype of LocalBusiness, so it accepts every property a firm needs: name, address, phone, opening hours, area served, accepted payment, and the services offered. This is the most specific, accurate type for a practice, and it's what you should put on your homepage or main contact page.

Attorney is the trap. Schema.org used to offer an Attorney type, and plenty of legal-SEO guides still recommend it, but schema.org has deprecated it, stating outright that LegalService is "more inclusive and less ambiguous." Markup that still uses Attorney validates as legitimate code, but you're building on a vocabulary the ecosystem has moved past. If your current pages use Attorney, replacing it with LegalService for the firm is the first fix, and it's mechanical.

Organization describes your firm at the entity level and is useful for your broader identity, your logo, your sameAs profile network, your founding, but for the practice as a findable local business, LegalService is the workhorse.

Person describes each individual attorney, not the firm, but each lawyer on your team (covered in detail below). This is where a lot of the E-E-A-T value lives.

The rule, as with schema generally: use the most specific accurate type. A law firm is a LegalService, not a generic LocalBusiness, and definitely not the deprecated Attorney. Get the firm typed correctly, model each lawyer as a Person, and connect them, and you've built the spine of a strong legal entity.

A complete example: a firm with an attorney

Here's how a firm and one of its attorneys connect, the firm typed LegalService, the lawyer modeled as a Person and linked back to the firm:

{
  "@context": "https://schema.org",
  "@type": "LegalService",
  "@id": "https://patelinjurylaw.example/#firm",
  "name": "Patel Injury Law",
  "image": "https://patelinjurylaw.example/office.jpg",
  "url": "https://patelinjurylaw.example",
  "telephone": "+1-512-555-0142",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "18 Congress Avenue, Suite 400",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.2672,
    "longitude": -97.7431
  },
  "openingHours": "Mo-Fr 08:30-17:30",
  "areaServed": {
    "@type": "AdministrativeArea",
    "name": "Travis County, Texas"
  },
  "employee": {
    "@type": "Person",
    "@id": "https://patelinjurylaw.example/team/anita-patel#attorney",
    "name": "Anita Patel",
    "jobTitle": "Managing Partner",
    "worksFor": { "@id": "https://patelinjurylaw.example/#firm" },
    "knowsAbout": ["personal injury law", "product liability"],
    "alumniOf": {
      "@type": "EducationalOrganization",
      "name": "University of Texas School of Law"
    },
    "hasCredential": {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "Bar Admission",
      "recognizedBy": {
        "@type": "Organization",
        "name": "State Bar of Texas"
      }
    },
    "sameAs": [
      "https://www.linkedin.com/in/anitapatel-law"
    ]
  }
}

Notice the firm is typed LegalService (specific, not generic, not the deprecated Attorney), it carries the local details that feed Maps and the local pack, and it connects to an attorney modeled as a Person with credentials and a bar admission. That connection, firm to attorney, is where a lot of the E-E-A-T value lives, so let's go deeper on both layers.

How do I get found by nearby clients?

For most firms, local search drives the majority of new-client inquiries, so the business layer of your schema is doing real work.

Because LegalService is a LocalBusiness subtype, it carries the local details Google uses for Maps and the local pack: your address, geo coordinates, telephone, openingHours, and areaServed. Fill these in completely and accurately, they're what let Google confidently place you for "personal injury lawyer near me" and "family law attorney in [city]" searches.

Crucially, these details must match your Google Business Profile exactly, which we'll come back to under consistency, because for local legal search, your schema, your Business Profile, and your on-page details all need to tell the same story. If your firm has multiple offices, the patterns in our multi-location local business guide apply directly: each office as its own entity with its own complete details, rather than one blurred listing.

How do I mark up my attorneys' credentials?

This is where legal schema gets genuinely powerful for a YMYL field, and where most firms under-invest. Each attorney on your team should be modeled as their own Person entity, and doing this well directly feeds the expertise signals legal content is judged on.

For each attorney, mark up:

  • jobTitle, their role at the firm ("Managing Partner," "Senior Associate," "Of Counsel").
  • worksFor, a reference back to your LegalService firm entity by @id, so the relationship is explicit and machines know which lawyer belongs to which firm.
  • hasCredential, bar admissions and qualifications, expressed as an EducationalOccupationalCredential with a credentialCategory (e.g. "Bar Admission") and the admitting authority in recognizedBy. This is the machine-readable version of "licensed to practice in Texas since 2008."
  • alumniOf, their law school, connecting them to a recognized educational institution, a real expertise signal.
  • knowsAbout, their practice areas, ideally connected to specific, recognized topic entities rather than loose keywords.
  • sameAs, links to their authoritative professional profiles: their LinkedIn, their state bar directory listing, their profiles on legal directories.

Why this matters so much: for YMYL legal content, Google wants machine-readable proof that real, credentialed professionals stand behind your firm. An attorney marked up with their bar admission, law school, practice areas, and verifiable professional profiles turns "trust us, we're qualified" into structured, verifiable expertise. A bio page with no Person schema is, to an AI engine, hard to resolve as a routable entity, it can't cleanly confirm which lawyer at your firm handles which type of case. This is the same author-and-expert entity work that establishes E-E-A-T across any content, applied to attorneys, and it matters more here than almost anywhere, because legal is exactly where Google scrutinizes expertise hardest. Our Person and author schema guide covers building strong provider entities in depth; the principles apply directly to attorneys.

Should I mark up my practice areas?

Yes, and this is a place law firms routinely leave value on the table. Your practice-area pages (personal injury, family law, DUI defense, estate planning) are among your most commercially important, and they're exactly the pages an AI system tries to match when someone asks "who does deck-building-dispute litigation in Austin" or "find me a family law solicitor in Leeds."

You have two complementary options:

Model each practice area as a Service, connected to your firm as the provider. A Service block that declares a serviceType of "personal injury litigation" and an areaServed that includes your county tells an AI system, in structured terms it can rely on, this firm does this specific thing in this specific place. The golden rule is one distinct service per block, a firm doing personal injury, family law, and criminal defense needs three genuinely customized Service entries, not one vague "legal services" block or three identical copies. We cover this pattern in depth in the Service schema guide, and it applies cleanly to practice areas.

Or list them on the firm via hasOfferCatalog, giving Google and AI an explicit inventory of what you handle rather than leaving them to infer it from your copy.

Either way, the principle is the same: make your practice areas explicit and machine-readable, and connect them to the firm entity by @id, so the whole thing reads as one connected picture, this firm, these practice areas, these jurisdictions, these attorneys, rather than scattered facts.

The review stars reality (most guides get this wrong)

Here's an accuracy point that a lot of legal-SEO advice gets flatly wrong, and getting it right saves you effort and risk.

Your firm cannot show star ratings for reviews about itself on its own site. Google's self-serving review rule is explicit: if the entity being reviewed controls the reviews about itself, its pages using LocalBusiness or any type of Organization structured data are ineligible for the star review feature. LegalService is a LocalBusiness subtype, so it's squarely covered. This includes reviews you've collected yourself and reviews pulled in through an embedded third-party widget (like a Google or Facebook reviews widget) placed on your own page, Google considers all of that self-serving.

So the common advice to "add Review schema to your firm's homepage for star ratings" doesn't work and can flag your site. The star ratings you see for firms in search results come from Google's own reviews and independent third-party platforms, not from a firm marking up its own reviews.

The legitimate path for a firm is the same one that's good for your business regardless of schema: earn genuine reviews on the independent platforms that matter, Google Business Profile, Avvo, Martindale-Hubbell, and the legal directories in your jurisdiction, and let their eligible markup do the work. We cover the full rules in our guide to getting star ratings, but the legal-specific takeaway is: focus on earning real reviews where they count, keep your Google Business Profile strong, and don't waste effort trying to self-mark-up review stars.

One useful nuance: even though your own AggregateRating markup won't earn you a star snippet, Google still reads and processes it. Clean, accurate rating data that matches what's visible on your page can still inform how AI systems summarize your firm's reputation, it just won't produce the gold stars. So the honest strategy earns trust in both places.

Here's the currency edge that catches a lot of law firms and the guides advising them, because two features legal-SEO content leaned on heavily are now gone.

FAQ rich results are retired, including for the sites that used to keep them. For a period, FAQ rich results were narrowed to authoritative government and health sites, which is why so much advice told firms to add FAQPage schema to their practice-area pages for the expandable Q&A dropdowns. On May 7, 2026, Google fully retired the FAQ rich result, including the former exception. If you're following a legal-SEO guide that promises FAQ dropdowns for your DUI page, it's describing a feature that no longer exists.

HowTo rich results are gone too. Google deprecated HowTo rich results on desktop back in September 2023, yet law-firm schema guides still recommend HowTo markup for "how to find the right personal injury lawyer" pages. That rich result hasn't existed for years.

Here's the important part, so nobody panics: the markup itself stays valid and unpenalized. FAQPage and HowTo are still legitimate schema.org types; leaving them in place won't hurt your rankings, and Google has said unused structured data doesn't cause problems. Only the visible SERP feature ended. So keep writing genuine FAQ content, real client questions answered clearly are good for readers and good for AI extraction, just don't implement FAQPage expecting the dropdown, and be skeptical of any legal-SEO advice that still promises FAQ or HowTo rich results. This is exactly the kind of currency gap where a lot of vertical-specific guidance has fallen behind.

Consistency: schema, Business Profile, and page must agree

For local legal search especially, consistency across your sources is a make-or-break trust signal.

Your firm name, address, phone number, hours, and practice areas must match exactly across your schema markup, your Google Business Profile, and your on-page content. If your schema lists one address and your Business Profile shows another, or your hours disagree, Google loses confidence in both signals, inconsistency doesn't just fail to help, it actively undermines the trust you're trying to build. Google's own guidance for its AI features stresses the same point from a different angle: your structured data must match the visible content on the page. Marking up an attorney, a service, or a rating that isn't actually on the page is exactly the mismatch that can trigger a manual action.

This matters more in legal because the details change: an attorney joins or leaves, you open an office, you add a practice area, you adjust hours. Every one of those changes needs to flow into your schema, or your structured data drifts out of truth. Stale firm schema, a departed partner still listed, wrong hours, a practice area you no longer take, is a real and common problem, and it's precisely the drift that quietly breaks trust with both search engines and prospective clients.

This is the fastest-growing reason to get your firm's schema right, and it's worth understanding clearly and honestly.

Prospective clients are increasingly using AI to research their situation and their options, asking ChatGPT, Perplexity, or Google's AI what a legal issue involves and which firms to consider. When these systems answer, they lean on the structured, machine-readable understanding search engines and knowledge graphs build, which is fed heavily by schema, to understand who you are, what you practice, where you operate, and whether credentialed professionals stand behind you. A firm with clear, complete, connected schema, the right LegalService type, attorney Person entities with bar admissions, practice areas expressed as connected services, consistent details, is a firm AI can represent accurately and confidently. One relying on prose is one AI has to guess about, and if your site doesn't feed a clean version of your firm, these systems fall back on third-party directories that often carry stale phone numbers, wrong hours, or missing attorneys.

The honest framing, though, matters, because this is exactly where legal-SEO content overclaims. Google states there's no special schema required for AI Overviews or AI Mode, and no markup guarantees your firm gets recommended or cited. Anyone selling "AI schema markup" as a citation shortcut is overselling. What schema genuinely does is remove the ambiguity that causes AI to misrepresent you or overlook you in favor of a firm it understands better. For legal, where people make real decisions about representation based partly on what AI tells them, being clearly and accurately understood is genuinely valuable, and it's exactly what a connected, credentialed, consistent entity profile provides. If you want the deeper strategy, our guide to building your brand's entity profile walks through it, and the same principles underpin our companion dental and medical schema guide for the other big YMYL vertical.

Common mistakes to avoid

Using the deprecated Attorney type. Schema.org retired it in favor of LegalService. Type your firm LegalService, and your lawyers Person. If your site still uses Attorney, that's the first swap to make.

Using generic LocalBusiness instead of LegalService. The specific type carries the legal signal and sends a stronger message about what your firm is. Generic is a missed opportunity.

Skipping attorney (Person) entities. Your lawyers' bar admissions and credentials are a major E-E-A-T asset in a YMYL field. Model each as a Person with hasCredential, alumniOf, knowsAbout, and worksFor.

Trying to self-mark-up review stars. Firms can't earn star snippets from their own reviews on their own site, including via embedded widgets. Earn genuine reviews on Google and third-party legal directories instead.

Relying on FAQ or HowTo rich results. They're gone. Write genuine FAQ content for clients and AI, but don't expect the dropdown, and drop any HowTo markup added for a rich result that hasn't existed since 2023.

Repeating the full firm block on every page. Define your LegalService firm once with an @id, and reference that @id from other pages, rather than duplicating a full firm description everywhere and blurring which node is canonical.

Inconsistent NAP across schema, Business Profile, and page. Mismatches undermine trust in all your signals. Audit and align them.

Stale schema. Attorneys move, hours change, practice areas shift. An old partner or wrong hours in your markup misinforms clients and search engines. Keep it current.

Implementing it on WordPress

Most firms run WordPress, often with a legal-specific theme, and your approach should make accuracy and maintenance manageable.

Check what your theme or SEO plugin outputs. Many produce only generic LocalBusiness or Organization markup, missing the specific LegalService type, the attorney Person entities, and the E-E-A-T credentials that matter most in a YMYL field. Some legal themes even ship the deprecated Attorney type. View source on your homepage and an attorney bio to see what you actually have.

The real challenge is depth plus accuracy over time, the right LegalService type, each attorney as a credentialed Person entity connected by worksFor, practice areas expressed as connected services, all consistent with your Business Profile and kept current as attorneys, hours, and practice areas change. Hand-maintaining that across a growing firm site is exactly where most practices fall behind, and where markup silently drifts out of sync with the visible page after a redesign or a staff change.

Generating from your content keeps it accurate. This is where AI Schema Gen fits: it reads your firm's pages and generates the right specific schema, LegalService for the firm, attorney Person entities with credentials and bar admissions, practice areas connected into your firm's entity, and because it generates from your live content across 827+ schema types, your details stay consistent and current as they change rather than requiring you to hand-edit a separate JSON-LD block every time a partner joins or your hours shift. It also keeps you clear of the common traps, like generating markup that matches your visible content rather than self-serving review claims that won't work, and using the current LegalService type rather than the deprecated Attorney. Beyond generating markup, it builds and scores your firm's broader entity profile, your identity, your people, your sameAs network, and your topical authority, which is the connected picture AI systems actually reason about. Whatever route you take, the tests are the same: the specific accurate type; attorneys as credentialed entities; consistency with your Business Profile; and accuracy as your firm changes.

How do I validate my firm's schema?

Google's Rich Results Test validates your markup syntax and flags errors. Note that LegalService itself won't produce a special rich result in the test, that's expected, not a failure, since there's no law-firm rich result. Use it to confirm your JSON-LD is valid and that any eligible types (like Article on your blog) check out.

The Schema Markup Validator at validator.schema.org checks broader schema.org validity, useful for the LegalService, Person, and Service relationships that don't map to a specific rich result.

Cross-check consistency, confirm your schema's name, address, phone, hours, and practice areas match your Google Business Profile and on-page content exactly.

Search your own terms, look up "[your practice area] lawyer near me" and your firm name to see how you appear in local results, and ask ChatGPT and Perplexity about your firm and practice areas to check whether AI identifies and describes you accurately. That functional test is the real measure of whether your entity is landing.

Frequently Asked Questions


Running a law firm on WordPress? AI Schema Gen generates the right specific schema from your content, LegalService for the firm, attorneys as credentialed Person entities, practice areas connected into your firm's entity profile, and keeps it consistent as details change, across 827+ schema types. Start free at aischemagen.com.

Generate perfect schema in 30 seconds

AI Schema Gen handles everything automatically, free to start.

Get Started Free