If you’ve done the work on your Google Business Profile, sorted your citations, and built up a decent run of reviews — there’s still one technical element most small business websites are missing. LocalBusiness schema markup won’t single-handedly push you to the top of local search, but it rounds out your local SEO foundation in a way that’s increasingly important as Google leans further into AI-generated answers.
This tutorial explains what LocalBusiness schema markup is, why it matters, and how to add it to a WordPress site — with and without code.
What is schema markup?
Schema markup is structured data — a standardised vocabulary defined at Schema.org — that you add to your website to help search engines understand what your content is about. Instead of Google having to infer that “14 Smith Street, Canberra 2600” is your business address, schema tells it explicitly: this is a local business, this is its address, these are its operating hours, this is its phone number.
The reason this matters is that search engines, particularly Google, are shifting from reading pages and guessing at meaning toward processing structured, machine-readable data directly. Schema markup puts your business data into a format that Google can use with confidence.
For local businesses, the relevant schema type is LocalBusiness — a subtype of the broader Organization schema that includes location-specific properties like your address, opening hours, geographic coordinates, and service area.
Why it matters for local SEO
Schema markup contributes to local SEO in several interconnected ways:
Rich results — with LocalBusiness schema correctly implemented, your business becomes eligible for rich result features in Google Search, including knowledge panels, star ratings, opening hours, and other enhanced display formats. These take up more real estate on the results page and improve click-through rates.
AI Overviews and voice search — as Google’s AI-generated search summaries (AI Overviews) become more prominent, businesses with structured, machine-readable data are better positioned to appear in those results. Schema gives Google clean, reliable data to draw from.
Confidence signals — schema markup on your website corroborates the information in your Google Business Profile. When Google sees consistent data in your GBP, your citations, and your schema, it has high confidence that your business information is accurate.
Competitive differentiation — the majority of small business websites still don’t have LocalBusiness schema correctly implemented. Adding it puts you ahead of competitors who haven’t bothered.
What information goes into LocalBusiness schema?
The core properties for a LocalBusiness schema block:
@type— the specific business type (e.g.,LocalBusiness, or a more specific subtype likeProfessionalService,HomeAndConstructionBusiness,Restaurant)name— your business name, exactly as it appears on your GBPurl— your website URLtelephone— your primary phone numberaddress— your street address, suburb, state, postcode, and country in structured formatgeo— latitude and longitude coordinatesopeningHoursSpecification— your operating hours, broken down by dayimage— a URL to your business logo or a representative photopriceRange— an indicator of your pricing level (e.g., “$”, “$$”, “$$$”)description— a brief description of your business and services
Optional but useful additions:
sameAs— links to your social media profiles and other authoritative business listings (this explicitly connects your schema data to your wider online presence)areaServed— the geographic area your business serves, particularly useful for service-area businesseshasMap— a link to your Google Maps listing
What your LocalBusiness schema block looks like
Schema markup is typically implemented as JSON-LD (JavaScript Object Notation for Linked Data), which Google explicitly recommends. It sits in the <head> section of your page within a <script type="application/ld+json"> tag.
Here’s a complete example for a web design agency in Canberra:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "Kursor Creative",
"url": "https://www.kursorcreative.com",
"telephone": "+61-2-XXXX-XXXX",
"image": "https://www.kursorcreative.com/wp-content/uploads/logo.png",
"description": "Canberra web design and development agency specialising in WordPress, local SEO, and WCAG accessibility for Australian small businesses.",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "14 Example Street",
"addressLocality": "Canberra",
"addressRegion": "ACT",
"postalCode": "2600",
"addressCountry": "AU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -35.2809,
"longitude": 149.1300
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:00"
}
],
"sameAs": [
"https://www.facebook.com/kursorcreative",
"https://www.linkedin.com/company/kursor-creative",
"https://www.yellowpages.com.au/listing/kursor-creative"
],
"areaServed": {
"@type": "City",
"name": "Canberra"
}
}
</script>
A few important points about this block:
The @type value should be as specific as your business allows. Schema.org has subtypes for dozens of business categories — Dentist, Plumber, RealEstateAgent, WebDesigner. Use the most specific applicable type rather than the generic LocalBusiness parent type. A full list of subtypes is available at schema.org/LocalBusiness.
The address information — street, suburb, state, postcode — must match your Google Business Profile and all your directory listings exactly. This is NAP consistency applied at the schema level.
Your sameAs array is where you explicitly link your website’s schema to your external profiles and citations. Include your GBP URL, your key social media pages, and your major directory listings.
How to add LocalBusiness schema in WordPress — without coding
If you’re using Yoast SEO or Rank Math (the two most common SEO plugins for WordPress), both have built-in support for LocalBusiness schema.
Using Yoast Local SEO
Yoast offers a premium Local SEO add-on that generates and manages LocalBusiness schema automatically. If you’re already paying for Yoast Premium, the Local SEO extension is available as an add-on.
In your WordPress dashboard, go to SEO → Local SEO and fill in your business details. Yoast will output the schema block correctly in your page <head> — no code required.
Using Rank Math
Rank Math’s free version includes schema support. In your WordPress dashboard, go to Rank Math → Titles & Meta → Local SEO and complete your business information. Rank Math generates the appropriate JSON-LD block automatically.
Using a dedicated schema plugin
If you’re not using a full SEO plugin, or prefer to keep schema separate, dedicated plugins like “Schema & Structured Data for WP & AMP” or “Schema Pro” handle LocalBusiness markup through a straightforward settings interface. Install the plugin, fill in your business details, and the plugin handles the code output.
How to add LocalBusiness schema manually in WordPress
If you want full control over your schema output — or if you’re building a custom theme — you can add the JSON-LD block manually.
Method 1: Add it to your theme’s header.php
Open your child theme’s header.php file and add the JSON-LD block immediately before the closing </head> tag. Replace the placeholder values with your actual business information.
This is fine for a simple setup, but has a limitation: if you need location-specific schema on individual pages (for multiple service areas, for example), a single block in header.php will apply site-wide.
Method 2: Use wp_head() hook in functions.php
A cleaner approach is to add the schema via your functions.php file using the wp_head action hook:
function kursor_localbusiness_schema() {
if ( is_front_page() || is_page( 'contact' ) ) {
?>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "Kursor Creative",
"url": "https://www.kursorcreative.com",
"telephone": "+61-2-XXXX-XXXX",
"address": {
"@type": "PostalAddress",
"streetAddress": "14 Example Street",
"addressLocality": "Canberra",
"addressRegion": "ACT",
"postalCode": "2600",
"addressCountry": "AU"
}
}
</script>
<?php
}
}
add_action( 'wp_head', 'kursor_localbusiness_schema' );
The conditional check (is_front_page() || is_page( 'contact' )) limits the output to the pages where it’s most relevant — typically your homepage and contact page. This is the pattern recommended in the WordPress codex for clean, targeted schema output.
Method 3: Add it to individual page templates
For businesses with multiple service area pages, you can add location-specific schema blocks to individual page templates. This allows each page to have its own tailored schema — useful if you serve Canberra, Sydney, and Melbourne, for example, and have dedicated landing pages for each.
How to test that your schema is working
After adding schema, validate it before considering the job done.
Google’s Rich Results Test (search.google.com/test/rich-results) — paste your page URL and Google will show you what structured data it finds, flag any errors, and indicate which rich result features you’re eligible for.
Schema.org Validator (validator.schema.org) — checks your markup against the Schema.org specification for any property errors or missing required fields.
Google Search Console — under Enhancements in your GSC account, you’ll see structured data reports that flag any schema issues across your site over time.
Fix any errors flagged by these tools before moving on. Common issues include missing required properties, incorrect @type values, and address formats that don’t match the Schema.org PostalAddress specification.
A practical example: before and after schema implementation
A Canberra real estate agency had a well-optimised GBP and a clean citation profile but no schema markup on their WordPress site. After implementing RealEstateAgent schema on their homepage and contact page, and connecting it via sameAs to their GBP and key directory listings, they started appearing in Google’s knowledge panel for branded searches — with opening hours, phone number, and star rating displayed directly in the search result.
The ranking improvement wasn’t dramatic on its own. But combined with the GBP optimisation and review generation work they’d already done, the schema added the final layer of structured data that completed a coherent local SEO signal set.
How schema connects to your full local SEO strategy
Schema markup works best when everything else is already in order. A strong schema block won’t compensate for an incomplete GBP, inconsistent citations, or no reviews — but when all four elements are working together, the effect compounds.
For the full picture of how everything connects, start with the local SEO guide for small businesses. For GBP optimisation, see how to optimise your Google Business Profile. For citation consistency, read what are citations and why does NAP consistency matter?.
If you’d like help implementing LocalBusiness schema on your WordPress site, or if you want a full local SEO audit, get in touch with Kursor Creative.
Frequently asked questions
Does LocalBusiness schema directly improve my Google ranking? Not directly. Schema is not a confirmed direct ranking factor. What it does is make your data machine-readable, which improves how Google understands and displays your business — and that leads to better click-through rates, which does influence rankings indirectly. It also positions you well for AI-generated search results.
Do I need schema if I’m already using Yoast SEO? The free version of Yoast outputs basic Organisation schema, but not the full LocalBusiness schema with address, hours, and geographic data. You need either Yoast Local SEO (premium add-on), Rank Math’s Local SEO settings, or a dedicated schema plugin to get complete LocalBusiness schema output.
Can I have schema errors penalise my site? Invalid or misleading schema (where the data doesn’t match the page content) can result in rich result features being removed. Google won’t actively penalise your rankings for a schema error, but incorrect schema does you no good and can cause your rich results to disappear. Always validate.
Where should the schema block go on my site? For LocalBusiness schema, the most common placement is the homepage and contact page. If you have individual location or service pages, add location-specific schema to those pages too. Avoid adding LocalBusiness schema to every post and page — it creates noise without additional benefit.
What’s the difference between LocalBusiness and Organization schema? Organization is the broader parent type. LocalBusiness is a subtype that includes location-specific properties. If you’re a local business with a physical address or service area, always use LocalBusiness (or a more specific subtype) rather than Organization.
My schema validates but I’m not seeing rich results. Why? Valid schema makes you eligible for rich results — it doesn’t guarantee them. Google chooses when to display rich result features based on query context, page authority, and user experience signals. Continue building overall domain authority and keep your schema updated. Rich results typically take several weeks to appear after schema is first implemented.