Person Schema for Attorneys: sameAs Done Right (With the JSON)
Person markup on an attorney profile tells search systems that the lawyer on the page, the State Bar record, the Avvo profile and the LinkedIn account are one person. Most firm sites either omit it or fill sameAs with the firm's social links. The correct fields, the correct sameAs targets, the JSON to paste, and how to validate it.
Short answer: Every attorney profile page should carry Person structured data with the lawyer's name, job title, the firm as worksFor, and a sameAs array that points to the lawyer's own profiles: the State Bar of California record, Avvo, LinkedIn, Justia and any bar association listing. Those links are how search systems confirm that the person on the page is the person in the directories. Pointing sameAs at the firm's Facebook page, which is what most sites do, confirms nothing.
What is Person schema for?
Search systems build a picture of an entity from every place it appears. For a lawyer that picture is assembled from the State Bar record, the directory profiles, the firm site, news mentions and reviews. Person markup with sameAs is the firm's way of saying "these are all the same person", which lets the system connect a strong directory profile to the site's page and vice versa.
The practical effect shows up in the knowledge panel that appears for a lawyer's name search, in the accuracy of "people also search for", and, since AI answers began citing sources, in whether an answer attributes a page to a named lawyer.
Which fields matter?
| Property | Value | Notes |
|---|---|---|
@type | Person | Not Attorney; the Attorney type is deprecated |
name | Full name as on the bar record | Match the bar's spelling |
jobTitle | "Attorney" or "Partner" | One value |
worksFor | The firm's LegalService node, by @id | Ties person to organization |
url | The profile page URL | Canonical |
image | A real headshot URL | Not a logo |
sameAs | Array of the lawyer's own profile URLs | See below |
knowsAbout | Practice areas as text | Optional; helps topical association |
alumniOf | Law school | Optional |
memberOf | Bar associations | Optional |
description | One sentence | Optional |
What goes in sameAs?
Only URLs for this person. In priority order for a California lawyer:
- State Bar of California attorney profile (
apps.calbar.ca.gov/attorney/Licensee/Detail/<number>) - Avvo attorney profile
- LinkedIn profile
- Justia lawyer profile
- Martindale or Lawyers.com profile, if maintained
- Super Lawyers profile, if listed
- Los Angeles County Bar Association or section directory entry
- A Wikipedia or Wikidata entry, in the rare case one exists
Not in sameAs: the firm's social pages, the firm's Google Business Profile, the firm's Yelp page. Those belong on the organization node.
What is the JSON?
Replace the placeholders; keep the structure.
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://www.examplefirm.com/attorneys/jane-doe#person",
"name": "Jane Doe",
"jobTitle": "Attorney",
"url": "https://www.examplefirm.com/attorneys/jane-doe",
"image": "https://www.examplefirm.com/images/jane-doe.jpg",
"worksFor": { "@id": "https://www.examplefirm.com/#organization" },
"knowsAbout": ["Family law", "Child custody", "Divorce"],
"alumniOf": { "@type": "CollegeOrUniversity", "name": "Loyola Law School" },
"memberOf": { "@type": "Organization", "name": "Los Angeles County Bar Association" },
"sameAs": [
"https://apps.calbar.ca.gov/attorney/Licensee/Detail/000000",
"https://www.avvo.com/attorneys/00000-ca-jane-doe-000000.html",
"https://www.linkedin.com/in/janedoe/",
"https://lawyers.justia.com/lawyer/jane-doe-000000"
]
}
The worksFor reference assumes the site's organization node uses #organization as its @id, which is the convention we use and the one most schema plugins follow. If the site has no organization node, add one on the home page first.
Where does it go?
On the attorney's own profile page, once. Not on every page the attorney is mentioned, and not in a site-wide footer. If the firm's blog posts carry Article markup, the author property there should reference the same @id, so the posts and the profile resolve to one person.
How do you validate it?
- Google's Rich Results Test will parse the page and show the
Personentity, though there is no rich result for it; use it for syntax. - The Schema Markup Validator at validator.schema.org checks the vocabulary.
- Open each
sameAsURL. A dead link or a link to the wrong person is worse than none.
Ten minutes per attorney.
What does not work?
- Putting
Personmarkup on a page with no visible name. Structured data must match what is on the page. sameAsto the firm's socials. Wrong entity.- The
Attorneytype. Deprecated; usePersonfor people andLegalServicefor the firm. - Expecting a ranking change. This is entity hygiene. It makes the rest of the work legible; it does not rank a page on its own.
The full organization and person setup for a law firm site is in the schema guide, and our schema generator produces both nodes from a form. The free visibility check reports whether each attorney's page carries valid Person markup and whether the sameAs links resolve. It is a small part of the law firm SEO service, done in the first month.
Check your firm
See whether ChatGPT, Perplexity, Gemini and Google AI Overviews name your firm for your practice area and city.
Free AI visibility check