What schema markup actually is

Let me strip the jargon off this straight away, because "structured data" and "schema markup" sound far more intimidating than they are. Schema markup is a small block of code you put on your website that spells out your business details in a standardised format search engines understand perfectly. Your web page already says you're a plumber in Duncan open until 5pm — but it says it in sentences meant for humans, and Google has to interpret them. Schema says the same thing in a format Google never has to guess about: name = this, phone = this, city = Duncan, closes = 17:00.

Think of it as filling out a standard form about your business that Google reads instead of squinting at your page and inferring. You are removing ambiguity. And in local search, where Google is constantly trying to work out exactly who you are, where you are, and what you do, removing ambiguity is quietly powerful.

The specific type built for businesses like yours is called LocalBusiness schema (with more specific sub-types like Plumber, Restaurant, or Dentist underneath it). It is written in a format called JSON-LD, which is just a tidy block of code that sits in your page without changing how the page looks to visitors at all.

Is it a ranking factor? An honest answer

I want to be straight with you, because this topic attracts a lot of overselling. Google has not confirmed that LocalBusiness schema is a direct ranking factor that lifts you up the results by itself. Anyone promising "add this code and jump to the top" is exaggerating.

What schema genuinely does is help Google understand your business with confidence, and that understanding underpins everything else. When your NAP details, service area, and hours are stated unambiguously in code that matches your Google Business Profile, you reinforce the consistency signals that do affect local rankings. You also make yourself eligible for richer search appearances — the extra detail Google sometimes shows next to a result. So schema is best understood as foundational hygiene: not a magic lever, but a way to make sure Google has an accurate, machine-readable picture of you. On a competitive Vancouver Island search, having your house in order this way is part of what separates the businesses that show up from the ones that don't.

The realistic framing: Schema won't single-handedly rank you. It removes ambiguity, supports your consistency signals, and can earn richer search results. It's a foundation, not a shortcut.

What LocalBusiness schema should include

You do not need every possible field, but a solid LocalBusiness block for a Vancouver Island business covers these essentials:

  • Business name — exactly as it appears on your Google Business Profile and everywhere else. Consistency is the whole point.
  • Address — street, city, province (BC), postal code, country. If you're a storefront, use your real address; if you hide your address as a service-area business, you can omit the street and lean on areaServed instead.
  • Phone number — in a consistent format. I use the full international form, like +12507972286.
  • URL — your website's main address.
  • Opening hours — the days and times you're open, in the standard format.
  • Geo coordinates — latitude and longitude, which pin you precisely on the map.
  • areaServed — the towns or region you serve. For many Island businesses this is where you name "Cowichan Valley" or "Vancouver Island."
  • Price range — an indication like $$ if relevant to your business.
  • sameAs — links to your official profiles (Facebook, your Google Business Profile, LinkedIn), which help Google connect the dots that all these listings are the same business.
  • Image and logo — a link to a representative photo and your logo.

The most specific sub-type you can accurately use is better than the generic one. If Google's vocabulary has "Plumber" or "Electrician" or "DentalClinic," use it instead of plain "LocalBusiness" — the same specificity principle that applies to your Google Business Profile category applies here.

A simple example

Here is a stripped-down example for a fictional Duncan plumber, so you can see it is not as scary as it sounds. This goes inside the <head> of your page:

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Plumber", "name": "Cowichan Valley Plumbing", "image": "https://example.ca/photo.jpg", "url": "https://example.ca/", "telephone": "+12507975555", "priceRange": "$$", "address": { "@type": "PostalAddress", "streetAddress": "123 Station St", "addressLocality": "Duncan", "addressRegion": "BC", "postalCode": "V9L 1M1", "addressCountry": "CA" }, "areaServed": "Cowichan Valley, British Columbia", "openingHours": "Mo-Fr 08:00-17:00", "sameAs": [ "https://www.facebook.com/example", "https://www.google.com/maps/place/example" ] } </script>

That is the whole idea. Every field is a plain fact about the business, written where a machine can read it without interpretation.

How to add it without a developer

You have a few realistic options depending on how your site is built.

Use a free schema generator

Several free tools let you fill in a form with your business details and generate the JSON-LD block for you. You then copy that block and paste it into your page. Google's own structured data resources and a handful of well-known free generators will produce valid LocalBusiness markup in a couple of minutes. This is the fastest route for most people.

If you're on WordPress

Most WordPress SEO plugins can output LocalBusiness schema for you from a settings screen — you fill in your business details once and the plugin adds the markup site-wide. If you already run one of the major SEO plugins, check its "local SEO" or "knowledge graph" settings before you touch any code. This is the cleanest option because it keeps your schema in sync as you update details.

If you have a hand-built or hosted site

Paste the generated block into the <head> of your homepage (and ideally your contact page). If your site builder has a spot for custom header code, that is where it goes. It sits alongside your other head code and changes nothing visible on the page.

Quick win: Generate a LocalBusiness block with a free tool, paste it into your homepage head, and test it. Twenty minutes, no ongoing cost, and Google now reads your details without guessing.

The mistakes that make schema backfire

Schema can hurt rather than help if you get these wrong.

  • Details that don't match your other listings. If your schema says "Cowichan Valley Plumbing Ltd." but your Google Business Profile says "CV Plumbing," you've created a new inconsistency instead of reinforcing consistency. Your schema must match your GBP and website exactly.
  • Marking up information that isn't visible on the page. Google's guidelines expect your structured data to reflect what's actually on the page. Don't claim hours or an address in schema that a visitor can't also find in the content.
  • Using the wrong type. A restaurant marked up as a generic "Store," or a category that doesn't fit, sends a confused signal.
  • Invalid code. A missing comma or bracket can break the whole block silently. This is exactly why you test it.

How to test it

Never add schema and assume it works. Run your page through Google's Rich Results Test (search "Google Rich Results Test") or the Schema.org validator. Paste your URL or the code, and it will tell you whether the markup is valid and what Google can read from it. If there's an error, it will point to the line. Fix, re-test, done. Google Search Console will also flag structured-data issues over time once your page is crawled.

Which pages get schema

For a small local business, your homepage and your contact page are the priorities — those are the pages most about "who and where you are." Your contact page in particular is a natural home for full LocalBusiness markup, since it already carries your address, phone, hours, and map. If you have location-specific pages for different towns, each can carry markup tuned to that area.

✓  You're set up well if
Your schema is doing its job when:

Your homepage and contact page carry valid LocalBusiness markup that passes the Rich Results Test. The details match your Google Business Profile and website exactly. You've used the most specific business type that fits, and included areaServed for your part of the Island.

⚠  Add it if
This is worth doing if:

Your site has no structured data at all, or your existing markup has never been tested, or the details in it don't match your current NAP. These are quick, foundational fixes.

Other schema worth having

LocalBusiness is the main event for a local business, but a few other schema types are worth knowing about because they are easy wins on the right pages.

  • BreadcrumbList. If your site has a clear page hierarchy, breadcrumb markup helps Google display your site structure in results. It is simple and low-risk. (Every article on this site uses it.)
  • FAQPage. If you have a genuine FAQ page or a page with real questions and answers, FAQ schema tells Google exactly what those questions and answers are. Use it only where you actually have a Q&A format — not slapped onto ordinary content.
  • Service. On a service page, you can mark up the specific service you offer and the area it covers, reinforcing your relevance for that service in your region.

One type to be careful with is Review and AggregateRating markup for your own reviews. Google has tightened the rules on self-serving review markup over the years, and getting it wrong can cause problems rather than earning you stars in search. If your reviews live on Google, they are already visible on your Google Business Profile; do not try to force star ratings onto your own site with questionable markup. When in doubt, leave reviews to your Google profile and keep your on-site schema to the straightforward business, breadcrumb, and FAQ types.

Whatever types you use, the same discipline applies throughout: keep the markup accurate, keep it matching what is visible on the page, and test it. Schema that drifts out of sync with your real details is worse than none at all, so if you change your phone number or hours, update your markup at the same time.

The bottom line

Schema markup is one of those behind-the-scenes tasks that sounds technical, takes twenty minutes, costs nothing, and quietly strengthens the foundation everything else in local SEO sits on. It will not rocket you to the top by itself, and I would never sell it that way. But it makes sure Google has an accurate, unambiguous, machine-readable picture of your business — and that accuracy supports the consistency and clarity that local rankings genuinely reward.

Generate a LocalBusiness block, make sure every detail matches your Google Business Profile, paste it into your homepage and contact page, and test it. Then you can forget about it, knowing Google is no longer guessing about who you are and where you serve.

Not sure your markup is right?

Get in touch with Michael

Based in Duncan, BC. I build websites with clean structured data as standard — and I'm happy to check yours. No obligation, no sales pitch.