Insights/Tutorial
How to Add Schema Markup to a Professional Practice Website
A practical tutorial on the JSON-LD schema types that make law firms, accounting firms, and medical practices legible to AI engines — with copy-paste examples.
Schema markup is structured data that tells machines exactly what your website describes: who the firm is, where it operates, what it does. AI engines parse JSON-LD reliably and use it to confirm identity, authorship, and topic — inputs to whether they cite you. For a professional practice, four schema types do most of the work.
Which schema types does a professional firm need?
| Schema type | What it does | Priority |
|---|---|---|
LegalService / AccountingService / MedicalBusiness |
Defines the firm as a typed local entity | Required |
FAQPage |
Marks Q&A content for extraction | Required where FAQs exist |
Article + author |
Establishes authorship and dates on content | Required on every article |
Person |
Defines individual practitioners and credentials | High value |
Use JSON-LD in a <script type="application/ld+json"> tag — not microdata. It is the format every engine documents and parses best.
Step 1 — Define the firm entity
Place this on the homepage. Use the most specific type that fits: LegalService, AccountingService, MedicalBusiness, or ProfessionalService as the general fallback.
{
"@context": "https://schema.org",
"@type": "LegalService",
"name": "Your Firm Name",
"url": "https://yourfirm.com",
"telephone": "+1-512-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Congress Ave",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"areaServed": "Austin, TX",
"knowsAbout": ["Estate planning", "Probate", "Trust administration"],
"priceRange": "$$$"
}
The critical fields for entity resolution are name, address, and knowsAbout. The name and address must match your Google Business Profile, Bing Places, and directory listings character for character — inconsistency is the most common reason engines fail to resolve a firm as one entity.
Step 2 — Mark up practitioners
Engines increasingly answer "who is the best X" with people, not just firms. Each attorney, CPA, or physician bio page should carry:
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Jane Smith",
"jobTitle": "Managing Partner",
"worksFor": { "@type": "LegalService", "name": "Your Firm Name" },
"alumniOf": "University of Texas School of Law",
"knowsAbout": ["Estate planning", "Asset protection"],
"sameAs": [
"https://www.linkedin.com/in/janesmith",
"https://www.avvo.com/attorneys/janesmith"
]
}
The sameAs array matters most: it links the person to their profiles on platforms AI engines already trust, letting the engine merge those reputations into one entity.
Step 3 — Mark up FAQs
FAQPage schema carries outsized weight in citation studies. Two rules from extraction research: the question text in the schema must match the visible heading exactly, and 4–6 questions outperform longer lists — testing shows 20+ questions add no additional citation lift.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How much does estate planning cost in Austin?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most Austin estate plans range from $2,000 to $6,000 depending on complexity. A basic will package sits at the low end; trusts and asset-protection structures at the high end."
}
}]
}
Note the answer format: 40–60 words, self-contained, with specific numbers. That is the shape engines extract.
Step 4 — Validate and monitor
Run every page through Google's Rich Results Test and the Schema.org validator. Then confirm the pages are indexed in both Google Search Console and Bing Webmaster Tools — ChatGPT retrieves from Bing's index, and an unindexed page is invisible regardless of its markup.
Schema is necessary but not sufficient: it makes you legible, not recommended. The recommendation comes from the citation and authority work described in how ChatGPT chooses which firms to recommend.