Local Business Schema Markup: The Code That Tells Google Exactly What You Are

Key Fact

Local business schema markup is JSON-LD structured data that declares a business's identity, services, location, and content type to search engines. Four types are essential: LocalBusiness, Service, FAQPage, and Speakable. Stacking all four in a single @graph block per page produces the most efficient schema implementation for Map Pack ranking support and AI Overview citation eligibility.

<15% local sites have complete schema
3.2x more AI citations with schema
@graph stacking = best practice

Google's crawler builds its understanding of your business from what it can infer and what you explicitly declare. Schema markup converts inference into declaration. A LocalBusiness schema block that names the business, specifies the service category, provides the NAP record, and links to the GBP profile tells Google's Knowledge Graph everything it needs to associate your website with your GBP listing. Without it, Google makes educated guesses. In our website audits, we find that fewer than 15% of local business websites have complete schema markup — and the ones that do consistently outrank those that do not on competitive queries. We build every client website with full @graph-stacked schema from day one because retrofitting it later costs more and delays ranking gains.

Get Schema Markup Installed

The Four Schema Types Every Local Business Needs

LocalBusiness Schema

The foundation. Declare the business name, address (or service area designation), phone number, URL, primary business type, and geographic coordinates. Use the most specific available schema type, "RoofingContractor" rather than "LocalBusiness" if a specific type exists for your category.

{
  "@context": "https://schema.org",
  "@type": "RoofingContractor",
  "name": "Example Roofing Company",
  "url": "https://example.com",
  "telephone": "+1-555-555-5555",
  "areaServed": {
    "@type": "City",
    "name": "Dallas"
  },
  "priceRange": "$$"
}

Service Schema

One block per service page, declaring the service name, description, and provider entity. Links each service page to the parent business entity.

{
  "@type": "Service",
  "name": "Asphalt Shingle Roofing Installation",
  "description": "Complete asphalt shingle roofing installation for residential properties in the Dallas metro area.",
  "provider": {
    "@id": "https://example.com/#business"
  }
}

FAQPage Schema

Applied to every page with a FAQ section. Enables the page to appear in rich FAQ snippets in search results and provides structured Q&A content for AI Overview citation.

{
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does a roof replacement take?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Most residential roof replacements take one to two days depending on roof size, pitch, and materials. We schedule replacements around confirmed clear weather windows."
      }
    }
  ]
}

Speakable Schema

Marks specific content sections as optimized for voice and AI citation. Applied to the AEO nugget and headline on every page.

{
  "@type": "Speakable",
  "cssSelector": [".aeo-nugget", "h1"]
}

Stacking Schema in a Single @graph Block

The most efficient implementation wraps all schema types for a page into a single @graph array. This tells Google's parser that all entities on the page are related, reducing the likelihood of misattribution.

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "RoofingContractor", "@id": "https://example.com/#business", "..." },
    { "@type": "WebPage", "@id": "https://example.com/asphalt-shingle-roofing/#page", "..." },
    { "@type": "Service", "..." },
    { "@type": "FAQPage", "..." },
    { "@type": "Speakable", "..." }
  ]
}

Validation and Testing

Every schema implementation must be validated before publishing. Use Google's Rich Results Test (search.google.com/test/rich-results) to confirm schema is parsed correctly. Schema errors, missing required properties, invalid types, malformed JSON, prevent rich result eligibility and may be ignored by the crawler entirely.

Common validation errors: missing required properties (name, url on LocalBusiness), JSON formatting errors (trailing commas, unclosed brackets), using a schema type that does not exist in schema.org's vocabulary.

Zero errors
required on Rich Results Test before any schema goes live — errors prevent rich result eligibility entirely

Frequently Asked Questions

Does schema markup directly improve Map Pack rankings?

Schema markup is a supporting signal, not a primary ranking factor. Its direct effects are on rich result eligibility, entity association between the website and GBP listing, and AI Overview citation probability. Indirectly, cleaner entity signals improve the confidence with which Google associates the website with the correct business entity, which supports Map Pack ranking.

Should schema be added to every page?

WebPage schema should be on every page. LocalBusiness schema should appear on the homepage. Service schema should be on every service page. FAQPage schema should be on every page with FAQ content. Speakable schema should be on every content page including blog posts. BreadcrumbList should be on all pages below the homepage.

Can I use a WordPress plugin for schema instead of coding it manually?

Yes, with caveats. Plugins like Rank Math and Yoast generate schema automatically based on page settings. They handle common types well but often miss Speakable schema and advanced stacking patterns. For full control, including @graph stacking and Speakable, manually coded JSON-LD placed in the page head is more reliable than plugin output alone.

Schema Is the Explicit Declaration. Use It.

In our website audits, fewer than 15% of local business websites have complete schema markup — and the ones that do consistently outrank those that don't on competitive queries. SEO Local installs full @graph-stacked schema from day one on every client website.

Get Schema Markup Installed
VALIDATED AGAINST GOOGLE RICH RESULTS TEST