For local SEO, schema markup makes business details explicit through structured data, describing your business, location and opening hours.
There is no separate New Zealand version of this markup. It uses the standard Schema.org vocabulary, with accurate New Zealand addresses, phone numbers and service areas.
Start with the information customers can already see, then mark up those details to match.
Key takeaways
- Use the most accurate business subtype available, and keep every value consistent with your website and Google Business Profile.
- Schema.org validity and Google’s rich-result eligibility are different checks. Passing either doesn’t guarantee an enhanced search result.
- Validate before publishing, avoid duplicate business records, and update the markup whenever your business details change.
What LocalBusiness schema does for local SEO
Schema.org describes your business
LocalBusiness is a structured-data type expressed through schema markup for a particular physical business or branch. Its properties describe facts such as the business name, address, contact details and opening hours.
Schema.org defines the vocabulary. Google decides which types and properties it supports for particular search features.
A property can be valid Schema.org markup without contributing to a Google rich result. Use Google’s LocalBusiness documentation as the current implementation specification for Google Search.
Rich results aren’t a ranking promise
Google’s John Mueller has confirmed that structured data isn’t a direct ranking signal. Adding it doesn’t automatically move a small business higher in organic results or the local pack.
Eligible markup can support richer search appearances. These may improve click-through rates when they give searchers useful information.
Google also considers its structured-data policies and the page itself. Valid markup doesn’t guarantee rich results, more enquiries or stronger digital marketing performance.
Choose your business type and New Zealand details

Use the most precise available subtype
Use LocalBusiness as the fallback when no more suitable subtype exists. Choose the most precise suitable Schema.org subtype for the business type. For example, use Plumber, Electrician or Restaurant when they accurately describe the business.
For legal practices, use LegalService. Older templates sometimes use Attorney, but Schema.org has deprecated that type.
If your exact category isn’t listed, choose the closest accurate parent type. Don’t select an unrelated subtype because it sounds more specific.
Also distinguish the organisation from its premises. A company with several branches can have an Organization record alongside separate records describing each local business.
Format New Zealand information correctly
Use PostalAddress, with addressCountry set to NZ. Keep the four-digit postalCode as a string so leading zeroes remain intact.
Put the street number and street name in streetAddress, the town or city in addressLocality, and the region in addressRegion. Include genuine unit details where applicable.
For international telephone formatting, use +64 and remove the domestic leading zero. An Auckland number beginning 09 therefore begins +64 9.
Most importantly, structured data must agree with the visible page. Align business names, phone numbers and hours across your website, Google Business Profile and social media accounts.
Select properties without confusing requirements
Google’s LocalBusiness documentation identifies name and address as required properties. Other supported Schema.org fields provide useful detail.
Use this practical property checklist when preparing your markup.
| Property | What to include |
|---|---|
name, url | The business name and relevant website URL. |
address | The genuine physical location, where appropriate to publish. |
telephone | A customer contact number, preferably using +64. |
openingHoursSpecification or openingHours | Accurate public operating hours. |
image, logo | Relevant, crawlable image URLs. |
geo, hasMap | Accurate coordinates and the business’s map listing. |
areaServed | The places where you genuinely provide services. |
sameAs, alternateName | Official profiles and a genuine alternative business name. |
priceRange | A truthful description of the business’s pricing level. |
Include useful, accurate details rather than filling every available field.
Search Engine Journal has described url, name, openingHours, telephone, image, logo, address, geo, areaServed and mainContentOfPage as required. That broader checklist isn’t Google’s minimum requirement. Also, mainContentOfPage belongs on WebPage, not directly on LocalBusiness.
Other recommendations need context. Use department for genuine departments, and place breadcrumb on the page through appropriate breadcrumb markup. FAQPage is a separate type.
Schema.org defines an AggregateRating type, referenced by the correctly cased aggregateRating property. Adding AggregateRating markup doesn’t make self-serving LocalBusiness review stars eligible in Google, including stars based on third-party widgets.
For pricing, Schema.org accepts text. Online Ownership suggests phrases such as “Free Quote Available”, “Priced on Quote” and “Call or Book Online”. Describe pricing clearly, and keep it consistent with your visible offer.
Add LocalBusiness schema with JSON-LD
Start with a correctly formatted example
Google recommends JSON-LD because you can maintain it separately from visible HTML. Its introduction to structured data explains the supported formats.
This example uses NZ Post Centre Naenae’s address and opening hours. It shows New Zealand formatting, not details to publish on your own website.
{
"@context": "https://schema.org",
"@type": "PostOffice",
"name": "NZ Post Centre Naenae",
"address": {
"@type": "PostalAddress",
"streetAddress": "29 Hillary Court",
"addressLocality": "Lower Hutt",
"addressRegion": "Wellington",
"postalCode": "5011",
"addressCountry": "NZ"
},
"openingHours": [
"Mo-Fr 09:00-17:00",
"Sa 09:00-12:00"
]
}
The day codes are Mo, Tu, We, Th, Fr, Sa and Su. Times use the 24-hour clock, so 3pm becomes 15:00. Omitting Sunday reflects the stated Sunday closure.
Install it through one controlled route
On WordPress, a schema-capable SEO plugin or a developer-managed template can output the JSON-LD. On other platforms, use the relevant structured-data settings or custom-code facility.
For manual installation, place the JSON inside a script element with the type application/ld+json, in the page head or body. Don’t paste it into the visible page editor.
Google can also process JavaScript-generated structured data, although server-rendered output is usually easier to maintain. Google’s Rich Results Test checks eligibility for Google’s search features, not general Schema.org validity.
Before adding anything, inspect existing markup. Your theme or plugin may already describe the business. Keep one authoritative record with a stable @id.
For client web development projects, assign responsibility for that record. See how we collaborate with creative agencies when you need technical delivery alongside your marketing work.
Handle service areas and multiple branches honestly
Separate coverage from a customer-facing address
A plumber serving several suburbs doesn’t have a branch in every suburb. Never invent premises to make location pages appear more local.
If customers don’t visit your home or depot, don’t present it as a public storefront. Nor should you expose a private address through schema when the website otherwise keeps it private.
You can describe coverage with areaServed, including named places or a GeoCircle. A circle uses geoMidpoint and geoRadius; numeric radii default to metres. Where you use miles, include the unit explicitly, such as "20 mi".
However, service-area markup doesn’t replace Google’s required physical address for LocalBusiness eligibility. Our guidance on service-area pages explains how to describe genuine coverage without manufacturing branches.
Connect real branches to the organisation
For multiple premises, use an @graph containing an Organization entry and a separate LocalBusiness entry for each branch. Each branch can reference the organisation through parentOrganization.
Give branches their own addresses, hours and location-page URLs.
Use geo for accurate latitude and longitude. Use hasMap for the business’s own Google Maps listing, obtained through Share or the map’s sharing options, rather than an address-only map.
Older Whitespark guidance reported hasMap errors in Google’s retired Structured Data Testing Tool. That historical warning isn’t a reason to avoid the property in current markup.
Validate before publishing and after changes

Use both current validation tools because they check different parts of your schema markup.
- Run the JSON-LD through the Schema Markup Validator. Check for syntax errors, incorrect property placement and unsuitable value types against Schema.org.
- Test it with Google’s Rich Results Test. Resolve critical eligibility errors, then assess warnings against your business information. Valid markup doesn’t guarantee rich results.
- Publish the markup and test the live URL with Google’s Rich Results Test. Confirm the rendered page contains the intended record without conflicting duplicates.
- Use Google Search Console’s URL Inspection tool to review Google’s access to the page. Monitor available enhancement reports for supported features.
Search Console doesn’t provide a report for every Schema.org type or property. The absence of a dedicated report therefore doesn’t prove that your markup failed.
A JSON-LD script is publicly accessible even when visitors don’t see it on the page. Never put private addresses or confidential client information inside it.
Make business-detail updates part of website care and maintenance. Changes to opening hours, premises, phone numbers or service coverage should update both the page and its structured data.
Also test a few representative pages before a site-wide rollout. Template changes can repeat an error across every location.
Finally, schema doesn’t repair slow pages or broken forms. Dependable web hosting and mobile-responsive web design still matter for lead generation. Use our website conversion audit checklist to assess the enquiry journey alongside technical SEO.
Frequently asked questions
Can AI tools write the JSON-LD?
Yes. AI tools for small businesses can draft markup, but they can also invent properties, addresses and business categories.
Supply accurate information, review every value, and run both validation checks. Never publish AI-generated claims about reviews, prices or locations without a factual basis.
Should the markup appear on every page?
It can appear on relevant pages when it describes the same business consistently. However, each branch’s detailed markup belongs on its own location page.
Keep the same @id when referring to the same entity. Don’t create a new business identity for every service page.
Should I add FAQ schema to a commercial website?
Useful questions and answers can help visitors, even without FAQ markup. Google’s FAQ rich results are restricted to well-known, authoritative government and health websites.
A normal agency or trade website shouldn’t expect FAQ rich results. Focus on answering customer questions clearly before adding another structured-data type.
Keep the markup tied to the real business
For local SEO, LocalBusiness schema works best when it describes accurate, visible information. Choose the right subtype, use New Zealand details correctly, and distinguish genuine premises from service coverage.
Validate the vocabulary and Google’s eligibility separately before publishing. Then keep the record current as your business changes.
The strongest implementation gives search engines and customers the same reliable picture of your business.