Treat factual truth, vocabulary, and feature eligibility as separate tests.
Structured data can be syntactically valid and still describe the wrong office. It can describe the right office with a property that does not belong to that Schema.org type. It can be both true and valid without qualifying for a Google rich result. A green result from one validator does not settle the other two questions.
Factual truth comes first: does the rendered page establish the firm, person, office, service, or article being marked up? Vocabulary validity comes next: does Schema.org define the chosen type and property for that entity? Google feature eligibility is separate again, because Google supports a limited set of structured-data features under its own policies.
Build the markup from the rendered page.
List each visible fact, the entity it belongs to, the candidate Schema.org property, and the source that establishes it. Office and practitioner claims should agree with the law-firm local SEO record. If the firm cannot settle a fact in the visible page and its operating record, JSON-LD is the wrong place to settle it.
| Rendered fact | Entity | Candidate property | Evidence and check |
|---|---|---|---|
| Firm’s public name and canonical home | LegalService or Organization, as facts warrant | name, url | Visible identity; canonical resolves. |
| Real public office | LegalService | address | Visible contact facts and actual operation. |
| Named lawyer works at firm | Person linked to organization | employee or another factually correct relationship | Visible biography and confirmed relationship. |
| Geographic service scope | Organization or service | areaServed | Matches actual scope and visible copy. |
| Published article and author | Article and Person | author, headline, dates | Visible byline and genuine publication dates. |
Law-firm content marketing names the primary source, firm reviewer, last-checked date, and change trigger for update-sensitive claims. Schema should serialize those approved visible facts, not create a parallel claims system that nobody reviews.
Choose the type from the entity, not from the keyword.
Schema.org defines LegalService as a local business providing legally oriented services. It is a plausible type for a real law-firm service entity, not a label to add to any page containing legal language. A lawyer biography represents a Person. A maintained article represents an Article. The organization operating this SEO practice is not a legal-services provider and therefore uses Organization.
Current Schema.org documentation states that areaServed supersedes serviceArea.
{
"@context": "https://schema.org",
"@type": "LegalService",
"name": "Example Law Firm",
"url": "https://www.example.com/",
"address": {
"@type": "PostalAddress",
"streetAddress": "Real public address",
"addressLocality": "Example City",
"addressRegion": "CA",
"postalCode": "90000",
"addressCountry": "US"
},
"areaServed": "The market the firm actually serves",
"employee": [{
"@type": "Person",
"name": "Public-facing lawyer",
"url": "https://www.example.com/lawyers/name/"
}]
} This example is deliberately small. Add telephone, people, credentials, offices, and service areas only when the page visibly establishes them and the relationships are current. Multiple offices or lawyers may require linked entities rather than one site-wide object that repeats the same people and address everywhere.
A validator cannot verify the firm behind the markup.
The Schema Markup Validator checks vocabulary and syntax. Google's Rich Results Test checks supported search-feature eligibility. Neither can determine whether an address is a real office, a lawyer still works at the firm, a credential is current, or the page actually serves the area in its markup. Those checks remain with the firm and the rendered site.
Google's current search gallery has no LegalService rich-result feature. Valid LegalService markup therefore should not be sold as a route to a special law-firm result. It may still express the entity accurately, but that is a different claim from feature eligibility or ranking improvement.
- Inspect the rendered page and record its facts.
- Inspect the rendered JSON-LD.
- Validate vocabulary and syntax in Schema Markup Validator.
- Use Rich Results Test for a supported feature present on the page.
- Crawl representative templates after deployment and compare their markup with the visible surface.
- Recheck when a person, office, service, review source, or template changes.
Failure worth catching: one template emits the same office, people, or services on pages whose visible content represents different entities. The JSON-LD validates, but the site now contains a machine-readable factual contradiction.