Skip to content

Schema Markup for SMB Sites: The Three Types That Actually Help

Schema is one of the highest-ROI SEO investments. Three types cover 90% of the value.

John Cravey with AIFounder4 min readUpdated Jul 6, 2026

Schema markup is structured data that tells Google what your page is about beyond what the HTML says. It can earn you rich results (star ratings, FAQ panels, business hours, structured snippets) which dramatically improve click-through rates. It’s also one of the most over-engineered parts of SMB SEO. Three schema types cover 90% of the value for SMB sites. Here they are.

Free estimate · 2 minutes

Your Search Console data already shows the gap.

The estimate doubles as intake for an audit: we read your data, show where the clicks are being lost, and price the fix.

Type 1: Organization (for the site)

One Organization schema, placed on the homepage, identifying who the business is. Includes name, logo, URL, social profiles, contact info. Google uses this for the Knowledge Panel (the box that sometimes appears on the right side of branded searches) and to associate every page on your site with a verified entity.

// app/layout.tsx — root layout
const orgJsonLd = {
  "@context": "https://schema.org",
  "@type": "Organization",
  name: "Frontend Horizon",
  url: "https://frontendhorizon.com",
  logo: "https://frontendhorizon.com/branding/logo/frontendhorizon-logo-variant.svg",
  sameAs: [
    "https://www.linkedin.com/company/frontendhorizon",
    "https://www.instagram.com/frontendhorizon",
  ],
  contactPoint: {
    "@type": "ContactPoint",
    contactType: "customer service",
    email: "hello@frontendhorizon.com",
  },
};

// In the layout:
<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{ __html: JSON.stringify(orgJsonLd) }}
/>

Type 2: LocalBusiness (for location-based services)

If your business serves customers at a physical location or covers a defined service area, use LocalBusiness (or a more specific subtype like Plumber, Restaurant, Dentist). Include address, hours, phone, geo coordinates, service area. Google uses it for the local pack alongside Google Business Profile signals.

const localBusinessJsonLd = {
  "@context": "https://schema.org",
  "@type": "GeneralContractor",
  name: "BHR Construction",
  url: "https://bhrconstruction.com",
  telephone: "+1-214-555-0100",
  address: {
    "@type": "PostalAddress",
    streetAddress: "123 Main St",
    addressLocality: "Dallas",
    addressRegion: "TX",
    postalCode: "75201",
    addressCountry: "US",
  },
  geo: { "@type": "GeoCoordinates", latitude: 32.7767, longitude: -96.797 },
  areaServed: [
    { "@type": "City", name: "Dallas" },
    { "@type": "City", name: "Fort Worth" },
    { "@type": "City", name: "Plano" },
  ],
  openingHoursSpecification: [
    { "@type": "OpeningHoursSpecification", dayOfWeek: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], opens: "08:00", closes: "17:00" },
  ],
};

Type 3: FAQPage (for pages with question-answer sections)

Service pages and pricing pages almost always have an FAQ section. Wrapping it in FAQPage schema makes the questions eligible to appear directly in the SERP as a structured snippet — visible, clickable, and conversion-friendly.

const faqJsonLd = {
  "@context": "https://schema.org",
  "@type": "FAQPage",
  mainEntity: [
    {
      "@type": "Question",
      name: "How long does a custom home build take?",
      acceptedAnswer: {
        "@type": "Answer",
        text: "Typical custom home builds run 12-18 months from contract to certificate of occupancy.",
      },
    },
    // … more questions …
  ],
};

Schema types that are mostly noise for SMBs

  • Article schema on every blog post. Google handles this fine from your meta tags; the schema rarely earns a rich result.
  • Product schema unless you’re actually selling products with prices.
  • Review schema in self-published reviews. Google explicitly disallows self-serving review markup.
  • Event schema unless you actually host events.
  • BreadcrumbList. Google often shows breadcrumbs in the SERP automatically; adding schema is fine but not high-leverage.

Validating your schema

Use Google’s Rich Results Test to paste a URL or HTML and check what schema Google detected, whether it’s valid, and whether it’s eligible for rich results. Run this every time you add or change schema.

Where schema appears in the SERP

Google decides whether to show rich results based on the schema’s quality, the query, and the SERP context. Adding valid schema doesn’t guarantee a rich result — it makes you eligible. For SMB sites, FAQ rich results are the most reliably-shown; LocalBusiness rarely appears in the SERP itself but feeds into the Knowledge Panel and local pack.

Schema and Search Console

GSC has a dedicated section under Enhancements for each schema type you’ve implemented. It shows valid items, items with warnings, items with errors. Fix errors first; warnings are usually optional. We check this monthly.

Implementing in Next.js

Two patterns. (1) Static schema in the root layout for Organization and LocalBusiness — always present, always the same. (2) Per-page schema in the route’s page component for FAQPage, Article, etc. Use `dangerouslySetInnerHTML` with `JSON.stringify` to inject the JSON-LD script tag.

Schema for blog posts

We use Article schema on every FH blog post — see the blog post template in [[/blog/static-generation-at-scale-why-fh-builds-ship-800-pages-without-a-headless-cms|app/blog/[slug]/page.tsx]]. Includes headline, author, datePublished, dateModified, publisher. Doesn’t produce visible rich results in most cases but feeds entity associations.

Common errors we see in audits

  • Schema referencing an image URL that 404s. The rich result silently doesn’t appear.
  • Address fields in the wrong format (city in streetAddress, etc.).
  • Hours specified in 12-hour format instead of 24-hour.
  • Service area as a generic ‘USA’ when the business serves a defined region.
  • FAQPage schema on a page that doesn’t actually have those Q&As visible to users. Google considers this misleading; the rich result is suppressed.

Schema for ecommerce

Different game. Product, Offer, AggregateRating, Review schemas all matter. We don’t cover them here because the FH client book is mostly service businesses. If you’re running ecommerce, plan a dedicated schema implementation per the Schema.org Product spec.

How this lands across FH client work

Every FH client site ships with Organization in the root layout, LocalBusiness on the homepage and locations pages, and FAQPage on service pages with FAQ sections. Total schema code per site: about 200 lines. FAQ rich results appear on ~40% of relevant queries we rank for, lifting CTR roughly 15-25% on those queries. If your site has no schema or has schema that hasn’t been validated, book a consultation — adding the three core types is a one-day engagement with measurable CTR improvement inside a month.

Answers

Frequently asked questions

Which three schema types actually help a business site?

LocalBusiness or Organization, Service or Product, and FAQ. Those three map to real rich results and to facts an answer engine can extract. The rest of the vocabulary exists and does almost nothing for a business site, which is why the list is short.

Does schema markup improve rankings?

Not directly. It makes you eligible for rich results and helps engines extract facts confidently, which affects how you appear rather than where. Treating it as a ranking lever leads to marking up everything, which returns nothing and adds risk.

What does LocalBusiness markup need?

Name, address, phone, hours, service area, and the services you offer, matching exactly what the page and your profile say. Consistency is the point: markup that disagrees with your profile makes both less trustworthy rather than adding a signal.

Can marking up the wrong thing hurt me?

Yes. Markup describing content that is not visible on the page violates the guidelines and can cost rich-result eligibility for the whole site. The rule is simple: describe what a reader can see, never what you wish the page said.

Is FAQ markup still worth adding?

Yes, though display has been reduced for most sites. It helps engines extract answers cleanly, which matters more than the rich result. Judge it by whether your answers are quotable rather than by whether a visual result appears.

How do I check my markup is valid?

Run the page through the rich results test and a schema validator, on the rendered page rather than the source. Both catch structural errors. Neither catches markup that is valid and describes something the page does not actually say.

Where does the markup go on the page?

In a script tag in the HTML, rendered server-side so a crawler sees it without executing JavaScript. Markup added by a client-side script is frequently invisible to the things that would use it, which is a silent failure.

Do I need a plugin for this?

Not necessarily, and plugins often generate more types than you need with fields nobody filled. If your site is code, generate the markup from the page's own data. If it is a platform, use the built-in support and check what it actually produces.

How do I keep it accurate over time?

Generate it from the same data the page renders. Hand-maintained markup goes stale at the first price change or new opening hours, and the failure is invisible: the page is right and the machine-readable version is wrong.

How much time does this take?

An afternoon for a small site, once. Organization details on the site, service markup on each service page, FAQ markup where you have real questions answered. It is one of the few technical tasks that is genuinely finished when you finish it.

Does schema help with AI answers?

It gives an engine facts it can lift confidently rather than inferring them from prose. It is not a citation mechanism and being marked up does not make you quotable. The content decides that; the markup removes ambiguity about what you assert.

What should I do first?

Organization or LocalBusiness details on the site, correct and matching your profile. That single block covers the facts most often needed about a business, and it is the one most sites are missing entirely.

Question we did not answer? Ask us directly and we will answer it here.

John Cravey, Founder
Written by
John Cravey
Founder

Founder of Frontend Horizon. Writes most of the long-form work on the FH blog.

Newer post
Reducing Third-Party Script Weight: The Audit Pattern That Saves Half Your JS Budget
Older post
Cost-Effective AI: How to Pick Claude Opus vs Sonnet vs Haiku for Each Workload
Keep reading

More from the blog

Search Console·5 min

Sitemaps for Next.js Sites: The Pattern That Keeps Google Indexed

Sitemaps aren’t optional. Here’s the pattern that ships with every FH client build.

SEO·5 min

How to Find Keywords for SEO: A Working Process That Does Not Need Enterprise Tools

Keyword research fails two ways: guessing with no data, or drowning in a tool export nobody actions. The fix is a small process biased toward searches you can verify and win.

SEO·5 min

How to Do an SEO Audit: The Checklist We Run on Every New Site

A tool can score your site in ninety seconds. A diagnosis tells you which three of the two hundred flagged items actually move revenue.