Schema markup for contractor websites: the 2026 technical guide

Schema markup is the invisible code that tells Google and AI search engines what your contractor business does. Most contractor sites have weak or missing schema. Here's exactly what to install, why it matters, and how to implement it correctly.

Schema markup is what separates a contractor website that ranks from a contractor website that's invisible to AI search.

It's not glamorous. It doesn't show up in marketing pitches. It doesn't make your site look better to a homeowner. But it's the structured data that tells Google and AI engines exactly what your business is, what services you offer, where you operate, and how customers feel about you. Without it, your site is just words on a page that machines have to guess at.

Most contractor websites either have no schema markup at all or have weak, generic schema that doesn't help. Here's the complete tactical guide for what to install, in what order, and why each piece matters.

What schema markup actually is

Schema is a structured data vocabulary maintained by Schema.org, an organization founded by Google, Microsoft, Yahoo, and Yandex. It's a way to label content on a page so machines can understand it the same way humans do.

For example, a homeowner reading your homepage can see "Smith Roofing serves Bergen County NJ and offers asphalt shingle installation." A search engine reading the same HTML sees a string of words and has to guess what's a business name, what's a service area, and what's a service. Schema markup eliminates the guessing by labeling each piece with structured data.

The current standard format is JSON-LD (JavaScript Object Notation for Linked Data) embedded in a <script> tag in the page's HTML. Google explicitly recommends JSON-LD over older formats like microdata or RDFa.

Why schema matters more in 2026 than it did in 2020

Two things changed:

1. AI search engines need structured data to confidently cite businesses. When ChatGPT, Perplexity, or Google's AI Overviews are asked "who's a good roofer in Bergen County," they synthesize from the web. Pages with strong schema markup are dramatically more citable than pages without — the AI can extract clean facts about the business and present them with confidence.

2. Google's Knowledge Panel and rich results require schema. The large information cards that appear on the right side of Google search results (Knowledge Panels) and the rich result formats (FAQ accordions, review stars, breadcrumbs) all require properly-implemented schema. Without it, your site never appears in these enhanced result formats — and your competitors with schema do.

The Schema Gap
~80%
Estimated share of small contractor websites with weak, missing, or incorrect schema markup. The contractors who fix this in the next 12 months will have a structural advantage as AI search continues to grow.

The five schema types every contractor site needs

You don't need every schema type. You need five, deployed in specific places:

  1. LocalBusiness — on the homepage and contact page
  2. Service — on each service page
  3. FAQPage — on the FAQ page and any page with Q&A sections
  4. Review / AggregateRating — on the homepage and review pages
  5. BreadcrumbList — on every non-homepage page

Optionally, add HowTo schema on instructional pages and Article schema on blog posts. Both are helpful but the five above are the core.

1. LocalBusiness schema

LocalBusiness is the foundational schema type for any contractor. It tells search engines your business name, address (or service area), phone, hours, and category.

For a service-area business (most contractors), you also include a "areaServed" property. For a brick-and-mortar (a fence company with a yard customers visit), you use a regular address.

Here's a complete LocalBusiness schema for a service-area contractor:

LocalBusiness Schema (Service Area)
{ "@context": "https://schema.org", "@type": "RoofingContractor", "name": "Smith Roofing & Gutters", "url": "https://smithroofing.com", "telephone": "+1-908-555-1234", "image": "https://smithroofing.com/logo.png", "priceRange": "$$", "areaServed": [ {"@type": "City", "name": "Edison, NJ"}, {"@type": "City", "name": "Woodbridge, NJ"} ], "address": { "@type": "PostalAddress", "addressRegion": "NJ", "addressCountry": "US" }, "openingHours": "Mo-Fr 07:00-18:00", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "67" } }

Notes on this:

2. Service schema (per service page)

Each service page (gutter cleaning, gutter installation, gutter guards, etc.) should have its own Service schema. This tells search engines that the page is specifically about one service offered by your business.

Service Schema
{ "@context": "https://schema.org", "@type": "Service", "serviceType": "Gutter Installation", "name": "Seamless Gutter Installation", "description": "Professional seamless aluminum gutter installation in Central New Jersey. 5-inch and 6-inch K-style systems with hidden hangers.", "provider": { "@type": "RoofingContractor", "name": "Smith Roofing & Gutters", "url": "https://smithroofing.com" }, "areaServed": { "@type": "GeoCircle", "geoMidpoint": {"@type": "GeoCoordinates", "latitude": "40.5", "longitude": "-74.4"}, "geoRadius": "30000" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "priceRange": "$8-$15 per linear foot" } }

3. FAQPage schema

FAQPage schema is the highest-leverage schema type for AI search citation. ChatGPT, Perplexity, Claude, and Google AI Overviews preferentially cite FAQ-structured content because the question-answer pairs are clean, self-contained, and easy to extract.

Add FAQPage schema on any page with a Q&A section — your dedicated FAQ page, product/service pages with FAQs, blog posts with question-format H2s, etc.

FAQPage Schema
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "How much does seamless gutter installation cost?", "acceptedAnswer": { "@type": "Answer", "text": "Seamless gutter installation typically costs $8-$15 per linear foot installed in Central New Jersey, depending on the gutter size (5-inch vs 6-inch), material (aluminum vs copper), and home complexity." } }, { "@type": "Question", "name": "How long does gutter installation take?", "acceptedAnswer": { "@type": "Answer", "text": "Most residential gutter installations take 4-8 hours depending on the home size and complexity. Same-day completion is standard for typical single-family homes." } } ] }

Each question should be a real query a homeowner would search for. Each answer should be 50-150 words, factual, and self-contained — if you removed it from the page, it should still make sense on its own.

4. Review and AggregateRating schema

If you have customer reviews on your website (testimonials section, dedicated review page), wrap them in Review schema. This makes the star ratings appear in Google search results — the rich snippet that significantly increases click-through rates.

Review Schema
{ "@context": "https://schema.org", "@type": "Review", "itemReviewed": { "@type": "RoofingContractor", "name": "Smith Roofing & Gutters" }, "author": {"@type": "Person", "name": "Jennifer M."}, "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" }, "reviewBody": "Smith Roofing replaced our 40-year-old roof in two days. Crew was professional, cleaned up perfectly, and the work has held through three storms now. Highly recommend.", "datePublished": "2026-03-15" }

Don't fake reviews. Google has gotten very good at detecting AI-generated or otherwise fabricated reviews in schema markup. Use real customer reviews with their permission. If you don't have written permission, use first names only and don't include any personally-identifying information.

5. BreadcrumbList schema

BreadcrumbList tells search engines where each page sits in your site hierarchy. It's required for the breadcrumb path to appear in Google search results (the " > " separated path under the page title).

BreadcrumbList Schema
{ "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://smithroofing.com/"}, {"@type": "ListItem", "position": 2, "name": "Services", "item": "https://smithroofing.com/services/"}, {"@type": "ListItem", "position": 3, "name": "Gutter Installation", "item": "https://smithroofing.com/gutter-installation/"} ] }

Every non-homepage page should have BreadcrumbList schema reflecting its actual location in your site structure.

How to deploy schema (the technical bit)

Schema goes inside a <script type="application/ld+json"> tag. Place it in the <head> section of the page, ideally near other meta tags. The browser ignores it; search engines and AI crawlers parse it.

Multiple schema types can coexist on a single page — in fact, the homepage typically has 3-5 schema blocks (LocalBusiness, FAQPage, Review, BreadcrumbList, possibly Service). Each goes in its own script tag.

How to validate

Two free tools:

  1. Schema.org Validator — checks for technical correctness
  2. Google Rich Results Test — checks whether your schema is eligible for rich result display

Run every page through both after deploying schema. Fix any errors before considering the work complete.

What good schema implementation looks like in practice

Take the homepage of a well-optimized contractor site. It will have:

Each service page will have:

Each blog post will have:

The shortcut

Implementing comprehensive schema across a contractor website manually is a multi-day project, and updating it as services change is ongoing work. This is why every Atlas customer site ships with full schema markup from day one — LocalBusiness, Service, FAQPage, Review, BreadcrumbList, all properly configured for the trade and continuously maintained as the business grows.

If you want to handle it yourself, the templates above are everything you need. If you want it handled, that's part of what Atlas Genesis does at $99/month. Either way, getting schema right is one of the highest-ROI technical improvements a contractor can make to their website.

See what Atlas builds for your business.

Genesis builds a real website from your business URL in minutes. Free preview, no credit card, no strings.

Build my site free
Atlas is built for your trade
Roofing → HVAC → Plumbing → Electrical → Paving → Landscaping → Pool → Windows & Doors → Painting → Concrete → Pressure Washing → Junk Removal → Excavation → Fencing → Decks → Garage Doors → Tree Service → Restoration →