Search engines read your words, but they still have to guess what those words mean. Is that a phone number or a price? Is this page a service or a blog post? Schema markup removes the guessing.
What it actually is
Schema markup is structured data, usually a small block of JSON-LD code in the page, that labels the parts of a page in a vocabulary search engines share. It is invisible to visitors. It tells a machine, in plain terms, "this is a business, this is its address, these are its hours."
What it does and doesn't do
It helps search engines and AI assistants understand your pages accurately. For some page types, it makes them eligible for richer results, like review stars or business details.
It does not guarantee a higher ranking, and it does not replace good content. Think of it as a clean label on a good product, not a substitute for the product.
The types most small businesses need
- LocalBusiness, for your name, address, phone number and hours.
- Service, for each service you offer.
- Article, for blog posts and guides.
- BreadcrumbList, so search engines understand how your pages are organized.
- FAQPage, for pages with real question-and-answer content. Google limited its expandable FAQ results to well-known government and health sites in 2023 and stopped showing them entirely on May 7, 2026. The markup is still valid schema.org, and other systems may still read it, but don't expect a search result feature from it.
Less is required than most guides claim
Google's own documentation for LocalBusiness schema lists only two properties as truly required: name and address. Everything else people treat as mandatory, phone number, hours, price range, reviews, is recommended, not required. That's not a reason to skip them; it's a reason not to be intimidated into thinking a page is broken without a perfect, exhaustive block. Start with what's true and available, and add to it.
One requirement is easy to get wrong by accident: Google specifies that if you include a url property, it "must be a working link." A stale or mistyped link in the schema is worse than leaving the property out entirely, since it's the kind of small error that erodes trust in the whole block.
Use the specific type, not the generic one
Google's guidance is direct: "use the most specific LocalBusiness sub-type possible." For a plumber, that's Plumber, not LocalBusiness. For an electrician, Electrician. Schema.org has specific types for most trades under HomeAndConstructionBusiness, including HVACBusiness, RoofingContractor, HousePainter and GeneralContractor. See LocalBusiness schema for contractors: which type to use for the full list and a working example.
Keep it consistent with everything else about your business
Schema is a factual claim, and it's checked against reality more than people expect. If your schema says you're open until 6 p.m. but your Google Business Profile says 5, or your phone number in the code doesn't match the one in your footer, that mismatch is exactly the kind of inconsistency that recent research into AI-assistant recommendations points to as a reason systems lose confidence in a listing. Keep one source of truth and update everywhere from it.
Questions
Do I need a developer to add schema?
Not necessarily, but it has to be accurate and match what is on the page. The markup must describe content visitors can actually see.
How do I check that it's working?
Google offers a free Rich Results Test, and schema.org has a validator. Paste in a page address and both will list any errors.
Should I use the generic LocalBusiness type if I'm not sure my trade has its own?
Check schema.org first. Most common trades already have a specific type. HomeAndConstructionBusiness is a reasonable fallback if yours genuinely isn't listed, and plain LocalBusiness is the last resort, not the default.