Law Firm Schema Markup: Technical SEO Guide
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 best part about schema markup: it’s virtually zero competition. While every PI lawyer in your city is fighting over the same keywords, almost none of them have proper schema markup. This is free SEO advantage sitting on the table.
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: Most law firms don’t use it, so you immediately stand out
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": "Attorney",
"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 Schema
Use this on individual attorney bio pages. It tells Google that this page is about a specific attorney with specific qualifications.
{
"@context": "https://schema.org",
"@type": "Attorney",
"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": "jsmith@example.com",
"worksFor": {
"@type": "LegalService",
"name": "Smith & Associates",
"url": "https://www.example.com"
},
"alumniOf": [
{
"@type": "EducationalOrganization",
"name": "State University School of Law"
},
{
"@type": "EducationalOrganization",
"name": "State University"
}
],
"knowsAbout": [
"Personal Injury Law",
"Car Accident Claims",
"Truck Accident Litigation",
"Wrongful Death Cases"
],
"areaServed": {
"@type": "City",
"name": "Houston",
"containedInPlace": {
"@type": "State",
"name": "Texas"
}
}
}
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 entityknowsAbout— practice areas and specialtiesareaServed— geographic service area
LegalService Schema
Use this on your homepage or main practice area pages. It tells Google your firm is a legal services provider.
{
"@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": "info@example.com",
"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:
| 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 Attorney and LegalService 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.
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 |
| 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 |
| Attorney | Attorney knowledge panel | 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 |
Implementation Priority
If you’re starting from scratch, implement in this order:
- LegalService schema on your homepage — highest impact, establishes your firm entity
- Attorney schema on bio pages — helps with name searches and professional recognition
- 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.