InterCore Technologies
● InterCore · Schema Markup for Law Firms · Since 2002

Schema Markup for Law Firms

Be unambiguous to AI

Make your law firm machine-readable to AI search engines — so they can find, trust, and cite you without ambiguity. Schema.org markup is the translator between your visible content and how models understand it.

Get your free AI visibility report →Explore the map ↓
By Scott Wiseman·CEO & Founder, InterCore Technologies·Updated Jul 2026
Quick
answer

Schema markup (JSON-LD) is structured data that tells AI search engines and models exactly who your law firm is, where it practices, and what it does — in a machine-readable language they trust. A complete entity graph (Organization, LegalService, Attorney, LocalBusiness, Court) linked by shared identifiers lets models quickly find, corroborate and cite you across ChatGPT, Claude, Gemini, Perplexity and Google AI Overviews.

TL;DR — Key takeaways
  • Schema is a translator: your visible content + structured data = AI can read and trust it.
  • The fundamental entity types for law firms are Organization (the firm), Attorney/Person (the lawyers), LegalService (what you do), LocalBusiness (your offices), and BreadcrumbList + WebPage.
  • One firm identity with a consistent @id means every mention of your firm on the page references the same entity, so models don't split you into two different organizations.
  • The strongest signal is sameAs — linking your firm to its Google Business Profile, Avvo, Justia, LinkedIn and Wikidata profiles so models know these are all you.
  • Schema must match visible content exactly — never mark up invisible FAQs, never claim an aggregate rating you don't have displayed, never fabricate fields.
  • The payoff is ambiguity-free retrieval: when an AI searches for lawyers in your practice area and location, schema makes it unmistakable that your firm matches.

Use the interactive map below to explore each one — click any node to read what it covers and jump to its page.

InterCore · Schema guides

The schema markup cluster

The guides that make your firm machine-readable and trustworthy to AI.

5
Schema guides
In detail

How AI engines use schema to find and trust a law firm

The machine-readable layer — and how to get it right.

Schema

What Is Schema Markup?

What Is Schema Markup? A Plain-English G

Schema markup is structured data (JSON-LD format) that adds semantic meaning to web pages, telling search engines, AI systems, and browsers exactly what information is on your page: who you are, where you are, what services you offer, and how to contact you.

Schema
Explore →
Schema

LegalService & Attorney Schema

LegalService and Attorney Schema: Struct

LegalService is a LocalBusiness subtype that describes a legal service offered by a firm. It carries properties like areaServed (the jurisdictions you serve), telephone, address, and a provider reference to the firm Organization. LegalService is the entity type that AI search engines use to match user queries about legal services to your firm.

Schema
Explore →
Schema

FAQPage & HowTo Schema

FAQPage and HowTo Schema for Law Firms:

FAQPage schema marks frequently asked questions on your site so Google and AI search engines can understand and surface your Q&A content. Each question and answer pair becomes its own indexed entity.

Schema
Explore →
Schema

LocalBusiness & Multi-Office Schema

LocalBusiness and Multi-Office Schema fo

LocalBusiness is a schema.org type for location-specific entities: a single office, a restaurant, a retail location. Law firms with multiple offices need multiple LocalBusiness nodes, each representing one office with real, verified geo-coordinates, address, phone, hours, and reviews.

Schema
Explore →
Definition

What is schema markup and why do law firms need it?

Schema markup is structured data — text in a machine-readable format — that tells AI search engines and language models exactly what your law firm is, where it operates and what it does. The standard format is JSON-LD (JavaScript Object Notation for Linked Data), hosted in a <script> tag on your page alongside your visible HTML.

Law firms need it because it solves the ambiguity problem. When an AI engine reads prose about 'a law firm in Austin handling personal injury,' it has to guess which details are core facts and which are marketing flavor. Schema removes the guessing: you declare Organization { name: 'Your Firm', address: '...' } and the model knows instantly what to expect. That speed and certainty makes you more retrievable and trustworthy.

The payoff is directness: instead of an AI engine parsing your site to infer your details, it reads schema and finds them in a fraction of a second. That efficiency matters when models are deciding which firm to cite first.

The stack

What schema types must a law firm include?

The core types for law firms are Organization (the firm itself), LegalService (what you do), Attorney or Person (the lawyers), LocalBusiness (your offices), WebPage (every page you publish), BreadcrumbList (your site navigation) and FAQPage (if you have a FAQ). These types, wired together with a shared @id for your firm, form an entity graph that models can traverse and understand.

Organization is the root. It holds your firm's name, address, phone, logo, aggregate rating (if real and displayed) and sameAs links to your Google Business Profile, Avvo, Justia and LinkedIn company page. This node is declared once in your site footer and referenced by @id everywhere else.

LegalService describes each practice area or service you offer — what it's called, what it covers, the provider (your firm, by @id), and the area served (your jurisdiction). One LegalService per major practice area; each linked to your firm.

Attorney (a subtype of Person) represents each lawyer. It carries the attorney's name, credentials (admitted to the state bar), the firm they work for (provider pointing to your firm @id), and ideally a photo and biography URL.

LocalBusiness is optional for your firm, but essential for multi-office firms — each office is a separate LocalBusiness node with its own address, hours and phone, all linked to the parent Organization.

WebPage, BreadcrumbList and FAQPage are utility types that structure your content. Every page gets a WebPage node; navigation gets a BreadcrumbList (visible on the page and in schema); FAQs get a FAQPage with question-and-answer pairs.

TypeCarriesDeclared once or per item?Example
OrganizationFirm name, address, phone, logo, aggregate rating, sameAs linksOnce (in site footer)yourfirm.com/#organization
LegalServiceService name, description, practice area, provider (firm @id), areaServedOne per practice areaLegalService for 'Personal Injury Litigation'
Attorney/PersonName, credentials, firm (provider), photo, bio URLOne per lawyerPerson for 'Sarah Chen, Partner'
LocalBusinessOffice address, hours, phone (for multi-office firms only)One per physical officeLocalBusiness for 'Downtown Office'
WebPagePage title, description, author, datePublished, dateModifiedOne per pageArticle or BlogPosting for blog posts
BreadcrumbListNavigation breadcrumbs (visible on page)Once (site-wide)Home > Practice Areas > Personal Injury
FAQPageQuestion-and-answer pairs (visible on page)Per FAQ pageFAQPage for 'Frequently Asked Questions'

The core schema types for law firms and what each carries.

The core concept

How does @id prevent your firm from being split into two entities?

An @id is a unique, stable identifier for an entity. For your firm, it's typically your site URL with a fragment — yourfirm.com/#organization — or a standard URN. When you declare your firm's full details (name, address, phone, aggregate rating) under that @id once, every page on your site references that @id instead of re-declaring the firm.

This prevents fragmentation. Without @id, you might list your firm on the homepage with all details, then on a practice-area page list it again with fewer details (maybe just name and phone). An AI model reading both declarations might think they're two different firms — 'InterCore, Inc.' and 'InterCore Legal Marketing' — and fail to connect them. With @id, you declare it once and reference it everywhere, so models know it's the same entity.

Technically, @id is a pointer: instead of { '@type': 'Organization', 'name': 'Your Firm', 'address': '...' } on page A and again on page B, you put the full declaration in one place and on page B you use { '@id': 'yourfirm.com/#organization' }, which tells models 'look up the entity at that ID.' This is how you avoid duplication and ensure models treat your firm as one coherent identity across your site.

Trust through corroboration

Why is sameAs the single strongest field for law firm schema?

sameAs is a list of URLs pointing to profiles that represent the same entity. For a law firm, it includes your Google Business Profile, Avvo page, Justia profile, LinkedIn company page and maybe your Wikipedia entry or Crunchbase profile. When an AI engine reads your schema and sees 'sameAs': [ 'https://maps.google.com/...', 'https://avvo.com/...', ...], it knows to look at those profiles to verify you.

This is powerful because third-party profiles are corroboration. Your site can claim anything; your Google Business Profile and Avvo are independently maintained by you with real reviews and data entry friction. When models see your schema linking to a verified GBP with a real address and a 4.8-star rating, they become confident that the claim 'We practice in Austin' is genuine — because Google already verified it.

The payoff is higher citation confidence. If your schema includes sameAs links to 3+ major directories (GBP, Avvo, Justia) all showing the same firm name and location, models prefer citing you over a competitor whose schema points only to themselves. Corroboration is the difference between 'this firm says they're in Austin' and 'Google, Avvo and Justia all say this firm is in Austin.'

DirectoryWhat models verifyWhy it mattersHow to get your URL
Google Business ProfileReal address, phone, hours, reviews, categoriesFirst-party trust; no single source is more authoritative for local.Claim your business at business.google.com
AvvoBar admission, practice areas, reviews, years in practiceLawyer-specific; directly credentialing expertise.Claim at avvo.com/connect
JustiaBar admission, practice areas, firm profile, website linkLong-standing legal directory; models recognize it.Claim at justia.com for free profile
Martindale-HubbellRatings, practice areas, firm size, years in practiceOldest legal directory; legacy trust signal.Martindale.com; claim your firm
LinkedIn CompanyFirm size, founded date, industry, follower count, postsCorroborates the firm as a real organization; shows activity.linkedin.com; create a company page
WikipediaFirm description, history, notable cases (if notable enough)Rare for smaller firms; very high trust if present.Only if the firm is nationally prominent

The sameAs directories that corroborate law firms, and what models check.

The truth rule

Why schema must match visible content — and never fabricate.

Schema is a translator for content that already exists on your page. If you mark up an aggregate rating of 4.8 stars in schema, that exact rating must be displayed visibly on the page — quoted from your Google Business Profile, with a screenshot, or with the real stars. Never mark up an invisible rating or a different number than what's actually on your site.

The reason is model behavior: when an AI engine retrieves your page and reads both your visible HTML and your schema, it checks them against each other. If schema says 'aggregateRating: 4.8' but the visible page shows 4.6, the mismatch signals either incompetence or dishonesty. Models learn to distrust mismatches and may penalize you or lower your citation likelihood.

The strict rule: if a field is in your schema, it must match your visible content. If you don't have a visible, third-party aggregate rating on the page, don't mark up aggregateRating. If you have an FAQ on the page, mark it up as FAQPage; if the FAQ is invisible (client-side only or hidden), don't mark it. This is why we say the truthfulness gate is absolute — uncorroborable schema is a liability, not an asset.

The AI layer

How schema helps AI engines decide whether to cite your firm.

Most AI engines use Retrieval-Augmented Generation (RAG): the model embeds a user's question, retrieves candidate passages from the web, then writes an answer citing the best sources. After retrieval, the model verifies each source's identity and credibility using schema and third-party signals. Your firm's schema is the machine-readable identity proof.

Here is the flow: an AI engine retrieves a passage from your site saying 'InterCore specializes in AI-driven legal marketing.' It then checks: Who published this? Is there schema claiming this is from InterCore? Does the schema have sameAs links to GBP, Avvo and LinkedIn? Are those profiles consistent? If yes to all, the model is confident this passage is genuine and cites it first. If schema is absent or sameAs links don't corroborate, the model may distrust the passage and cite a competitor instead.

This is why sameAs is the strongest field: it transforms your schema from an unsupported self-claim into a corroborated identity. A complete entity graph — one firm @id, full details declared once, linked to real GBP, Avvo and Justia profiles — is how you become unmistakable to AI.

Questions this page answers

The questions clients actually ask

The intents AI engines fan a search into — and where we make your firm the answer.

What
  • What is schema markup and what types do law firms actually need?
  • Define JSON-LD plainly; show Organization, LegalService, Attorney, LocalBusiness, WebPage, FAQPage as the core stack.
Why
  • Why does schema help AI engines find and trust my firm?
  • Explain: RAG retrieval uses schema to verify entity identity and corroboration; sameAs links are the trust signal.
How
  • How do I build a schema entity graph that doesn't split my firm into two?
  • Show: one Organization @id, referenced throughout; consistent sameAs links; no re-declarations with fewer details.
Where
  • Where do I declare my firm's schema — the homepage, every page, or just once?
  • Once in the site layout/footer; every other page references it by @id. Explain why this prevents duplication and drift.
When
  • When should I update my schema — every post or only when my firm changes?
  • Real changes (address, phone, attorney, service area) get immediate updates; dateModified updates with content edits.
Who
  • Who should be listed as the author — the firm or an individual attorney?
  • If a lawyer actually authored/reviewed it, create a Person node and reference it; otherwise use the firm LegalService @id.
Why InterCore

Why schema markup is critical for law firm AI visibility

🤖 Machines read faster than humans
Schema tells an AI engine exactly what your firm is and where, without guessing from prose. Structured data cuts through ambiguity and accelerates retrieval.
🔗 One identity, corroborated
A shared @id across all pages + sameAs links to your GBP, Avvo, Justia profiles make your firm unambiguous. Models can trust what they find because multiple sources corroborate it.
📋 Passage retrieval needs structure
AI engines retrieve at the passage level and validate using structured data. A clean FAQ schema, rich LegalService type and fact-checkable fields make your answer quotable.
✅ Schema is the trust signal
When your schema matches your visible content exactly and carries corroborating sameAs links, models learn to cite you first because they can verify you in seconds.
★ Leading AI marketing agency for law firms — since 2002
#1 GEO Pioneer
First & only agency specializing in Generative Engine Optimization
24 years
Serving law firms & Fortune 500s since 2002
200+ firms
Law firms helped dominate their markets
Fortune 500
AI built for Marriott, Six Flags, NYPD & Atos
18:1–21:1
Average law-firm marketing ROI
FAQ

Frequently asked questions

Schema markup is structured data (JSON-LD) that translates your visible content into machine-readable language AI engines understand. Law firms need it because it makes your firm, practice areas, locations and contact details machine-checkable — so models can quickly find, disambiguate and verify you without relying on natural-language parsing, which is slow and error-prone.

The core types are Organization (your firm), LegalService (the services you offer), Attorney or Person (the lawyers), LocalBusiness (your physical offices), WebPage (every page), BreadcrumbList (navigation), FAQPage (your FAQs), and Article/BlogPosting (if you publish content). These types, wired together with a shared @id for your firm, build an entity graph AI engines can traverse.

An @id is a unique identifier for an entity — typically your firm's URL like yourfirm.com/#organization. Instead of redeclaring your firm's name, address and phone on every page, you reference it by @id. This tells models 'this is the same firm' across your entire site. One @id, referenced consistently, prevents the engine from splitting your firm into multiple identities.

sameAs is a list of URLs proving 'all these profiles are the same firm' — your Google Business Profile, Avvo page, Justia profile, LinkedIn company page, maybe your Wikipedia entry. When models see your firm's schema includes sameAs links to real, verified third-party profiles, they're confident in who you are and cite you accordingly.

Just once. Declare your firm's full Organization node (with all addresses, phones, sameAs links) in your site layout or footer once, then reference it by @id on every other page. This makes updates easy and keeps the schema consistent. Never redeclare the same firm with different (fewer) details on different pages.

Only if you have a real, visible aggregate rating displayed on the page (from Google Business Profile, Avvo or similar third-party source, not self-reported). Schema must match visible content — never mark up a rating you don't display. If your GBP has 4.8 stars and you quote that on the page, then yes, include the aggregateRating with the exact number.

No. Schema must match visible content exactly. If you mark up a question-and-answer pair in FAQPage schema, it must appear on the page where a visitor can read it. Invisible schema is a mismatch and signals unreliability to engines.

Most AI engines use Retrieval-Augmented Generation (RAG). After retrieving passages, they verify the source's entity details using schema — who the author is, which firm published it, what credentials are claimed. Rich, consistent schema with corroborating sameAs links helps models confirm they can trust the passage and cite it confidently.

No. Create a Person or Attorney node only if the lawyer actually authored or reviewed the page. If the page is published by the firm without a named author, use the firm's LegalService @id as the provider or publisher. Never create invisible schema nodes.

The core required fields are name, serviceType (or knowsAbout for practices), provider (linked to your firm by @id), areaServed (your jurisdiction), and ideally price/priceRange if applicable. You can add telephone, email, url and image. Never declare a LegalService and leave provider empty — that breaks the entity link.

Update it whenever your firm's details change — a new address, phone, service area or attorney. Update dateModified on the WebPage whenever the page content changes. Schema is a living document tied to your real, current firm state. Don't let it drift from reality.

Run it through validator.schema.org (checks syntax and completeness) and Google's Rich Results Test (checks eligibility for rich results). Both are free. Validate your visible content matches every schema field. Then test real retrieval: run a client query through Claude or ChatGPT and see if your firm is cited — if not, the schema alone isn't sufficient, and you likely need deeper content or off-site corroboration.

Share

Ready to be the answer AI recommends?

Start with a free 23-point AI visibility report — see exactly where ChatGPT, Gemini, Claude and Perplexity cite your firm today, and what closes the gap. Delivered in 24 hours. No credit card.

Get my free AI audit →Call 213-282-3001