Schema markup is one of the most underutilized SEO opportunities for law firms. It’s the code that helps search engines understand what your website is about, not just the words on the page, but the meaning behind them. When you tell Google “this page is about an attorney who practices personal injury law in Dallas,” you’re more likely to appear in relevant search results, knowledge panels, and rich snippets. This guide is the technical companion to our law firm website guide, if that guide covers what to build, this one covers how to help search engines understand it.
The opportunity is real, but it has shifted. A 2026 audit of 300 law firm websites across 20 US metros found that 49% have no legal structured data at all, and the half that do almost never finish the job. Among sites with legal schema, 86% mark up a phone number, but only 36% connect their social profiles through sameAs, 29% include map coordinates, and 12% list opening hours. While every PI lawyer in your city fights over the same keywords, your competitors are leaving their schema half-done. Adoption is a coin flip; completeness is the advantage.
What Schema Markup Is and Why It Matters
Schema markup (also called structured data) is code you add to your website that tells search engines what your content represents. It uses a standardized vocabulary from Schema.org to label things like your business name, address, phone number, practice areas, reviews, and FAQs.
What it does for you:
- Rich results in search: Stars from reviews, FAQ dropdowns, business information directly in search results
- Knowledge panels: The information box that appears when someone searches your firm name
- Voice search optimization: Virtual assistants pull from structured data to answer questions
- Better crawling and indexing: Search engines understand your pages more accurately
- Competitive advantage: 49% of law firm sites have no legal schema at all, and few of the rest have complete markup
What it doesn’t do: Schema markup is not a magic ranking factor. It won’t take a page from position 50 to position 1. But it can improve click-through rates by 20-30% when rich results appear, and it helps search engines match your pages to the right queries.
JSON-LD: The Implementation Method
There are three ways to implement schema markup: JSON-LD, Microdata, and RDFa. Use JSON-LD. It’s what Google recommends, it’s the easiest to implement, and it doesn’t require modifying your HTML content.
JSON-LD goes in a <script> tag in the <head> of your page. It looks like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LegalService",
"name": "Smith & Associates"
}
</script>
You can add this to your website template, individual pages, or through a WordPress plugin. No visible changes to your page; it’s code that only search engines read.
Attorney Bio Pages: Person Schema
Use this on individual attorney bio pages. It tells Google that this page is about a specific attorney with specific qualifications.
One correction to older guides: do not use the Attorney type. Schema.org deprecated it (along with LawFirm) and recommends LegalService for firms. The current best practice is a two-node pattern: the firm is a LegalService entity, and each attorney is a Person entity linked back to it.
{
"@context": "https://schema.org",
"@type": "Person",
"name": "John Smith",
"givenName": "John",
"familyName": "Smith",
"jobTitle": "Partner",
"description": "Personal injury attorney in Houston, Texas with 15+ years of experience handling car accidents, truck accidents, and wrongful death cases.",
"image": "https://www.example.com/images/john-smith.jpg",
"url": "https://www.example.com/attorneys/john-smith",
"telephone": "+1-713-555-0100",
"email": "[email protected]",
"worksFor": {
"@type": "LegalService",
"@id": "https://www.example.com/#organization",
"name": "Smith & Associates"
},
"alumniOf": [
{
"@type": "EducationalOrganization",
"name": "State University School of Law"
},
{
"@type": "EducationalOrganization",
"name": "State University"
}
],
"hasCredential": {
"@type": "EducationalOccupationalCredential",
"credentialCategory": "Bar Admission",
"name": "State Bar of Texas"
},
"knowsAbout": [
"Personal Injury Law",
"Car Accident Claims",
"Truck Accident Litigation",
"Wrongful Death Cases"
]
}
Key fields to include:
name,givenName,familyName, full name detailsjobTitle, Partner, Associate, Of Counseldescription, concise summary including practice area and locationimage, URL to professional headshottelephoneandemail, direct contactworksFor, links to the firm’sLegalServicenode (reference its@id)alumniOf, law school and undergraduate institutionshasCredential, bar admissions and certificationsknowsAbout, practice areas and specialties
Geography lives on the firm’s LegalService node (areaServed, address, geo), not on the Person. Roughly 15% of law firm sites still emit the deprecated Attorney type, so clearing it is a genuine differentiator.
LegalService Schema
Use this on your homepage or main practice area pages. It tells Google your firm is a legal services provider.
Don’t use the
LawFirmtype. Schema.org deprecated it alongsideAttorney, and a 2026 audit found it on just 0.3% of law firm sites.LegalServiceis the canonical type for firms.
{
"@context": "https://schema.org",
"@type": "LegalService",
"name": "Smith & Associates, Attorneys at Law",
"description": "Houston personal injury law firm helping accident victims recover compensation since 2008.",
"url": "https://www.example.com",
"telephone": "+1-713-555-0100",
"email": "[email protected]",
"image": "https://www.example.com/images/firm-logo.png",
"logo": "https://www.example.com/images/firm-logo.png",
"priceRange": "Free Consultation",
"address": {
"@type": "PostalAddress",
"streetAddress": "1234 Main Street, Suite 500",
"addressLocality": "Houston",
"addressRegion": "TX",
"postalCode": "77002",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 29.7604,
"longitude": -95.3698
},
"openingHours": [
"Mo-Fr 08:00-18:00"
],
"areaServed": [
{
"@type": "City",
"name": "Houston"
},
{
"@type": "State",
"name": "Texas"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Legal Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Personal Injury Representation"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Car Accident Claims"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Wrongful Death Claims"
}
}
]
},
"sameAs": [
"https://www.facebook.com/smithassociates",
"https://www.linkedin.com/company/smith-associates",
"https://twitter.com/smithlaw"
]
}
LocalBusiness Schema
If your firm serves a local market (which most do), LocalBusiness schema helps you appear in local search results and Google Maps.
{
"@context": "https://schema.org",
"@type": "LegalService",
"@id": "https://www.example.com/#organization",
"name": "Smith & Associates",
"image": "https://www.example.com/images/office-exterior.jpg",
"url": "https://www.example.com",
"telephone": "+1-713-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "1234 Main Street, Suite 500",
"addressLocality": "Houston",
"addressRegion": "TX",
"postalCode": "77002",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 29.7604,
"longitude": -95.3698
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "127"
}
}
Tip:
LegalServiceis a subtype ofLocalBusinessin Schema.org, so you get the benefits of both when you useLegalService. You don’t need to add a separateLocalBusinessschema.
FAQ Schema
FAQ schema creates expandable question-and-answer results directly in Google search results. These take up significant real estate and dramatically increase your visibility.
Add this to any page that includes frequently asked questions, practice area pages, blog posts, and dedicated FAQ pages.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does a personal injury lawyer cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most personal injury lawyers work on a contingency fee basis, meaning you pay nothing upfront and the attorney takes a percentage (typically 33-40%) of your settlement or verdict. If you don't win, you don't pay attorney fees."
}
},
{
"@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. However, there are exceptions that can shorten or extend this deadline. Consulting an attorney as soon as possible after an injury is recommended."
}
},
{
"@type": "Question",
"name": "What should I do immediately after a car accident?",
"acceptedAnswer": {
"@type": "Answer",
"text": "After a car accident, ensure everyone's safety and call 911. Document the scene with photos, exchange information with other drivers, and seek medical attention even if you feel fine. Do not admit fault. Contact a personal injury attorney before speaking with insurance companies."
}
}
]
}
Best practices for FAQ schema:
- Only use for genuine Q&A content that’s visible on the page (Google requires the content to be on-page)
- Keep answers concise (1-3 sentences is ideal for the schema; you can have longer answers on the page itself)
- Include 3-8 questions per page
- Target questions people actually search for
Warning: Google periodically changes which sites qualify for FAQ rich results. As of 2025, FAQ rich results are primarily shown for government and healthcare websites, with reduced visibility for other sites. However, the schema is still worth implementing, it helps search engines understand your content even when rich results aren’t displayed, and Google may expand eligibility again.
Review Schema
Review schema can display star ratings in search results, which significantly increases click-through rates.
{
"@context": "https://schema.org",
"@type": "LegalService",
"name": "Smith & Associates",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"bestRating": "5",
"ratingCount": "127"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Sarah J."
},
"reviewBody": "John Smith fought for me after my car accident when the insurance company offered almost nothing. He got me 10x what they originally offered. I can't recommend him enough."
}
]
}
Warning: Google has strict policies about review schema. Self-served reviews (reviews you write about yourself) violate Google’s guidelines. Only mark up reviews from third-party platforms (Google Business, Avvo, etc.) or reviews that were genuinely submitted by clients. Violating this can result in a manual penalty.
Schema for Multi-Location Firms
Firms with multiple offices need schema for each location. Use the @id property to create distinct entities and the department property to connect them.
{
"@context": "https://schema.org",
"@type": "LegalService",
"@id": "https://www.example.com/#organization",
"name": "Smith & Associates",
"url": "https://www.example.com",
"department": [
{
"@type": "LegalService",
"@id": "https://www.example.com/locations/houston/#location",
"name": "Smith & Associates - Houston",
"address": {
"@type": "PostalAddress",
"streetAddress": "1234 Main Street, Suite 500",
"addressLocality": "Houston",
"addressRegion": "TX",
"postalCode": "77002"
},
"telephone": "+1-713-555-0100"
},
{
"@type": "LegalService",
"@id": "https://www.example.com/locations/dallas/#location",
"name": "Smith & Associates - Dallas",
"address": {
"@type": "PostalAddress",
"streetAddress": "5678 Commerce Street, Suite 300",
"addressLocality": "Dallas",
"addressRegion": "TX",
"postalCode": "75201"
},
"telephone": "+1-214-555-0200"
}
]
}
Each location should also have its own Google Business Profile with matching NAP (Name, Address, Phone) information.
How to Implement Schema on Your Website
Method 1: Direct HTML (Any Website)
Add the JSON-LD script tag directly to the <head> section of each page. This works on any website platform.
Method 2: WordPress Plugins
Several plugins make schema implementation easier, and odds are you’re on WordPress anyway, like 72% of law firm websites:
| Plugin | Cost | Ease of Use | Flexibility |
|---|---|---|---|
| Rank Math | Free-$59/yr | Easy | High (built-in schema types) |
| Yoast SEO Premium | $99/yr | Easy | Medium |
| Schema Pro | $79/yr | Easy | High (dedicated schema plugin) |
| WP Schema (manual) | Free | Technical | Complete control |
Rank Math is the current best option for most law firms; its free version includes robust schema support with LegalService and Person types built in.
Method 3: Google Tag Manager
If you use Google Tag Manager, you can inject schema markup through custom HTML tags. This is useful when you don’t have direct access to edit your website’s code. Create a custom HTML tag with the JSON-LD script and set it to fire on the appropriate pages.
Testing Your Schema
Before and after implementing schema, test it:
-
Google Rich Results Test (search.google.com/test/rich-results): Paste your URL or code snippet. Shows if your schema is valid and which rich results it qualifies for.
-
Schema.org Validator (validator.schema.org): More detailed validation against the Schema.org specification. Shows warnings for recommended fields you may have missed.
-
Google Search Console: After implementation, monitor the “Enhancements” section for any schema errors or warnings that Google detects during crawling.
Schema Isn’t a Substitute for the Basics
The same 2026 audit found 65% of law firm websites fail at least one basic check, and the failures cluster in unglamorous places: 27% have missing or duplicate H1 headings, 15% have no tap-to-call phone link, 36% don’t link a privacy policy, and 13% display a copyright year from 2024 or earlier. Schema tells search engines what you are; these basics decide whether the site reads as trustworthy to the humans who land on it. If you’re editing templates to add schema anyway, audit these at the same time. Our law firm website guide covers the full checklist.
Common Mistakes
| Mistake | Impact | Fix |
|---|---|---|
| Schema content doesn’t match page content | Google penalty risk | Ensure schema reflects exactly what’s on the page |
| Missing required properties | Schema may not generate rich results | Use testing tools to check for required fields |
| Duplicate schema types | Confuses search engines | One primary schema type per page |
| Fake or self-generated reviews in schema | Manual penalty from Google | Only mark up genuine third-party reviews |
| Using Microdata instead of JSON-LD | Harder to maintain, no Google preference | Switch to JSON-LD |
Using deprecated types (Attorney, LawFirm) | Legacy vocabulary; weaker entity recognition | LegalService for the firm, Person for attorneys |
| Schema on pages that don’t exist | Wastes crawl budget, confusing signals | Only add schema to live, indexable pages |
| Not updating schema when info changes | Outdated info in search results | Review schema when you update page content |
Rich Result Opportunities for Law Firms
| Schema Type | Rich Result | Where to Use |
|---|---|---|
| LegalService | Business knowledge panel | Homepage |
| Person | Person knowledge panel, entity recognition | Bio pages |
| FAQPage | FAQ dropdowns in search | Practice area pages, blog |
| AggregateRating | Star ratings in search | Homepage, review page |
| Review | Individual review quotes | Testimonial page |
| BreadcrumbList | Breadcrumb navigation in search | All pages |
| Article | Article metadata in search | Blog posts |
| VideoObject | Video thumbnails in search | Pages with embedded video |
Schema and AI Search
Rich results aren’t the only reader of your markup anymore. AI answer engines, including Google AI Overviews, ChatGPT, and Perplexity, use structured data to work out which entity is which when they compose answers about lawyers and firms. A clean LegalService node connected through sameAs to your Google Business Profile, LinkedIn, and bar listings, with Person markup tying each attorney to the firm, gives these systems an unambiguous picture of who you are and what you’re credentialed to do. As search shifts from blue links to answers, entity clarity is becoming the main point of schema markup, not a side benefit.
Implementation Priority
If you’re starting from scratch, implement in this order:
- LegalService schema on your homepage, highest impact, establishes your firm entity
- Person schema on attorney bio pages, helps with name searches and professional recognition (not the deprecated
Attorneytype) - LocalBusiness details (address, hours, geo), critical for local search
- FAQ schema on practice area pages, potential for rich results, SEO value
- BreadcrumbList on all pages, easy to implement, improves search appearance
- Review/AggregateRating, only if you have legitimate third-party reviews
- Article schema on blog posts, lower priority but easy to automate
Schema markup is a one-time setup with ongoing benefits. Spend a few hours implementing it correctly, test it, and then update it whenever your firm information changes. In a competitive legal market where every SEO advantage matters, schema markup is one of the easiest wins available.