Schema markup for AI visibility
Schema markup is how you state your business facts in the format machines read first — instead of hoping an AI infers them correctly from your prose. Five types cover most of the value: Organization/LocalBusiness, aggregateRating, Service, FAQPage and BreadcrumbList. It makes you legible. It does not make you credible — that's citations. You need both.
What structured data actually is
Strip away the jargon and it's this: a small block of JSON sitting in your page's code that says, in a standard vocabulary, "this is an accounting firm, in Singapore, at this address, offering these services, rated this well." Humans never see it. Machines read it before they read anything else, because it removes ambiguity — no parsing your homepage copy, no guessing whether "we've served the East Coast since 2009" means you're located there.
The format to use is JSON-LD, placed in a <script type="application/ld+json"> tag. Google recommends it, every engine understands it, and it doesn't touch your visible design — which means adding it can't break your site's appearance.
The five types that carry most of the weight
| Type | What it establishes | Priority |
|---|---|---|
Organization / LocalBusiness | Who you are, where, contact details, and your profiles elsewhere via sameAs | Essential |
aggregateRating | Your real rating and review count, as data rather than a widget | High — if you have genuine reviews |
Service | What you actually sell, named the way customers ask for it | High |
FAQPage | Question-and-answer pairs — the format assistants quote most readily | High |
BreadcrumbList | Where a page sits in your site's structure | Useful |
Get the entity right, and the rest follows
The single highest-leverage piece is your Organization block, because it's what everything else attaches to. Three things to get right:
- Use a stable
@id. Give your organisation a permanent identifier — typically your domain plus#organization— and reference it from other blocks. This tells machines that the entity on your about page and the one on your services page are the same business, not two. - Fill in
sameAsproperly. List your Google Business Profile, LinkedIn, Facebook and any credible directory listings. This is how a model connects your website to your reviews and your profiles — it's the closest thing to saying "and here's my ID." - Match your visible content exactly. The name, address and phone in your markup must be identical to what's on the page and on your other profiles. Mismatches don't just fail to help — they actively create the ambiguity that makes models refuse to name you.
The reviews point, because it's the one people get wrong
If you have genuine reviews, marking up aggregateRating is one of the biggest wins available — it converts a reputation that currently exists only as a widget into a number a machine can extract. We wrote about why that gap is so costly here.
The rule, stated plainly: mark up only what's true and substantiable. Your real rating, your real count, kept current. Inventing ratings or marking up reviews you can't evidence is a policy violation with real penalties, and it's the fastest way to turn a credibility asset into a liability. If you don't have reviews yet, the fix is to get reviews — not to mark up ones you wish you had.
Four mistakes that make markup useless
- Marking up content that isn't on the page. Structured data describes visible content; it isn't a place to stash claims you didn't publish. Engines check.
- Broken JSON. A single trailing comma silently invalidates the whole block — the machine reads nothing. Always validate after editing.
- Plugin sprawl. Several plugins each emitting their own Organization block produces conflicting entities and confuses exactly what you were trying to clarify. One source of truth.
- Treating it as the whole strategy. Markup makes you readable. It doesn't make anyone vouch for you. Businesses with perfect schema and zero third-party mentions still go unnamed — this is the other half.
How to check yours in five minutes
View your page source and search for application/ld+json — if there's nothing, you have no markup, and that's your starting point. If there is, paste your URL into Google's Rich Results Test or the Schema.org validator; both will tell you what parses and what's broken. Then ask the honest question: does this block actually contain my address, my services and my rating — or is it an empty shell a plugin generated? Plenty of sites technically "have schema" that says almost nothing.
See whether your markup is doing anything
Our free check shows whether ChatGPT, Perplexity, Gemini and Claude name your business when customers ask — and where the gap is: access, markup, or citations. One page, free, no call.
Get your free 5-prompt check →