Schema Markup for Local Businesses, Services, and FAQs

For a local-service owner, restaurant operator, freelancer, creative, or first-time founder, schema markup is a launch decision: which business facts should your new site publish for search engines, and which facts should stay out until they are visible, accurate, and easy for customers to verify. The goal is not to make a weak page look strong; it is to describe a real business, service, or FAQ page in a format Google and other systems can parse.

This guide focuses on the schema decisions a small business has to publish and maintain: LocalBusiness, Service, and FAQPage markup. It does not compare builder pricing, plan tiers, or security settings, because those choices belong in a platform-selection guide, not in the markup itself.

Google Search Central describes structured data as a standardized format for classifying page content, and it recommends JSON-LD as the easiest format for nested entities such as a business address.[1] Google’s general structured data guidelines also state that structured data does not guarantee a rich result, and that a structured-data manual action removes rich-result eligibility rather than changing normal ranking.[2] Treat schema as evidence, not a shortcut.

Schema Launch Checklist

  • Use LocalBusiness when the page identifies a real public business or location with a consistent name, address or service area, phone, URL, and hours.
  • Use Service when the page is about one clear offer from one provider in a visible service area.
  • Skip or de-emphasize FAQPage when the FAQs are generic, hidden, copied from competitors, or written mainly for a search feature.
  • Mark up only facts a customer can verify on the page, in site-wide business details, or in the business profile.
  • Validate the code before launch, then revalidate after changes to hours, service area, booking links, pricing language, or FAQ answers.

Start With Accurate Business Details

Use LocalBusiness when the page identifies the actual provider a customer can contact. Local business schema should start with the same facts a customer sees in your footer, contact page, booking page, and Google Business Profile: business name, public address or service area, phone number, website URL, hours, and the real business category. Google Search Central’s LocalBusiness documentation lists name and address as required properties for LocalBusiness rich-result eligibility, so a home-based service business should not invent a storefront address just to satisfy a field.[3]

Keep service-area claims realistic. Google Business Profile guidance says businesses should represent themselves as they are recognized in the real world, and service-area businesses can choose not to show an address when customers do not visit it.[4][5] If your site says serving North Austin and Round Rock, the schema should not claim all of Texas.

Choose the most specific type that is true on the page. Google gives examples such as Restaurant, DaySpa, and HealthClub, and it supports an array of business types when the same business genuinely offers multiple services, such as Electrician, Plumber, and Locksmith.[3] Do not add a category because it has search volume; add it because the business sells that service and the page says so.

Field to collect before markupDecision ruleSource detail
Business nameUse the name customers see on signage, invoices, and Google Business Profile.Business Profile guidance says the business should be represented as it is recognized in the real world.[4]
Address or service areaShow a storefront address only if customers can visit it; otherwise show the service area on the page and avoid a fake street address in schema.Google Business Profile address help says service-area businesses can choose not to show an address.[5]
Phone numberUse the primary customer phone number for that location or service area.Google’s LocalBusiness docs recommend a customer-facing telephone value for the business or location.[3]
HoursUse openingHoursSpecification only when the hours are shown on the page and kept current.Hours should match the visible page and the business profile, especially around holidays or seasonal schedules.
CoordinatesAdd latitude and longitude only when they point to a public business location.Skip coordinates for a hidden home base or a service-area business where customers do not visit.
Price rangeKeep it simple, such as a visible menu range, starting price, or clear dollar-sign range.Do not imply exact pricing in schema if the page only offers custom quotes.
ImagesUse real photos of the business, service, product, room, menu item, or storefront.The decision is relevance and accuracy, not filling every optional image field with stock art.

A practical example: a mobile locksmith who works from home should show mobile locksmith serving Tempe, Mesa, and Chandler on the service page, hide the home address in Google Business Profile if customers do not visit it, and use schema that identifies the provider, phone number, URL, and areaServed cities. The same business should not put a residential street address into LocalBusiness markup just because a plugin has an address box.

Use Service And FAQ Markup Carefully

Use Service when one page answers one buying intent. A page for emergency water heater repair in Boise can support Service markup if the page names the service, explains when to call, shows the provider, lists the service area, and gives a phone or booking route. The markup should usually include @type, name, serviceType, description, provider, areaServed, and the page url. Add offers only when the price, starting price, consultation fee, or quote language is visible and current.

A generic Services page with plumbing, remodeling, HVAC, and handyman copy in one block is harder to mark up cleanly because the entity is not specific. In that case, either create focused service pages or use the overview page to point visitors toward the individual offers. Schema should follow the page structure; it should not pretend that one thin overview is four complete service pages.

  • For a local photographer, use Service on a family portraits page only if the page actually offers family portraits, names the provider, and shows the booking path. Do not add wedding photography markup unless that service appears on the page.
  • For a restaurant, a catering page can use Service when it explains the catering offer, service area, contact path, and any minimums or package language customers can see.
  • For a consultant, a strategy audit page can use Service if the page describes the audit, who provides it, who it is for, and how the buyer starts.

Keep platform mechanics separate from schema strategy. Once you know the entity, use the safest path your CMS offers: an SEO plugin field, theme-level JSON-LD, or page-level custom code. The launch risk is not whether the builder has a clever schema toggle; it is whether someone can find and update the markup when the page changes.

Three implementation problems show up more often than missing optional fields:

  • Duplicate business objects: one plugin, one theme, and one manual snippet can all output a different LocalBusiness object. Pick one source of truth before launch.
  • Broken template variables: a quote, ampersand, or line break in a CMS field can break JSON-LD if the template does not escape values correctly.
  • Drifting service areas: the page says one set of cities, the footer says another, and the schema lists every nearby market. Customers notice the mismatch even when validators pass.

Skip FAQPage when the FAQ is not a visible, useful part of the page. Google Search Central says FAQ rich results are only available for well-known, authoritative government-focused or health-focused websites.[6] A local roofer, yoga teacher, restaurant, photographer, or consultant can still publish useful FAQs for visitors, but should not expect FAQ schema to produce a visible accordion in Google Search.

  • Mark up real visible content: if the page asks Do you offer same-day appliance repair in Plano?, the exact question and answer should appear on the page, not only in JSON-LD.
  • Keep answers useful for buyers: answer the question, name the area or service when relevant, and point to the next step without stuffing city names.
  • Review markup after every page edit: if the business changes hours, service areas, menu URLs, booking links, or pricing language, update the visible copy and the JSON-LD in the same session.

Validate Before Launch

Validate after the visible page is stable, not before the copy is finished. Structured data should be tested before launch and after major edits. For Google-specific eligibility, use the Rich Results Test; for vocabulary and syntax, use the Schema.org Markup Validator.[8][9]

The Rich Results Test is useful for answering one practical question: can Google fetch and parse the structured data on this URL or code sample? It supports major structured-data formats and lets you test code before publishing or a live URL after launch.[8]

Use the Schema.org Markup Validator for a second pass because it validates Schema.org-based structured data without Google-specific rich-result rules. That matters when a page is valid vocabulary but not eligible for a Google rich result, or when a page is not trying to earn a rich result at all.[9]

A simple pre-launch workflow looks like this:

  1. Write the visible page first: business name, location or service area, service description, hours, phone, and FAQ answers.
  2. Add JSON-LD only for the facts that appear on the page or in the site-wide business details.
  3. Run the code in Google’s Rich Results Test before publishing if the page is still private.
  4. Publish the page, then run the live URL in the Rich Results Test so Google can fetch the same resources a visitor can fetch.
  5. Run the live URL in the Schema.org Markup Validator to catch vocabulary and syntax problems outside Google’s rich-result filter.
  6. Use Google Search Console URL Inspection after launch if the site is verified and the page is ready to be crawled.
  7. Save the test result with the launch notes so the next person can see what passed before later copy changes.

Use Schema As Support, Not Strategy

Use schema as a receipt for the page, not the sales pitch itself. Structured data supports clear content. It cannot fix vague service pages, missing proof, thin contact paths, copied FAQs, or a Google Business Profile that disagrees with the website. Build the useful page first, then mark it up accurately.

If you are still at the describe your business stage, use the schema launch checklist as the next step: write the facts a customer needs, decide which claims deserve markup, then choose the CMS path that lets you keep those claims current. A builder choice matters only after that. If you know you need page-level JSON-LD for services, events, menu pages, or location pages, choose a tool that lets you add and maintain it without editing fragile theme code every time the page changes.

Ship schema when these checks pass:

  • The public page shows the same name, address or service area, hours, phone number, URL, service, and FAQ answers as the markup.
  • The platform gives you a clear place to update JSON-LD, a plugin-managed schema field, or a documented custom-code path.
  • Google’s Rich Results Test reports no critical parsing errors for the live URL.
  • The Schema.org Markup Validator can read the entity you intended to describe.
  • Google Business Profile agrees with the public address, hidden-address choice, service area, phone number, and website URL.

The decision rule is simple: do not publish a schema claim that the page, customer experience, or business profile cannot back up tomorrow. If the business changes hours, moves, adds a service area, drops a service, changes booking tools, or rewrites an FAQ, update the structured data before calling the page finished.

Short FAQ

Should a home-based service business add its street address to LocalBusiness schema?

No. If customers do not visit the address, follow Google Business Profile’s service-area guidance and do not expose a private or fake storefront address just to fill a schema field. Use visible service-area language and mark up only the public facts.

Can one page use both LocalBusiness and Service schema?

Yes, when the page clearly identifies the business and one specific service it provides. Use the business as the provider and keep the service details tied to the visible page, not to every service the company offers somewhere else.

Should a local business still add FAQPage schema?

Only when the questions and answers are visible and useful on the page. Most local businesses should write FAQs for buyers first and treat FAQPage markup as optional support, not the reason to write the section.

Which schema format should a small business use?

Use JSON-LD unless your platform gives you a safer managed schema field. It is usually easier to audit, easier to template, and easier to remove when a plugin or theme starts outputting the same entity.

What should be updated when hours or service areas change?

Update the visible page copy, Google Business Profile, and schema in the same work session. Then retest the live URL with the Rich Results Test and Schema.org Markup Validator before you consider the edit complete.

Sources

  1. Google Search Central, introduction to structured data: https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
  2. Google Search Central, general structured data guidelines and policies: https://developers.google.com/search/docs/appearance/structured-data/sd-policies
  3. Google Search Central, LocalBusiness structured data properties and examples: https://developers.google.com/search/docs/appearance/structured-data/local-business
  4. Google Business Profile, business representation guidelines: https://support.google.com/business/answer/3038177?hl=en
  5. Google Business Profile, address and service-area help: https://support.google.com/business/answer/2853879?hl=en
  6. Google Search Central, FAQPage structured data eligibility: https://developers.google.com/search/docs/appearance/structured-data/faqpage
  7. Google Search Central, people-first content guidance: https://developers.google.com/search/docs/fundamentals/creating-helpful-content
  8. Google Search Console Help, Rich Results Test help: https://support.google.com/webmasters/answer/7445569?hl=en
  9. Schema.org, Markup Validator: https://schema.org/docs/validator.html