Schema markup is one of those jobs that sits on a to-do list for months because it sounds technical and the payoff is invisible.
This year I finally added it properly to this site, on every page. This post answers the questions I had going in: what schema is, whether it actually helps, which types a small business needs, and the mistake that makes it worse than having none. It also covers what I did and what happened, honestly.
What is schema markup?
Schema markup is structured data, usually written as a block of JSON-LD in a page's code, that tells search engines in a fixed vocabulary (from schema.org) what a page is about and who's behind it.
Your page might say "Jayne Hamilton, digital marketing strategist" in a heading. Schema says the same thing as data: this is a Person, here's their name and job title, here are their profiles elsewhere, and here's the organisation they run.
It doesn't change how the page looks to visitors. It changes how confidently a machine can read it.
Does schema markup help SEO?
Not directly, and anyone promising a ranking jump from schema alone is overselling it.
Google uses structured data to understand pages and to decide whether they qualify for rich results (review stars, breadcrumbs, product details and so on). That can make a listing more noticeable, but schema doesn't make a weak page rank.
Where it earns its place is clarity. With AI search tools now summarising and citing websites, a site that states who it is, what it does and where it operates in a machine-readable way is easier to understand and to attribute correctly. I've written more about those trust signals in E-E-A-T Explained.
For what it's worth, my own result so far: everything validates cleanly, and I haven't seen a measurable change in rankings or traffic I'd put down to schema. It's plumbing. Necessary, but not magic.
What schema does a small business website need?
Here's what I added, page type by page type. It's a sensible baseline for most small business or personal-brand sites.
| Where | Schema type | What it says |
|---|---|---|
| Every page | Organization, Person, WebSite | Who runs the site, the business behind it, and links to the same entity on LinkedIn, Instagram and so on (sameAs) |
| Blog posts | BlogPosting + BreadcrumbList | Author, publish and updated dates, where the post sits in the site |
| Posts with an FAQ section | FAQPage | The questions and answers already on the page |
| About page | ProfilePage | That the page is about a person |
| Blog index | Blog + BreadcrumbList | That the page is a list of articles |
Two details made the biggest difference:
- Connect the pieces. Give the
PersonandOrganizationstable IDs, so every blog post can say "written by this person, published by this organisation" instead of repeating the details or, worse, describing them slightly differently each time. - Generate schema from the page, don't type it separately. My FAQ schema is built automatically from the FAQ headings in each post, so it can never drift from what visitors actually see.
On how it was built: I decided what to mark up and why, then built it with Claude Code. The AI was quick at writing valid JSON-LD. Deciding which claims the site should make about itself was the part that needed a human.
Should I use LocalBusiness schema if I don't have an address?
This was my most useful decision, and it was a decision not to add something.
When I started presenting the business as New Zealand-based, the obvious move was to upgrade from Organization to a LocalBusiness type such as ProfessionalService. But those types expect a street address, phone number and opening hours, and I don't publish any of them. Declaring one would just collect "missing recommended field" warnings, for a rich result I wasn't going to get.
Instead, the organisation declares New Zealand as its service area (areaServed), with an address that contains only the country. That's valid and honest. There's a note in the code to revisit it once there's a Google Business Profile and a public phone number.
If you're a service-area business without a public address, a complete Organization beats a half-empty LocalBusiness.
The biggest mistake: schema that doesn't match the page
This is the lesson I'd pass on above everything else.
Your schema, your page copy and your other profiles all need to tell the same story.
If your schema says you serve "Worldwide", your footer says "Auckland" and your Google Business Profile says "Wellington", you haven't added clarity. You've added contradictions, and an entity that claims three things looks less trustworthy than one that claims nothing.
Adding schema also turned into an audit of my own content. Stating things plainly made me check them, and I found statistics in older posts I couldn't properly source. One cost-per-click figure didn't match what its source actually reported, so I removed it. Another had been paraphrased into something stronger than the original, so I corrected it. If you're telling machines "trust this page", the page had better be trustworthy.
Before you add any schema:
- Write down the facts first. Who you are, where you operate, what you offer, where your profiles live.
- Make the page say them. If it isn't visible on the page, don't claim it in the markup.
- Use the same facts everywhere. Schema, footer, About page, Google Business Profile, LinkedIn and directory listings.
- Only use a type you can fill. A simpler, complete type beats a fancier, half-empty one.
The profile and citation side of that is covered in Local SEO for NZ Small Business.
FAQ
What is schema markup in simple terms?
Schema markup is code that describes your page to search engines in a standard format. It labels things like who wrote the page, what business is behind it and where that business operates, so search engines and AI tools don't have to guess.
Is schema markup a ranking factor?
Not directly. Google uses structured data to understand pages and to decide eligibility for rich results, but adding schema won't make a page outrank better content. Its value is clarity and eligibility, not a ranking boost.
How do I add schema markup to my website?
Add a JSON-LD script block to the page's HTML, usually in the head. Many website platforms and SEO plugins can generate basic schema for you. On a custom site, it's best to generate it from the same data the page displays so the two can't drift apart.
How do I check if my schema markup is working?
Run the page through Google's Rich Results Test to see which rich results it qualifies for, and the Schema Markup Validator at validator.schema.org to check the markup itself. Google Search Console also reports structured data errors across your site once it has crawled the pages.
Do I need LocalBusiness schema for a service-area business?
Only if you can fill it properly. LocalBusiness types expect an address, phone number and opening hours. If you don't publish those, an Organization with areaServed set to the region you cover is valid, honest and won't generate warnings.
