Skip to main content
AEO

Entities SEO for law firms: how AI engines build a graph of your practice

AI engines don't rank pages. They build a graph of entities and pull citations from it. Here's how to make your firm a node on that graph.

Pull up Perplexity. Ask it: "Who are the best DUI lawyers in Phoenix?"

You'll probably see three firms cited by name. None of them are necessarily the most expensive. None of them are necessarily ranked first on Google. The pattern, if you check a hundred queries like this one over a month, is that the firms cited share a specific shape: their name appears across multiple independent surfaces, their attorneys have structured profiles on bar directories that match the firm's website character for character, and they show up in court records you didn't write.

This is what entity SEO means. The shift from "rank pages" to "be recognized as a real thing" is the biggest change in legal marketing since local search arrived in 2014. Most law firm websites haven't adapted to it yet.

Worth a read whether you're DIY-ing your marketing or paying someone else to do it for you.

What an entity actually is

An entity is a thing the AI engine has decided is real, identifiable, and worth tracking.

Your law firm is an entity. Each named attorney is an entity. The city you practice in is an entity. The courthouse you've litigated in is an entity. "Personal injury law" as a concept is an entity. Each of these is a node in a graph that connects through edges: relationships the engine has inferred from sources it trusts.

Markey Law Partners (entity) connects to Boston (entity) via "located in." Markey Law Partners connects to Personal Injury Law (entity) via "practices." Joe Markey (entity, an attorney) connects to Markey Law Partners via "works at." Joe Markey connects to Suffolk County Superior Court via "represents clients at." And so on.

The denser the graph around your firm, the more confident the engine is, and the more often it cites your firm when a relevant prompt comes through. The thinner the graph, the more invisible the firm. Most law firms have thin graphs because nobody has worked the structure deliberately.

How the graph gets built

AI engines look at three categories of signals to decide what's an entity worth tracking.

First: consistency across sources. Your firm's name has to appear identically across the website, the state bar directory, Avvo, Martindale, Justia, the GBP listing, LinkedIn, and any press mentions. Identical means identical. "Smith and Associates" on the website, "Smith & Associates, P.C." on the bar listing, "John Smith Law" on Avvo creates three weakly-linked entities, not one strong one. The engine has to guess if these are all the same firm, and the safer guess is to discount all three.

Address consistency matters the same way. Suite 200 versus #200 versus Ste 200 looks the same to humans and reads as three different addresses to an entity matcher. Phone formatting (parentheses, dashes, periods, plus the country code, no country code) the same.

Second: schema markup. JSON-LD structured data in the page head tells the AI engine, in machine-readable form, what entity the page describes. For law firms the relevant types are LegalService, LocalBusiness, Organization, Person, and FAQPage. Skip schema and the engine has to guess from the prose. With schema in place, the engine has a clean handle on the entity.

Here's the bare minimum LegalService schema for a single-location law firm:

{
  "@context": "https://schema.org",
  "@type": "LegalService",
  "@id": "https://www.adamspark.law/#firm",
  "name": "Adams Park Personal Injury",
  "url": "https://www.adamspark.law/",
  "telephone": "+1-512-555-0100",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "401 Congress Ave Ste 1200",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "areaServed": {"@type": "State", "name": "Texas"},
  "priceRange": "$$",
  "serviceType": ["Personal Injury Law", "Wrongful Death", "Workers Compensation"],
  "sameAs": [
    "https://www.linkedin.com/company/adamspark-law",
    "https://www.avvo.com/attorneys/adams-park.html",
    "https://www.martindale.com/adamspark",
    "https://lawyerprofile.texasbar.com/Search.aspx?attyID=24048839"
  ]
}

Three things in that snippet do the entity work. The @id field gives the firm a permanent canonical identifier ("the firm at this URL is this entity"). The sameAs array tells the engine "this firm is the same entity as the one in these other places." And the serviceType array enumerates the practice areas with precision.

Third: independent third-party confirmation. The signal AI engines weight most heavily, and the one that's hardest to manipulate. State bar association listings carry near-canonical authority for "this is a licensed attorney at this firm." Court records (PACER, state dockets, published opinions) carry similar weight for "this firm has appeared as counsel in real cases." Local press mentions carry less individual weight but compound. Wikipedia, if applicable, is one of the single highest-weight surfaces.

The hierarchy, ordered roughly by what we've seen weight most:

  1. State bar directory listing (highest)
  2. County bar directory listing
  3. Court records and case law where the firm appears as counsel
  4. Avvo, Martindale, Justia profiles with complete data
  5. Wikipedia entry, if eligible
  6. Law school alumni page
  7. Reputable regional and national legal press
  8. Specialty bar association membership (NACDL, AAJ, AAML)
  9. CLE teaching engagements
  10. Google Business Profile
  11. LinkedIn (counts, but less than people think)
  12. The firm's own website (the floor, not the ceiling)

Notice how far down the firm's own website ranks. The site is necessary but not sufficient. The engine wants to see independent corroboration that the firm exists and does what the site claims.

The three-layer entity stack

Building a recognizable entity profile means working three layers at once.

Layer one: the on-site structure. Schema markup on every page that describes an entity. LegalService for the firm. Person for each named attorney. LocalBusiness for each physical office. FAQPage on every Q&A-style page. Organization in the homepage head. All linked together via @id references so the engine sees one firm with multiple connected nodes.

A common mistake at this layer: each attorney bio has Person schema, but none of them link via worksFor back to the firm's Organization. The attorneys become unconnected entities, weakly tied to anything. Add the worksFor field referencing the firm's @id, and the attorneys become connected nodes in the same graph.

Layer two: external profiles. Get the firm listed everywhere that matters in legal, with identical NAP across all of them. State bar first. County bar second. Avvo, Martindale, Justia, FindLaw, Lawyers.com. Google Business Profile. LinkedIn company page. Add each profile's URL to the sameAs array in your on-site schema. Audit quarterly for drift, because directory listings tend to mutate over time as platforms update their data models.

For an individual attorney, the equivalent stack is: state bar profile, county bar profile, Avvo, Martindale, LinkedIn, and the firm's bio page. Each gets the same headshot, the same credential summary, the same bar admission dates, the same law school. Identical formatting across all six. Add all six URLs to the Person schema sameAs array on the firm's bio page for that attorney.

Layer three: earned mentions. The hardest layer, and the most valuable. Press quotes in regional papers. Podcast appearances on practice-specific shows. CLE teaching. Bar journal articles. Court records where the attorney's name appears as counsel. Quote-of-record appearances in state or federal opinions. None of these are buyable. All of them compound. One quote in the Boston Globe as "Joe Markey, Boston personal injury attorney" does more for the graph than a year of LinkedIn posts.

The pace required is roughly: aim for two earned mentions per quarter per named attorney. Press quote, podcast appearance, journal article, CLE talk, court appearance counted in the public record. Two a quarter for two years is sixteen independent third-party confirmations. That's enough to build a credible entity in most local markets.

The two-attorneys-same-name problem

A specific failure mode worth knowing about.

If your firm has an attorney named John Smith and you Google "John Smith attorney," the AI engine has to disambiguate among hundreds of attorneys named John Smith across the US. Without strong entity signals it can't, and the result is that none of the John Smiths get cited individually. The engine defaults to citing the firm or skipping the attorney entirely.

The fix is in the schema. Person schema with hasCredential listing the bar admission with issuing organization (which jurisdiction's bar), alumniOf with the law school, knowsAbout with the practice areas, worksFor referencing the firm's @id, and homeLocation pointing at the metro. Plus the sameAs array linking to every third-party profile that uses the same name, ideally each with a matching headshot.

This is one of the cases where schema is not optional. With it, the engine knows your John Smith is the Boston personal injury one with a JD from Boston College. Without it, your John Smith is invisible.

The six-month rollout

Building entity authority is slow structural work, not a campaign. A realistic sequence:

Month one. Audit. Pull every existing external profile (state bar, Avvo, Martindale, GBP, LinkedIn). Score NAP consistency. Pull the firm's on-site schema. Score completeness. Make a punch list.

Month two. Fix NAP. Update every external profile to match the canonical version. Update the firm site's schema to include all the fields, with sameAs arrays populated.

Months three and four. Build out the on-site entity layer. Person schema on every attorney bio, Organization on the homepage, LocalBusiness on the locations page. Link them via @id references. FAQPage on every Q&A-style page. Validate every page in the Google Rich Results Test.

Months five and six. Start the earned mentions push. Pitch one regional reporter per month with a specific story angle that needs a legal expert. Apply to teach one CLE per quarter. Publish one piece in a bar journal or industry publication. Submit a profile to the state bar's "find a lawyer" feature if it's separate from the basic directory.

By month six, the firm's entity graph should be visibly thicker. By month twelve, citation patterns in ChatGPT, Perplexity, and AI Overviews should start to shift. By month eighteen, the firm should be appearing in AI summaries for at least three or four of its target query types.

The free check

Three quick tests, no tools required:

Ask ChatGPT and Perplexity: "Who are the top [practice area] lawyers in [your city]?" If your firm doesn't appear in the answer, your entity is weak in that combination. Repeat the query in three variations: "best," "experienced," "near me," "for [specific case type]." The variations matter because different prompts surface different entity slices.

Google your firm name in quotes. Skim the first three pages. Count how many results are sites you control (website, social) versus independent sources (bar, news, directories). A healthy firm entity has at least 60% independent sources by page three. If you're seeing your own social handles, your own bio pages, and broken old directory listings, the entity profile is thin.

Search your lead attorney's full name in Google. Look for a knowledge panel on the right side. If one appears, Google has decided the person is an identifiable entity. If it doesn't, that's the next thing to build toward. The knowledge panel is the visible signal that the entity work has reached scale.

Entity SEO doesn't fit a monthly retainer narrative well. There's no monthly content quota, no monthly keyword report. It's slow structural work that pays compounding returns. Most agencies don't lead with it because they can't bill for it cleanly. The firms that take it seriously start showing up in AI citations six to twelve months later, and the gap from competitors widens after that.