# LocalBusiness JSON-LD schema is present

- **Pattern:** `ab-001764` (`marketing-local-seo.local-schema.local-business-jsonld`)
- **Severity:** critical
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001764
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001764)

## Why it matters

Without a LocalBusiness JSON-LD block using schema-org LocalBusiness type, Google has no machine-readable signal to populate Knowledge Panels, local pack results, or Maps entries for your business. Competitors with this schema in place get rich search result features — star ratings, hours, phone number — that yours will not. Omitting it doesn't just hurt rankings; it makes your business invisible to the structured-data pipeline that drives local discovery at scale.

## Severity rationale

Critical because the absence of LocalBusiness JSON-LD eliminates eligibility for Google's local pack, Knowledge Panel, and map results — the primary discovery channels for local businesses.

## Remediation

Add a JSON-LD script block to `app/layout.tsx` using the most specific schema-org LocalBusiness subtype that fits your business. Generic `Organization` schema does not satisfy this requirement.

```tsx
// app/layout.tsx
<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{ __html: JSON.stringify({
    "@context": "https://schema.org",
    "@type": "Plumber",
    "name": "Springfield Plumbing",
    "url": "https://springfieldplumbing.com"
  })}}
/>
```

Replace `"Plumber"` with the correct LocalBusiness subtype from schema.org (e.g., `Restaurant`, `Dentist`, `LegalService`).

## Detection

- **ID:** `local-business-jsonld`
- **Severity:** `critical`
- **What to look for:** Search for `application/ld+json` script blocks in layout or page files. Check for JSON-LD with `@type` set to `LocalBusiness` or any recognized subtype (e.g., `Restaurant`, `MedicalBusiness`, `DentalClinic`, `LegalService`, `AutoRepair`, `HealthAndBeautyBusiness`, `HomeAndConstructionBusiness`, `LodgingBusiness`, `SportsActivityLocation`, or any other schema.org LocalBusiness subtype). Check for dedicated structured data component files or utility functions that generate JSON-LD.
- **Pass criteria:** Count all `application/ld+json` script blocks across the codebase. At least 1 JSON-LD block with `@type` that is `LocalBusiness` or a recognized LocalBusiness subtype is present in a layout or page component that renders on the site's primary location page (home, contact, or a dedicated location page). Report the count of JSON-LD blocks found even on pass.
- **Fail criteria:** No JSON-LD structured data found anywhere in the project, or JSON-LD is present but does not use a LocalBusiness type (e.g., only `WebSite` or `Organization` schema without LocalBusiness). Do not pass when only `Organization` schema exists without `LocalBusiness`.
- **Skip (N/A) when:** Whole-audit N/A rule applies (project is not a local business). Signal: no local business indicators found per the detection criteria above.
- **Detail on fail:** Describe what was found. Example: `"No JSON-LD structured data found in any layout or page file"` or `"JSON-LD present in layout.tsx but uses @type: Organization — no LocalBusiness type found"`
- **Remediation:** Add a JSON-LD script block to your root layout or home page:

  ```html
  <script type="application/ld+json">
  { "@context": "https://schema.org", "@type": "LocalBusiness", "name": "Your Business" }
  </script>
  ```

  Use the most specific LocalBusiness subtype that fits your business (e.g., `Restaurant`, `Dentist`, `Plumber`).
- **Cross-reference:** For broader structured data and SEO strategy, the Advanced SEO audit covers additional schema types and optimization techniques.

## External references

- schema-org LocalBusiness

Taxons: findability

HTML version: https://auditbuffet.com/patterns/ab-001764
