What schema markup actually is
Schema markup (also called structured data) is code you add to your website that tells Google exactly what kind of business you are, where you're located, what your hours are, and more — in a format Google can read without guessing. It's not visible to visitors. It lives in the HTML of your page and speaks directly to search engines.
Without schema, Google has to infer this information from your page content. With schema, you're handing it to Google on a plate. That means fewer misunderstandings about what your business is and where you operate, which is especially important for local search.
The format most widely used today is called JSON-LD (JavaScript Object Notation for Linked Data). It's a small block of structured data that sits in your page's <head> or body. Google, Bing, and other search engines all support it.
Why local businesses in BC should care
Local SEO is about relevance signals — all the ways you tell Google "I'm the right answer for this person's search." Schema markup is one of those signals. It's not a magic ranking boost on its own, but it:
- Confirms your business name, address, and phone number (NAP) to Google in a machine-readable format
- Helps Google associate your website with your Google Business Profile
- Can unlock rich results in search — star ratings, opening hours, and other details that appear directly in the search snippet
- Reduces ambiguity about your business type and location, which matters when you're competing for map pack visibility
For a Duncan landscaper or a Victoria therapist competing against dozens of similar businesses, anything that makes Google more confident about who you are is worth doing.
Good news: most small business websites don't have LocalBusiness schema. If your competitors aren't doing it, adding it gives you a clean signal advantage at no cost.
The most important type: LocalBusiness schema
There are hundreds of schema types, but the one that matters most for local businesses is LocalBusiness (or a more specific subtype like Plumber, Restaurant, MedicalClinic, HairSalon, etc.). Schema.org has a full list of subtypes — the more specific, the better.
Here's what a basic LocalBusiness schema block looks like for a fictitious Duncan, BC plumbing company:
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Island Plumbing Co.",
"url": "https://islandplumbing.ca",
"telephone": "+12507971234",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Trunk Road",
"addressLocality": "Duncan",
"addressRegion": "BC",
"postalCode": "V9L 2P7",
"addressCountry": "CA"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 48.7783,
"longitude": -123.7079
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"areaServed": ["Duncan", "Cowichan Valley", "Nanaimo", "Victoria"],
"priceRange": "$$",
"image": "https://islandplumbing.ca/images/storefront.jpg"
}
This block goes inside a <script type="application/ld+json"> tag in your page's <head> section.
Key fields to include
name — Your exact business name. Match it to your Google Business Profile exactly.
address — Your full address including addressLocality (city), addressRegion (BC), and addressCountry (CA). This matters a lot for local relevance signals.
telephone — In international format starting with +1 for Canadian numbers.
url — Your website's canonical homepage URL.
openingHoursSpecification — Your actual business hours. Use the structured format shown above; it's more reliable than the plain text openingHours property.
areaServed — The cities or regions you serve. Important for service-area businesses that don't have a public storefront.
geo — Latitude and longitude of your location. Google Maps can give you these — right-click your location on the map and the coordinates appear at the top of the context menu.
Service-area businesses: no address required
If you operate from a home address you don't want published — common for plumbers, landscapers, and other trades on Vancouver Island — you can omit the address field and use areaServed instead. This matches the "hide my address" option on Google Business Profile.
{
"@context": "https://schema.org",
"@type": "LandscapingBusiness",
"name": "Cowichan Valley Landscaping",
"url": "https://example.ca",
"telephone": "+12507971234",
"areaServed": ["Duncan", "Cobble Hill", "Mill Bay", "Shawnigan Lake"],
"priceRange": "$$"
}
How to add it to your website
If you have access to your website's HTML, paste the JSON-LD block inside a <script type="application/ld+json"> tag in the <head> section of every page, or at minimum your homepage and contact page.
If you're on WordPress, the free Yoast SEO or Rank Math plugins generate basic LocalBusiness schema automatically when you configure your business details in their settings. It's worth verifying what they output — auto-generated schema sometimes has gaps.
If your site was built by a developer, ask them to add it. It's a small task that should take under an hour.
Test it before you call it done
Google provides a free tool to validate your schema: Rich Results Test at search.google.com/test/rich-results. Paste your URL or your schema code and it'll show any errors or warnings. You can also use Schema.org Validator at validator.schema.org for a more detailed check.
Common mistakes to watch for:
- Phone number not in international format (needs the +1)
- Address fields missing or mismatched from your GBP listing
- Using a generic
LocalBusinesstype when a more specific subtype exists for your industry - Schema on the homepage only — ideally your contact and service pages should have it too
NAP consistency matters: The name, address, and phone in your schema should match your Google Business Profile exactly — same abbreviations, same formatting. "St." vs "Street" can create a mismatch that weakens both signals.
Schema is a foundation, not a magic fix
Adding LocalBusiness schema won't instantly move you into the map pack. It's one piece of a larger local SEO picture that includes your Google Business Profile, reviews, citations, and the quality of your website itself. But it's a foundational piece — a clear, machine-readable declaration of who you are and where you operate — and it's one that many of your competitors probably haven't done.
If you want help getting schema properly implemented on a new or existing website, that's part of what Michael does at Design Menu. Every site built there includes proper LocalBusiness schema as standard.
Need help with your local SEO?
Get in touch with Michael
Based in Duncan, BC. I help Vancouver Island small businesses get found on Google — without the agency markup.