LocalBusiness Schema for Contractors — The Copy/Paste Template (2026)

LocalBusiness schema is the closest thing to free money left in contractor SEO. It takes twenty minutes, costs nothing, and it is the single clearest way to tell Google and the AI assistants exactly what you do, where you do it, and who you are.

Almost no contractor site in Eastern Idaho has it. We check — we look at trade sites from Rigby and Idaho Falls down to Blackfoot and Pocatello every week, and the ones with correct LocalBusiness markup are a small minority. Here is the plain-English explanation and a copy/paste template you can hand to whoever manages your site.

TL;DR — LocalBusiness schema is a small block of JSON-LD in your site’s code that states your name, phone, address (or that you hide it), hours, service area, and services in a format machines read without guessing. It matters more in 2026 than it did in 2020 because AI assistants lean on structured data when deciding which local business to name. Use the most specific type available — Plumber, RoofingContractor, Electrician, HVACBusiness, GeneralContractor — not the generic one. Template below. Validate before you ship.

What schema actually is, without the jargon

Your website says things in a way built for humans. “Serving Idaho Falls and the surrounding area since 2011.” A person reads that instantly. A machine has to infer it — which town, which surrounding area, what kind of business, what phone number belongs to it.

Schema is the same information written a second time in a strict machine format, tucked into the page’s code where visitors never see it. It removes the guessing. The format Google prefers is JSON-LD, and the vocabulary is defined at schema.org/LocalBusiness. Google’s own requirements are documented in its local business structured data guide.

To be clear about expectations: schema is not a ranking hack. It will not push a bad site past a good one. What it does is make sure you are correctly and completely understood — which matters enormously when the thing reading your site is an AI writing a one-paragraph answer that names two contractors.

Why it matters more in 2026

Three reasons, in order of how much money each one represents.

AI assistants need clean facts. When somebody asks ChatGPT or Google’s AI Overviews for a plumber in Ammon, the system is assembling an answer from sources it can parse confidently. A page that states its service area, business type, phone number, and hours in structured form is far easier to use than one where all of that has to be inferred from prose.

Service-area businesses are ambiguous without it. Most contractors do not have a storefront. Your address is hidden and you drive to customers. In plain HTML there is no reliable way to say “I do not have a public address, but I serve these nine towns.” In schema there is exactly one — areaServed.

It reinforces your Google Business Profile. Consistency between the schema on your site and the information on your profile strengthens Google’s confidence in both. Mismatched name, phone, or hours quietly erode it.

Use the specific type, not the generic one

This is the mistake we see most often on the few contractor sites that do have schema: they use the generic LocalBusiness type when a specific one exists. Schema.org defines dedicated types for most trades, and specific always beats generic:

  • Plumber
  • Electrician
  • RoofingContractor
  • HVACBusiness
  • GeneralContractor
  • HousePainter
  • Locksmith
  • MovingCompany

If your trade has no dedicated type — concrete, framing, excavation, fencing — use HomeAndConstructionBusiness, which is a step more specific than plain LocalBusiness. Then describe the actual work in the hasOfferCatalog section of the template below.

The copy/paste template

Replace every bracketed value. Drop it in the <head> of your homepage. Use it once site-wide — not repeated on every page with different values.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "@id": "https://YOURSITE.com/#business",
  "name": "[Exact business name, same as your Google profile]",
  "url": "https://YOURSITE.com",
  "telephone": "+1-208-555-0100",
  "email": "office@YOURSITE.com",
  "description": "[One sentence: what you do and where]",
  "foundingDate": "2011",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Idaho Falls",
    "addressRegion": "ID",
    "postalCode": "83402",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "City", "name": "Idaho Falls" },
    { "@type": "City", "name": "Ammon" },
    { "@type": "City", "name": "Rigby" },
    { "@type": "City", "name": "Iona" },
    { "@type": "City", "name": "Ucon" },
    { "@type": "City", "name": "Shelley" },
    { "@type": "City", "name": "Rexburg" },
    { "@type": "City", "name": "Blackfoot" },
    { "@type": "AdministrativeArea", "name": "Bonneville County, Idaho" },
    { "@type": "AdministrativeArea", "name": "Jefferson County, Idaho" }
  ],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "07:00",
      "closes": "17:00"
    }
  ],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Services",
    "itemListElement": [
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Drain Cleaning" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Water Heater Replacement" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Emergency Plumbing" } }
    ]
  },
  "sameAs": [
    "https://www.facebook.com/YOURPAGE",
    "https://www.google.com/maps/place/YOURLISTING"
  ]
}
</script>

The rules that keep it from backfiring

Structured data that contradicts your page or your profile is worse than none at all. Five rules:

  1. Everything must be true and match. Name, phone, and hours should be identical to your Google Business Profile, character for character. This is the most common error we find.
  2. Only mark up what is on the page. Google’s guidelines are explicit that structured data should reflect visible content. Do not claim services you do not list.
  3. Service-area businesses: drop the street address. If you hide your address on Google, do not publish it in schema. Keep addressLocality, addressRegion, and addressCountry, and let areaServed carry the geography.
  4. Never fake review markup. Self-serving aggregateRating on your own site — especially invented numbers — violates Google’s policies and risks a manual action. Let the real reviews live on your Google profile.
  5. List real towns only. Padding areaServed with thirty towns you never drive to does not help you rank in them and makes the whole block less trustworthy.

Validate before you ship

Never publish schema without testing it. One missing comma silently breaks the entire block, and you will not see any visible symptom on the page.

Two free tools, both official. Google’s Rich Results Test shows whether Google can read the markup and which features it qualifies for. The Schema.org validator checks the syntax and vocabulary more strictly. Paste the URL, read the errors, fix, re-test. Ten minutes.

Where this fits in the bigger picture

LocalBusiness schema is one piece of a set. Pair it with FAQ schema on your question pages, and Article schema on your blog posts, and you have covered the structured data that actually matters for a contractor site. None of them will rescue a site with no real content — but on a site that has service pages, town pages, and honest cost answers, schema is what makes sure all of it is understood correctly by the systems increasingly deciding who gets recommended.

Twenty minutes, once. For a trade shop competing in a market like Bonneville or Madison County where almost nobody has bothered, that is about the best return on twenty minutes available.

FAQ

What is LocalBusiness schema?
A block of JSON-LD code in your website’s head that states your business name, phone, address or service area, hours, and services in a machine-readable format defined by schema.org. Search engines and AI assistants read it to understand your business without guessing.

Does schema markup improve rankings?
Not directly. It helps search engines and AI tools understand and correctly represent your business, which can improve how you appear in results and how often you get cited in AI answers. It will not lift a site that has no substance behind it.

Which schema type should a contractor use?
The most specific one available — Plumber, Electrician, RoofingContractor, HVACBusiness, GeneralContractor, HousePainter. For trades without a dedicated type, such as concrete or excavation, use HomeAndConstructionBusiness and detail the work in hasOfferCatalog.

Can I add schema if I work from home and hide my address?
Yes, and you should. Omit the street address, keep city, state, and country, and use areaServed to list the towns and counties you actually serve. That is exactly what areaServed exists for.

Where does schema code go on my website?
In a script tag of type application/ld+json, in the head of your homepage. Most WordPress SEO plugins can generate and place it; otherwise it can be added to the theme header or through a header-scripts setting.

How do I know if my schema is working?
Test the URL in Google’s Rich Results Test and the schema.org validator. Both are free and report errors precisely. Re-test after any change to your name, phone, hours, or services.


If you would rather not hand-edit your site’s code, schema is part of every build and every monthly plan we run — done by builders who work in the trades themselves. See what S4 handles →

{“@context”:”https://schema.org&#8221;,”@graph”:[{“@type”:”Article”,”headline”:”LocalBusiness Schema for Contractors — The Copy/Paste Template (2026)”,”description”:”LocalBusiness schema for contractors, explained plain: what it does, why AI search needs it, and a copy/paste JSON-LD template with Eastern Idaho areaServed built in.”,”author”:{“@type”:”Organization”,”name”:”S4 Media”},”publisher”:{“@type”:”Organization”,”name”:”S4 Media”,”url”:”https://s4-media.com&#8221;},”mainEntityOfPage”:”https://s4-media.com/blog/localbusiness-schema-for-contractors-template/&#8221;},{“@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”What is LocalBusiness schema?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”A block of JSON-LD code in your website’s head that states your business name, phone, address or service area, hours, and services in a machine-readable format defined by schema.org.”}},{“@type”:”Question”,”name”:”Does schema markup improve rankings?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Not directly. It helps search engines and AI tools understand and correctly represent your business, which can improve how you appear in results and how often you are cited in AI answers.”}},{“@type”:”Question”,”name”:”Which schema type should a contractor use?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”The most specific one available — Plumber, Electrician, RoofingContractor, HVACBusiness, GeneralContractor, HousePainter. For trades without a dedicated type, use HomeAndConstructionBusiness.”}},{“@type”:”Question”,”name”:”Can I add schema if I work from home and hide my address?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Yes. Omit the street address, keep city, state, and country, and use areaServed to list the towns and counties you actually serve.”}},{“@type”:”Question”,”name”:”Where does schema code go on my website?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”In a script tag of type application/ld+json in the head of your homepage. Most WordPress SEO plugins can generate and place it.”}},{“@type”:”Question”,”name”:”How do I know if my schema is working?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Test the URL in Google’s Rich Results Test and the schema.org validator. Both are free and report errors precisely.”}}]},{“@type”:”BreadcrumbList”,”itemListElement”:[{“@type”:”ListItem”,”position”:1,”name”:”Home”,”item”:”https://s4-media.com/&#8221;},{“@type”:”ListItem”,”position”:2,”name”:”Blog”,”item”:”https://s4-media.com/blog/&#8221;},{“@type”:”ListItem”,”position”:3,”name”:”LocalBusiness Schema for Contractors”}]},{“@type”:”LocalBusiness”,”name”:”S4 Media”,”url”:”https://s4-media.com&#8221;,”areaServed”:[{“@type”:”City”,”name”:”Rigby”},{“@type”:”City”,”name”:”Idaho Falls”},{“@type”:”City”,”name”:”Rexburg”},{“@type”:”City”,”name”:”Ammon”},{“@type”:”City”,”name”:”Iona”},{“@type”:”City”,”name”:”Ucon”},{“@type”:”City”,”name”:”Shelley”},{“@type”:”City”,”name”:”Blackfoot”},{“@type”:”City”,”name”:”Pocatello”},{“@type”:”AdministrativeArea”,”name”:”Bonneville County, Idaho”},{“@type”:”AdministrativeArea”,”name”:”Madison County, Idaho”},{“@type”:”AdministrativeArea”,”name”:”Bingham County, Idaho”}]}]}

Responses

  1. […] way, that the page is empty. Write the plain text first, add the markup second. Templates: LocalBusiness schema and FAQ […]

    Like

  2. […] Add LocalBusiness and FAQ schema. Structured data restates your facts in a format machines read without guessing. Google documents what it looks for in its local business structured data guidance, and our copy/paste template is here. […]

    Like

Leave a comment