Service path
Technical SEO and site audits
See how audits, implementation priorities, schema, and crawl cleanup are sequenced inside the service stack.
Review the serviceImplement schema markup on your law firm website. Attorney, LegalService, FAQPage, and LocalBusiness schemas with code examples. Start ranking higher!
Reading path
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.
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.
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).
Not every schema type is relevant to law firms. Here are the ones that matter, in order of impact.
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:
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.AdministrativeArea for counties. Don’t use County or State as types — these aren’t valid Schema.org types for this property.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.
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.
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.
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:
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.
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.
If you’re on WordPress, plugins can handle some schema automatically:
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).
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.
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:
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.
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.
Go to search.google.com/test/rich-results. Enter your page URL or paste your JSON-LD code. The tool shows:
Fix all errors before going live. Warnings are worth addressing but aren’t blockers.
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.
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.
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.
If you’re starting from zero, implement in this order:
Four weeks of focused work and your schema foundation is solid. From there, maintain it quarterly and add new schema as your site grows.
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?
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
The strongest next move is usually a technical service review, a deeper implementation guide, or a tool that helps you validate the basics.
Service path
See how audits, implementation priorities, schema, and crawl cleanup are sequenced inside the service stack.
Review the serviceGuide path
Get the broader technical framework for law firm websites, from crawlability to page architecture.
Read the guideTool path
Use the audit as a practical starting point if you need to separate urgent issues from cosmetic ones.
Run the auditTechnical SEO
A practical guide to LCP, INP, and CLS for law firm websites. Learn what the metrics mean, what breaks them, and how to fix the right things first.
Read the articleTechnical SEO
A practical guide to fixing law firm website speed without wrecking design, tracking, or conversions. Learn what to fix first and what to ignore.
Read the articleTechnical SEO
Google indexes your mobile site first. Fix the mobile issues killing your law firm's rankings -- tap targets, font sizes, popups, and load times. Get a free audit!
Read the articleFrequently asked questions
Quick answers to the most common questions about this topic.
01
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
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
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
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
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
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
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
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
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
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
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
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
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.