How to Use Schema.org Structured Data to Get Found by AI
AI can't recommend you if it can't read your website.
I've audited hundreds of local business websites for structured data. Maybe 10% have schema markup that's actually correct and complete. The rest either have nothing, have broken markup that's silently ignored, or — my personal favorite — have schema that was auto-generated by a WordPress plugin and contains their theme developer's phone number instead of their own. If AI tools are reading your website and finding garbage structured data, they're building a garbage understanding of your business.
AI doesn't read your website like a person does
When ChatGPT, Perplexity, or Google's AI Overview visits your website, it doesn't admire your hero image or read your tagline. It looks for machine-readable data. Schema.org structured data is that data — it's metadata embedded in your HTML that explicitly declares facts about your business. Your name, your address, your services, your hours, your reviews. Without it, AI is guessing. And AI guesses wrong constantly.
Do this now: right-click your homepage, select 'View Page Source,' and search for 'application/ld+json' (Ctrl+F or Cmd+F). What do you see? A block of JSON? Nothing? Multiple blocks? Whatever you find tells you where you're starting from.
You found one or more JSON-LD blocks with schema.org references — You have something. Whether it's correct is another question entirely. Keep reading — the audit section will tell you if it's actually helping or hurting you.
You found nothing — Every AI tool that has crawled your site has been guessing about your business from unstructured text. That ends today.
Forget everything except these 4 schema types
Schema.org has hundreds of types. Hundreds. You need four. Maybe three if you're in a hurry. Everything else is noise for a local business trying to show up in AI results. I'm going to rank them for you, and my ranking is going to be controversial.
FAQPage schema is the single highest-ROI structured data you can add to your site. Not LocalBusiness. FAQ. I know that sounds backwards. Here's why: AI tools pull FAQ answers directly into their responses. When ChatGPT says "according to [Business Name], the typical cost is..." — that's often coming straight from FAQPage schema. LocalBusiness tells AI you exist. FAQ tells AI what to say about you.
- 1. FAQPage — the content AI will actually quote. Write real Q&As that answer the questions your customers ask, and AI will use them as source material for recommendations.
- 2. LocalBusiness — the foundation. Your name, address, phone, hours, coordinates. Required but not sufficient. Every competitor has this (or should).
- 3. Service — what you actually do. Without this, AI knows you exist but doesn't know what to recommend you FOR. Each service gets its own block.
- 4. AggregateRating — your social proof in machine-readable format. Only add this if you have real reviews and you'll keep the numbers updated.
You don't need all four on day one. But if you only do one thing from this guide, add FAQPage schema with 5-8 real questions and genuine answers. You'll get more AI visibility from that than from a perfect LocalBusiness block.
LocalBusiness schema — the technical walkthrough
This section is going to get technical. If you're not comfortable editing HTML, hand this section to your web developer or agency — but read through it first so you know what to ask for.
1.Build your JSON-LD block
JSON-LD is a block of JSON wrapped in a <script type="application/ld+json"> tag. It goes in your page's <head> section.
Start with @context (always "https://schema.org") and @type — use the MOST SPECIFIC type available. "Plumber", "Dentist", "AutoRepair", "LegalService" — NOT just "LocalBusiness"
Generic @type is one of the most common mistakes I see. "LocalBusiness" is the fallback. If there's a more specific type that matches your business, use it. It's a direct relevance signal.
Required fields: name, address (full PostalAddress object with street, city, state, zip, country), telephone, url
Add openingHoursSpecification for each day — use the DayOfWeek format, not the shorthand string format. The shorthand is technically valid but some parsers handle it inconsistently.
Include geo coordinates (latitude, longitude) — find these by right-clicking your location on Google Maps
2.Add the fields that most people skip
priceRange — use the dollar sign format ($, $$, $$$). Vague but AI uses it for filtering.
image — URL to your logo or primary business photo. Full URL, not a relative path.
description — yes, another description. Write one specifically for schema. 2-3 sentences.
sameAs — an array of your social profile URLs and your Google Business Profile URL. This links your business entity across the web.
hasMap — your Google Maps URL. AI uses this to confirm your location independently.
areaServed — list the cities or regions you serve. Critical for service-area businesses.
You're on WordPress — Rank Math or Yoast SEO with Local SEO addon can generate this for you. BUT — and this is a big but — check what they actually generate. Rank Math's auto-generated schema once gave a client a phone number that was their theme developer's support line. Verify every field.
You're on Shopify — JSON-LD for SEO or Schema Plus for SEO. Same warning: verify the output. These apps pull from your Shopify settings, and if those settings have placeholder data from setup, your schema will too.
Custom site (React, Next.js, plain HTML) — Add the JSON-LD script tag directly in your page's head. For Next.js, use a Script component or add it in your root layout. You have full control here — no plugin surprises.
Having WRONG schema is worse than having none. I'm not exaggerating. When your schema says your phone number is 555-0100 and your website says 512-555-1234, AI doesn't average them out — it flags the inconsistency as a trust problem and downgrades confidence in ALL your data. Wrong schema actively damages your credibility with AI systems.
After adding your schema, view your page source and search for 'application/ld+json'. Find your block. Read through the JSON manually. Is the phone number right? The address? The business name? Don't just validate the syntax — validate the data.
FAQPage schema — this is where the money is
I'm putting FAQ before Service here because it has higher immediate impact. When AI tools build responses about businesses in your category, they look for structured Q&A content they can reference or quote. FAQPage schema hands them that content on a silver platter, pre-formatted, ready to use.
1.Write questions customers actually ask
Think about the last 20 phone calls or emails you got from potential customers. What did they ask? That's your FAQ list.
"How much does a kitchen remodel cost in Austin?" — yes. "What is the history of kitchen remodeling?" — no.
Write answers that could stand alone as a complete response. AI often quotes FAQ answers directly, stripped from context. Each answer should make sense by itself.
5-8 questions is the sweet spot. More than 10 and you're probably padding with filler.
I've seen FAQPage schema with "Lorem ipsum dolor sit amet" as an answer. On a live production site. For a real business. AI will index that. AI will use that. Audit everything.
2.Build the FAQPage JSON-LD
The structure: @type "FAQPage" with a mainEntity array. Each item is a @type "Question" with a name (the question) and acceptedAnswer containing @type "Answer" and text (the answer).
Put FAQPage schema on every page that has a FAQ section — homepage, service pages, about page
Keep answers under 300 words each. AI truncates long answers anyway, and concise answers get quoted more often.
Now add Service schema for each of your major services. This one is straightforward: @type "Service" with name, description, provider (reference your LocalBusiness), serviceType, and areaServed. Write service descriptions the way customers search, not the way you talk internally. "Emergency water heater replacement" beats "water heater services" because it matches the actual query intent.
3.Add AggregateRating (if you have reviews)
This goes inside your LocalBusiness block as a nested object — not as a separate schema
You need ratingValue (your average), bestRating (usually 5), and reviewCount (total reviews)
Pull from your primary review platform — wherever you have the most reviews
Update these numbers quarterly at minimum. If your schema says 47 reviews and you actually have 200, that's a trust signal failure. AI notices discrepancies.
Validate before you celebrate
Invalid schema is silently ignored. There's no error page, no warning banner, no email from Google saying "hey, your schema is broken." It just doesn't work. You can spend hours implementing beautiful schema markup and have it do absolutely nothing because of a missing comma. Always validate.
1.Google Rich Results Test — your first check
Go to search.google.com/test/rich-results and enter your homepage URL
Wait 15-30 seconds for the crawl
Each schema type should show up with a green checkmark. Click into each one to see which fields were detected.
Red errors = schema is being ignored. Fix these immediately.
Orange warnings = schema works but you're missing recommended fields. Fix these when you can.
Run this test right now. Don't wait until you think everything is perfect. Test early, test often. The number of times I've seen people spend a week on schema only to discover a syntax error on day one... just test it.
2.Schema.org validator — the deeper check
Go to validator.schema.org and paste your raw JSON-LD (not the URL — the actual JSON)
This catches issues Google's tool misses, especially around schema.org compliance vs. Google's subset
Pay attention to recommended field warnings — these aren't errors but filling them gives AI more data to work with
Also check Google Search Console under Enhancements. If your schema has been live for a few days, you'll see report cards for each detected schema type. Errors here are the most actionable because they're based on actual crawl data, not a one-time test.
Check
Rich Results Test shows green checkmarks for all your schema types — You're clean. Give crawlers 1-2 weeks to re-index, then check if your schema is showing up in search results and AI responses.
You see errors like 'Missing required field' or 'Invalid type' — Stop. Fix every error before doing anything else. Invalid schema isn't partially working — it's completely ignored. One error can break an entire block.
The schema mistakes I find on almost every site
These aren't hypothetical. These are things I've found on real businesses' websites in the last month. Every single one of them was silently damaging the business's AI visibility while the owner had no idea.
- Duplicate schema from multiple sources. Your WordPress theme generates LocalBusiness schema. Your Yoast plugin generates LocalBusiness schema. Your agency's tag manager injects LocalBusiness schema. Now you have three conflicting versions and AI ignores all of them. Run your URL through Rich Results Test and COUNT how many LocalBusiness blocks appear. There should be exactly one.
- Placeholder data in production. "123 Main St" as the address. A 555 phone number. "Lorem ipsum" in the description. These were placeholders during development that nobody replaced. AI doesn't know they're fake. It will use them.
- WordPress plugin schema with someone else's info. I found a dentist's site where Rank Math had auto-generated schema using the theme developer's phone number and a New Jersey address — for a practice in Texas. The plugin pulled from wp_options fields that were set during theme installation and never updated.
- Stale AggregateRating. Schema says 4.2 stars from 31 reviews. Business actually has 4.8 stars from 247 reviews. You're telling AI you're worse than you are.
- Generic @type "LocalBusiness" when a specific type exists. "Dentist" exists as a type. "Plumber" exists. "AutoRepair" exists. Using the generic parent type is like answering "what do you do?" with "I have a business." Be specific.
- Schema on every page of a 200-page site. LocalBusiness schema on your blog posts about industry news. Service schema on your team page. Put schema where it's relevant. Homepage and contact page for LocalBusiness. Service pages for Service schema. FAQ sections for FAQPage.
- Never updating after a business change. Moved offices? Changed hours? New phone number? If you updated your website and Google but forgot your schema, you now have conflicting data sources. AI will notice.
The fix for most of these is the same: audit what you have, delete everything that's wrong or duplicated, and rebuild from scratch with clean, verified data. It takes an afternoon. The impact lasts for years.
Your Action Checklist
0 of 12 completed
Track your progress
Find out what AI actually knows about your business
Schema markup is how you control the data AI uses to describe you. But what is AI actually saying right now? See how ChatGPT, Perplexity, and Google AI currently present your business — and where the gaps are.
AI Visibility Score — See exactly how AI models perceive and recommend your business
Competitive Rankings — Track how you stack up against competitors in AI search results
Actionable Insights — Get specific recommendations to improve your AI visibility