← Back to blog

Schema Markup for Law Firm Websites: The LegalService Structured Data Guide

09 August 2026·6 min read
Quick answer: LegalService schema is structured data that tells Google exactly what your firm is, where it operates, and what practice areas you cover — in a format machines can read cleanly, rather than guessing from your page copy. It won't magically boost rankings on its own, but it helps Google understand and display your firm correctly (think knowledge panels, local pack eligibility, and richer search results). Most law firm websites either have no schema at all or a generic template that doesn't reflect their actual practice areas. Fixing it is a genuinely low-effort, one-off technical job. 🚀

Here's the uncomfortable truth about most law firm websites: the humans understand exactly what the firm does within about four seconds of landing on the homepage, but Google is still squinting. Structured data is the difference between telling a search engine "we do family law, commercial disputes and wills" in prose it has to interpret, versus handing it a clean, structured answer it can trust and display 💖. It's one of the few genuinely "set and forget" pieces of SEO — implement it properly once, and it keeps working in the background indefinitely.

What most law firms get wrong with schema

The most common mistake is using generic "LocalBusiness" schema copied from a template, which tells Google you're a business but not that you're specifically a legal service — so you miss out on the more relevant display treatment schema.org actually offers for firms like yours. The second mistake is far worse: firms that add an aggregateRating field with a rating and review count that isn't backed by genuine, verifiable reviews on the page. That's not just an SEO risk, it's a straightforward violation of Google's structured data guidelines, and it can get your rich results — or your whole site — penalised. The third, quieter mistake is setting it up once during a website build and never touching it again, so as the firm adds practice areas or offices, the schema quietly goes stale and stops matching the actual page content.

Copy-paste LegalService JSON-LD template

Drop this in a <script type="application/ld+json"> tag in your page's <head>, then replace every bracketed placeholder with your firm's real details:

{
  "@context": "https://schema.org",
  "@type": "LegalService",
  "name": "[Firm Name]",
  "image": "[https://yourfirm.com.au/logo.jpg]",
  "url": "[https://yourfirm.com.au]",
  "telephone": "[+61-X-XXXX-XXXX]",
  "priceRange": "[$$ or "Contact for pricing"]",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[Street address]",
    "addressLocality": "[Suburb]",
    "addressRegion": "[State]",
    "postalCode": "[Postcode]",
    "addressCountry": "AU"
  },
  "areaServed": [
    "[Suburb/Region 1]",
    "[Suburb/Region 2]"
  ],
  "openingHours": "Mo-Fr 08:30-17:00",
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Practice Areas",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "[Practice Area 1, e.g. Family Law]"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "[Practice Area 2, e.g. Wills & Estates]"
        }
      }
    ]
  }
}

On aggregateRating: only add this field if you have genuine, verifiable reviews displayed on the same page, with a real count and average. If you're not 100% sure, leave it out entirely — the risk of a manual action isn't worth the marginal ranking benefit.

Commercial/dispute law firm: Their old schema listed "LocalBusiness" with no practice areas at all. Rebuilding it as LegalService with a proper hasOfferCatalog covering commercial litigation, contract disputes and insolvency meant Google started surfacing the right service pages for those specific searches instead of just the homepage.
Family law firm: This firm had three offices across the Gold Coast and Brisbane but only one schema block on the homepage listing one address. Adding per-location LegalService schema on each office's dedicated page helped each location show up properly in local search for its own suburb, rather than all three competing for the same page.
Multi-practice-area suburban firm: With eight different practice areas on one site, the temptation was one giant schema block listing everything on every page. Instead, each practice area page got its own scoped schema entry (matching what was actually on that page), which meant the structured data actually matched what a person landing on that URL would find.

How it actually works, mechanically

  • Placement: the JSON-LD script sits in the <head> (or before the closing </body>) of each relevant page — homepage plus every location and practice area page, ideally.
  • Validation: always test with Google's Rich Results Test before publishing — a single missing comma breaks the whole block silently.
  • Consistency: your name, address and telephone fields need to match your Google Business Profile exactly, character for character — mismatches are a known trust signal issue.
  • Timeline: Google doesn't reprocess schema instantly — expect anywhere from a few days to a few weeks for it to reflect in search results, depending on how often your pages get crawled.
  • Maintenance: update the schema every time you add a practice area, open a new office, or change your hours — it's a five-minute edit, not a rebuild.
💡 Schema is a support act, not the headliner. It helps Google understand and display a page correctly — it doesn't compensate for thin content or a weak page. Get the actual page copy right first, then let schema make sure it's read correctly.

Mistakes to avoid

  • Using generic LocalBusiness schema instead of LegalService.
  • Adding aggregateRating without genuine, displayed reviews to back it.
  • Letting name/address/phone details drift out of sync with your Google Business Profile.
  • One giant schema block that doesn't match the specific page it's sitting on.
  • Setting it up once at launch and never updating it as the firm grows.
  • Skipping validation and publishing broken JSON-LD that search engines simply ignore.

Frequently asked questions

Will adding LegalService schema improve our Google rankings?

Not directly, and it's important to be honest about that — schema is not a confirmed ranking factor on its own. What it does is help Google understand your page correctly and become eligible for richer display treatments, which can improve click-through rate even without a ranking change. Think of it as removing friction, not adding rocket fuel.

Do we need a developer to add this, or can our marketing team do it?

Most website platforms (including common law firm site builders) let you paste custom code into a page's header settings without developer access. If your platform locks that down, a developer will need roughly 15-30 minutes per template, which is a very small job worth asking for.

Should every page have its own schema, or just the homepage?

Ideally every page that represents a distinct location or practice area gets its own scoped schema matching that page's actual content. A single homepage-only block is better than nothing, but it undersells firms with multiple offices or a wide range of services.

Is it risky to list practice areas we don't heavily focus on?

Only if it's misleading. If you genuinely handle a practice area, even occasionally, it's fine to list it. Listing something you don't actually practise just to capture search traffic risks both a poor user experience and, depending on how it's framed, a misleading advertising problem — which brings you back to the same rules covered in our legal advertising compliance guide.


Keep reading 🤍

Share
Written by
Kate, founder of Chronically Online

I help Gold Coast and Brisbane businesses grow with branding, websites and marketing that actually works.

Work with me ✦