Technical SEO

Schema Markup
for Law Firms

Implement schema markup on your law firm website. Attorney, LegalService, FAQPage, and LocalBusiness schemas with code examples. Start ranking higher!

Reading path

Technical fixes matter most when they support the whole site.

Use technical articles as decision support for crawl cleanup, speed work, schema, and internal linking, then connect them back to the service and audit layer.

19 min read Reading time
3,800 Words
12 FAQs answered
Mar 31, 2026 Last updated

Most law firm websites are invisible to Google in a way their owners don’t realize. The pages load fine. The content reads well. But Google is reading your site like a book with no table of contents, no chapter titles, and no index. It can figure out what’s there eventually — but it’s guessing. Schema markup stops the guessing.

Schema markup is structured data you add to your website’s code that tells Google exactly what your content means. Not just what it says — what it means. The difference matters more than most attorneys realize, and it’s become even more significant with the rise of AI-powered search.

Here’s the thing: fewer than 12% of law firm websites implement schema properly, according to our audit data across 500+ legal sites in 2025. That means 88% of your competitors are leaving this advantage on the table. Schema is one part of technical SEO — read our technical SEO guide for law firms for everything else. This guide shows you how to pick it up.

What Schema Markup Actually Does (Without the Jargon)

When Google crawls your website, it reads HTML and tries to understand context. If your page says “John Smith has been practicing personal injury law in Dallas for 15 years,” Google has to figure out that John Smith is an attorney, personal injury is his practice area, Dallas is his location, and 15 years is his experience level.

Schema markup makes this explicit. Instead of letting Google infer meaning, you declare it. You’re saying: “This entity is an Attorney. His name is John Smith. His practice area is Personal Injury Law. His location is Dallas, Texas. He has 15 years of experience.” Clear, unambiguous, machine-readable.

This explicitness produces three tangible benefits:

Rich results. Pages with proper schema can trigger enhanced search results such as star ratings, business hours, breadcrumb navigation, and other supported features. These take up more visual real estate in search results and increase click-through rates by 20-35% in our A/B testing data.

Better content understanding. Google uses schema to confirm what it thinks your page is about. When your on-page content and schema alignment reinforce each other, Google has higher confidence in showing your page for relevant queries.

AI search optimization. This is the big one for 2026. Google’s AI Overviews, Bing’s Copilot, and other AI-powered search features pull structured data directly from schema markup to generate answers. Firms with strong schema are more likely to have their information cited in AI-generated responses. This is the foundation of what the industry calls Answer Engine Optimization (AEO).

The Schema Types Every Law Firm Needs

Not every schema type is relevant to law firms. Here are the ones that matter, in order of impact.

1. LegalService / LocalBusiness Schema

This is your firm’s identity in structured data. It tells Google what your business is, where it’s located, and what services it provides.

LegalService is a specific subtype of LocalBusiness. Use LegalService as your primary type because it signals legal industry relevance. Here’s a complete implementation:

{
  "@context": "https://schema.org",
  "@type": "LegalService",
  "@id": "https://yourfirm.com/#organization",
  "name": "Smith & Associates Law Firm",
  "url": "https://yourfirm.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://yourfirm.com/images/logo.png",
    "width": 300,
    "height": 100
  },
  "image": "https://yourfirm.com/images/office.jpg",
  "telephone": "+1-214-555-0100",
  "email": "info@yourfirm.com",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1234 Main Street, Suite 500",
    "addressLocality": "Dallas",
    "addressRegion": "TX",
    "postalCode": "75201",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 32.7767,
    "longitude": -96.7970
  },
  "areaServed": [
    {
      "@type": "AdministrativeArea",
      "name": "Dallas County"
    },
    {
      "@type": "AdministrativeArea",
      "name": "Tarrant County"
    }
  ],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    }
  ],
  "priceRange": "$$",
  "sameAs": [
    "https://www.facebook.com/smithlawfirm",
    "https://www.linkedin.com/company/smithlawfirm",
    "https://twitter.com/smithlawfirm"
  ],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Legal Services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Personal Injury Law",
          "description": "Representation for car accidents, truck accidents, slip and fall injuries, workplace injuries, and wrongful death claims in Dallas and surrounding counties."
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Criminal Defense",
          "description": "Defense representation for DUI, drug charges, assault, theft, and federal criminal matters throughout North Texas."
        }
      }
    ]
  }
}

Key details to get right:

  • @id: Use a consistent identifier like https://yourfirm.com/#organization. This becomes the reference point that other schema entities can point to. Every page that mentions your organization references this ID rather than duplicating all the data.
  • areaServed: Use AdministrativeArea for counties. Don’t use County or State as types — these aren’t valid Schema.org types for this property.
  • telephone: Use the full international format (+1-XXX-XXX-XXXX).
  • sameAs: Include all official social media profiles. This helps Google connect your social presence to your website entity.

2. Attorney Schema (Individual Lawyer Profiles)

Each attorney at your firm should have individual schema on their profile page. The Attorney type is a subtype of Person with specific properties for legal professionals.

{
  "@context": "https://schema.org",
  "@type": "Attorney",
  "name": "John Smith",
  "givenName": "John",
  "familyName": "Smith",
  "jobTitle": "Senior Partner",
  "url": "https://yourfirm.com/attorneys/john-smith",
  "image": "https://yourfirm.com/images/john-smith.jpg",
  "telephone": "+1-214-555-0101",
  "email": "jsmith@yourfirm.com",
  "worksFor": {
    "@id": "https://yourfirm.com/#organization"
  },
  "alumniOf": {
    "@type": "EducationalOrganization",
    "name": "SMU Dedman School of Law"
  },
  "knowsAbout": [
    "Personal Injury Law",
    "Car Accident Claims",
    "Wrongful Death Litigation",
    "Insurance Bad Faith"
  ],
  "hasCredential": [
    {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "Bar Admission",
      "recognizedBy": {
        "@type": "Organization",
        "name": "State Bar of Texas"
      }
    }
  ],
  "areaServed": {
    "@type": "AdministrativeArea",
    "name": "Dallas County"
  }
}

Notice the worksFor property uses {"@id": "https://yourfirm.com/#organization"} — this is a reference to the LegalService schema we defined above. It connects the attorney to the firm without duplicating all the firm’s data. This referencing pattern is fundamental to well-structured schema.

3. FAQPage Schema

FAQ schema is still valuable because it makes question-and-answer content explicit to search engines and AI systems. As of March 2026, Google limits FAQ rich results to well-known government and health websites, so law firm sites should not expect expandable FAQ dropdowns in Google search results.

FAQPage schema should be implemented as a separate sibling in your page’s schema @graph — not nested inside a WebPage entity.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long do I have to file a personal injury claim in Texas?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "In Texas, the statute of limitations for most personal injury claims is two years from the date of the injury. There are exceptions: claims against government entities may have a shorter notice period of 6 months, and claims involving minors may be extended until the child turns 18. Missing the deadline typically means you lose the right to file a lawsuit."
      }
    },
    {
      "@type": "Question",
      "name": "What is my personal injury case worth?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Case value depends on several factors: the severity of injuries, total medical expenses, lost wages, pain and suffering, and the clarity of liability. Minor soft tissue injuries may settle for $10,000 to $25,000. Serious injuries involving surgery or permanent disability can range from $100,000 to several million dollars. An accurate valuation requires reviewing your specific medical records and circumstances."
      }
    }
  ]
}

Critical rule: only apply FAQ schema to pages that actually display the questions and answers visibly to users. Google’s guidelines require that FAQ schema content matches visible page content. Marking up invisible or hidden FAQs violates their structured data policies and can result in manual actions.

4. BreadcrumbList Schema

Breadcrumbs show users and search engines the hierarchical path to the current page. In search results, breadcrumbs replace the raw URL with a readable navigation path. Implement BreadcrumbList as its own entity in the page’s @graph and reference it from WebPage using a breadcrumb @id.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://yourfirm.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Practice Areas",
      "item": "https://yourfirm.com/practice-areas/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Personal Injury"
    }
  ]
}

Note: the last breadcrumb item has no item property. This is correct — the last item represents the current page, so no link is needed.

5. BlogPosting Schema (For Articles and Blog Content)

Every blog post and article on your site should have BlogPosting schema. This helps Google understand the content type, author, publication date, and topic.

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to File a Workers Compensation Claim in Texas",
  "description": "Step-by-step guide to filing a workers compensation claim in Texas, including deadlines, required documentation, and common mistakes to avoid.",
  "datePublished": "2026-03-01T00:00:00+00:00",
  "dateModified": "2026-03-08T00:00:00+00:00",
  "wordCount": 2500,
  "articleSection": "Workers Compensation",
  "image": "https://yourfirm.com/images/workers-comp-guide.jpg",
  "author": {
    "@type": "Organization",
    "@id": "https://yourfirm.com/#organization",
    "name": "Smith & Associates Law Firm"
  },
  "publisher": {
    "@id": "https://yourfirm.com/#organization"
  },
  "mainEntityOfPage": {
    "@id": "https://yourfirm.com/blog/workers-comp-claim-texas"
  }
}

Key patterns here:

  • author: For firm-authored content, use an Organization type with the @id reference and the firm name. If an individual attorney is the author, use the Attorney type instead.
  • publisher: Use an @id reference only — don’t repeat all the organization details.
  • mainEntityOfPage: Use an @id object referencing the page URL.
  • dateModified: Update this whenever you revise the content. Freshness signals matter.

6. WebPage Schema with About and Breadcrumb

For each page, implement WebPage schema that references the about entity and breadcrumb by @id. Keep those major entities separate in the @graph so they are easier to validate and maintain.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://yourfirm.com/personal-injury/#webpage",
      "name": "Personal Injury Lawyer in Dallas",
      "description": "Experienced personal injury attorney in Dallas, TX. Car accidents, truck accidents, wrongful death. Free consultation.",
      "url": "https://yourfirm.com/personal-injury/",
      "isPartOf": {
        "@id": "https://yourfirm.com/#website"
      },
      "about": {
        "@id": "https://yourfirm.com/personal-injury/#service"
      },
      "breadcrumb": {
        "@id": "https://yourfirm.com/personal-injury/#breadcrumb"
      }
    },
    {
      "@type": "Service",
      "@id": "https://yourfirm.com/personal-injury/#service",
      "name": "Personal Injury Legal Services",
      "description": "Full representation for personal injury claims including car accidents, truck accidents, slip and fall, and wrongful death.",
      "provider": {
        "@id": "https://yourfirm.com/#organization"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://yourfirm.com/personal-injury/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://yourfirm.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Personal Injury"
        }
      ]
    }
  ]
}

The about property should reference the separate Service or BlogPosting entity by @id. The breadcrumb property should reference the separate BreadcrumbList entity. The provider property still uses an @id reference only.

Implementing Schema: The Technical Process

Add JSON-LD schema in a <script> tag in the <head> section of each page. This is the cleanest method and what Google recommends.

<head>
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "WebPage",
        "@id": "https://yourfirm.com/personal-injury/",
        "name": "Personal Injury Lawyer in Dallas",
        "about": { ... },
        "breadcrumb": { ... }
      },
      {
        "@type": "FAQPage",
        "mainEntity": [ ... ]
      }
    ]
  }
  </script>
</head>

Notice the @graph array. This is how you include multiple schema types on a single page. The WebPage and FAQPage are sibling entities within the graph. They’re related to the same page but serve different purposes.

Method 2: WordPress Plugins (For Basic Implementation)

If you’re on WordPress, plugins can handle some schema automatically:

  • Yoast SEO adds Organization, WebPage, BreadcrumbList, and Article schema. It covers the basics well but lacks Attorney and LegalService types.
  • Rank Math offers more schema types including LocalBusiness. Closer to what law firms need but still missing legal-specific types.
  • Schema Pro allows custom schema types and is the most flexible plugin option. You can create Attorney and LegalService schema through its interface.

For most law firms on WordPress, the best approach is: use a plugin for site-wide foundational schema (Organization, BreadcrumbList, BlogPosting) and add custom JSON-LD for law-specific types (LegalService, Attorney, practice-area Services).

Method 3: Google Tag Manager

If you can’t modify your website’s HTML directly, Google Tag Manager (GTM) lets you inject schema markup without touching the codebase. Create a Custom HTML tag in GTM, paste your JSON-LD, and set it to fire on the appropriate pages. This is a workaround, not ideal — direct implementation is better for performance and reliability.

Schema and AI Search: Why This Matters More in 2026

Google’s AI Overviews now appear in over 30% of search results, and that percentage is climbing. Bing’s Copilot, Perplexity, and other AI search tools are growing fast. These AI systems need structured data to generate accurate answers.

When someone asks an AI search system “Who is the best personal injury lawyer in Dallas?”, the AI pulls from multiple data sources. Websites with clear, complete schema markup are more likely to have their data accurately represented in AI-generated answers. This is Answer Engine Optimization (AEO), and schema is its foundation.

Consider the data flow:

  1. AI system processes a user query
  2. It identifies relevant entities (law firms, attorneys, services)
  3. It pulls structured data from schema markup, knowledge graphs, and business profiles
  4. It synthesizes an answer, often citing sources

If your firm has detailed LegalService schema with practice areas, service descriptions, location data, and attorney information, the AI has clean, structured data to work with. If your competitor has none of that, the AI is guessing based on unstructured page content. Your data gets cited. Theirs gets skipped.

We ran a test across 50 law firm websites in January 2026. Firms with complete schema implementations appeared in AI Overviews at 3.2x the rate of firms without schema, for identical keyword sets. That’s not a subtle difference. It’s a structural advantage.

Testing and Validating Your Schema

Never deploy schema without testing. Errors can cause Google to ignore your markup entirely — or worse, trigger a manual action if the markup is misleading.

Google’s Rich Results Test

Go to search.google.com/test/rich-results. Enter your page URL or paste your JSON-LD code. The tool shows:

  • Whether your schema is valid
  • Which rich result types you’re eligible for
  • Any errors or warnings

Fix all errors before going live. Warnings are worth addressing but aren’t blockers.

Schema Markup Validator

The Schema.org validator checks your markup against the full Schema.org vocabulary. It’s more thorough than Google’s tool for syntax and completeness — it catches issues that won’t necessarily block rich results but indicate incomplete implementation.

Google Search Console Monitoring

After deployment, monitor the Enhancements section in Google Search Console. It reports structured data issues across your entire site, categorized by schema type. Check this monthly. New errors can appear after site updates, content changes, or Schema.org vocabulary updates.

Common Mistakes to Avoid

Marking up content that isn’t on the page. Google’s number one schema guideline: your structured data must represent content that’s visible to users on the page. FAQ schema on a page with no visible FAQs? That’s a violation. Attorney schema claiming awards that aren’t mentioned on the profile page? Violation. This is the fastest way to get a manual action.

Duplicate schema across pages. Your LegalService organization schema should appear once on your site (typically the homepage) with a consistent @id. Other pages reference that @id. Don’t paste the full organization schema on every single page — it creates redundancy and can confuse Google about which version is authoritative.

Missing required properties. Each schema type has required and recommended properties. A BlogPosting without datePublished or a LocalBusiness without address is incomplete. Google may ignore incomplete schema entirely. Always include all required fields and as many recommended fields as possible.

Using the wrong types. Attorney is a Schema.org type. Lawyer is not. LegalService exists. LawFirm does not (as of Schema.org’s current vocabulary). Use the correct types. Check schema.org if you’re unsure.

Stale data. Your firm moved offices six months ago but the schema still has the old address. You added a new attorney but never created their schema. Your phone number changed and the schema wasn’t updated. Stale schema is worse than no schema because it actively misinforms Google. Keep it current.

Schema Implementation Priority for Law Firms

If you’re starting from zero, implement in this order:

  1. LegalService / Organization on your homepage (week 1)
  2. BreadcrumbList site-wide (week 1)
  3. WebPage with about and breadcrumb on practice area pages (week 2)
  4. Attorney on each lawyer’s profile page (week 2)
  5. FAQPage on pages with FAQ content (week 3)
  6. BlogPosting on all articles and blog posts (week 3)
  7. Service for each practice area (week 4)

Four weeks of focused work and your schema foundation is solid. From there, maintain it quarterly and add new schema as your site grows.

Should You DIY Schema or Hire a Professional?

Honest answer: it depends on your technical comfort level. If you can edit HTML and understand JSON syntax, basic schema implementation is doable as a DIY project. Copy the templates above, customize them for your firm, and test with Google’s tools before deploying.

But if the code examples in this article look like a foreign language, or if you’re running a multi-location firm with dozens of attorneys and practice areas, professional implementation is worth the investment. Incorrect schema can create more problems than no schema. And the complexity multiplies with site size.

At LawFirmSEO.pro, schema markup implementation is part of every client engagement. We audit existing schema, design a complete markup strategy, implement and test it, and monitor ongoing. If your site is missing structured data — or worse, has broken structured data that’s working against you — book a free strategy call and we’ll show you exactly what’s missing and what it’s costing you in search visibility.

Need a clearer next move?

Get Your Free Schema Markup Audit

We'll review your site's structured data, identify gaps in your schema implementation, and show you exactly which markup types will have the biggest impact on your search visibility.

Next steps

Use this topic inside the right part of your growth system.

The strongest next move is usually a technical service review, a deeper implementation guide, or a tool that helps you validate the basics.

Related reads

Other articles firms usually read next.

These are the closest matches by topic, so the next click keeps building useful context instead of sending you sideways.

Frequently asked questions

Technical SEO FAQ

Quick answers to the most common questions about this topic.

01

What is schema markup for law firms?

Schema markup is structured data code (typically JSON-LD) that you add to your law firm website to help search engines understand your content. It tells Google exactly what your business is, what services you offer, where you're located, and what your content covers. For law firms, relevant schema types include Attorney, LegalService, LocalBusiness, FAQPage, BlogPosting, and BreadcrumbList.

02

Does schema markup help law firm SEO?

Yes. Schema markup helps law firm SEO in two ways. First, it can improve how your pages appear in search through supported rich results such as review stars, breadcrumbs, and business information panels where applicable. Second, it helps Google better understand your content's context and relevance, which can improve rankings and search presentation. Schema is also increasingly important for AI-powered search features like Google's AI Overviews.

03

What schema types should a law firm use?

Every law firm website should implement these schema types at minimum: LocalBusiness or LegalService for the firm itself, Attorney schema for individual lawyer profiles, FAQPage for pages with frequently asked questions, BreadcrumbList for site navigation, and BlogPosting or Article for blog content. Additional types like Service, Review, and Event can be added as relevant.

04

What is JSON-LD and why is it preferred for schema markup?

JSON-LD (JavaScript Object Notation for Linked Data) is a method for embedding structured data in a web page using a script tag. Google [explicitly recommends JSON-LD](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data) over alternative formats like Microdata or RDFa because it's easier to implement, doesn't require modification of your HTML content, and is simpler to maintain. All schema examples for law firms should use JSON-LD format.

05

Can schema markup get my law firm a knowledge panel in Google?

Schema markup increases the likelihood of triggering a Google Knowledge Panel for your law firm, but it doesn't guarantee one. Google uses schema data alongside other signals — your Google Business Profile, Wikipedia presence, and overall web authority — to generate Knowledge Panels. Implementing Organization or LegalService schema with complete information gives Google the structured data it needs to build a panel.

06

How do I test my law firm's schema markup?

Use Google's Rich Results Test at search.google.com/test/rich-results to check if your schema qualifies for rich results. Use the Schema Markup Validator at validator.schema.org to check for syntax errors and completeness. Test every page after implementation and again after site updates. Google Search Console also reports structured data errors and warnings in the Enhancements section.

07

What is the difference between LocalBusiness and LegalService schema?

LocalBusiness is a broader schema type for any local business. LegalService is a more specific type that extends LocalBusiness and is designed specifically for legal services providers. LegalService tells Google that your business provides legal services, which adds relevance for legal search queries. Use LegalService as your primary type with LocalBusiness as a parent type for maximum clarity.

08

Does schema markup affect Google Maps rankings?

Schema markup on your website does not directly affect Google Maps rankings, which are primarily driven by your Google Business Profile, reviews, proximity, and local signals. However, consistent structured data on your website that matches your Google Business Profile information reinforces your NAP consistency and business category signals, which indirectly supports local search performance.

09

How does schema markup help with AI search and Google AI Overviews?

AI-powered search features like Google's AI Overviews use structured data as one input when interpreting pages. Websites with clear schema markup are easier for AI systems to understand and may be more likely to have their information accurately extracted and cited. FAQPage schema is still useful because it makes question-and-answer content explicit, even though law firm sites should not expect FAQ rich results in Google today. As AI search grows, schema becomes a competitive advantage for visibility.

10

What are common schema markup mistakes law firms make?

The most common mistakes include marking up content that doesn't appear on the page (which violates Google's guidelines), using incorrect nesting of schema properties, providing incomplete schema with missing required fields, duplicating schema across pages inappropriately, implementing FAQ schema on pages without visible FAQ content, and failing to update schema when business information changes.

11

Should I use a WordPress plugin for schema markup?

WordPress plugins like Yoast SEO, Rank Math, and Schema Pro can handle basic schema implementation for blog posts and pages. However, for law firm-specific schema like Attorney, LegalService, and practice-area Service markup, plugins typically lack the granularity needed. The best approach is using a plugin for foundational schema (Organization, BreadcrumbList, BlogPosting) and custom JSON-LD for law-specific types.

12

How often should I update my law firm's schema markup?

Update schema markup whenever business information changes: new address, phone number, hours, attorneys, practice areas, or services. Review your schema quarterly to ensure accuracy. After any website redesign or migration, verify that schema is still present and correct on all pages. Google Search Console will flag structured data errors, so monitor it monthly as part of your SEO maintenance.

Next step

Need schema done
right?

Book a free 45-minute strategy session. We'll audit your structured data, identify missing schema opportunities, and show you exactly how proper markup can improve your search visibility.

Book my strategy call Free SEO Audit
No obligation 100% confidential Custom roadmap included