Write JSON-LD, in the head
There are three ways to write structured data. Only one is worth using. Google recommends JSON-LD over the two older formats, Microdata and RDFa. It's also the only one that lives in a single block instead of scattered through your markup.
It goes in a script tag with type set to application/ld+json, in the head. That's it.
Start with Organization on the homepage
You need the legal name, url, logo, telephone, postal address, and the profile links, and the field people skip is @id, which matters most, because it's the identifier every other node on the site points back to. Skip it and nothing connects.
Add sameAs pointing at your LinkedIn company page, your Wikidata item, and anywhere else your name is already published, because that's what collapses five loose references into one entity a model can resolve.
One LocalBusiness per location page
Each location page gets its own block, and parentOrganization carries the @id from the homepage Organization, so the two are tied together instead of floating separately.
Pick the narrowest subtype that is true. Dentist, Restaurant, MedicalBusiness, LegalService, HomeAndConstructionBusiness. Most trades have one. What goes on the page around that markup is a different job, and you'll find it in the local search work.
Match the rest of the types to what you sell
Article on posts. Product with offers, price and availability if you have a store. Service on service pages. Person for a founder or author with a public profile. BreadcrumbList goes site-wide on every page below the homepage, and that's the list.
A WebSite node carrying a SearchAction makes a site eligible for the sitelinks search box on its own brand result.
Review and AggregateRating only where the ratings come from somewhere other than your own testimonials page. A rating you awarded yourself is the schema spam pattern that triggers a manual action. Speakable is news-publisher only. Most sites skip it.
Validate twice, against the live URL
Google's Rich Results Test tells you which features the page qualifies for. The Schema.org validator tells you whether the syntax is legal. They answer different questions. You want both answers.
Test the live URL, never the pasted code. Search Console's URL Inspection tool shows the rendered HTML Google actually received, and that's frequently not what your CMS thinks it published.
Measuring schema markup impact
Schema gets your pages eligible for AI citation, but eligibility and actual citation are two different problems, and AirOps is built for the second one. Its Insights layer tracks which URLs ChatGPT, Perplexity, and Google AI Overviews are pulling from for the topics you care about, so you can see citation rate, mention rate, sentiment, and which competitors are being cited in your place.
From there it ties those signals back to your Search Console and analytics numbers, and it can queue the writing needed to fill the gaps it finds, which closes the loop. The loop is the point. A validated schema deployment stops being a hopeful bet and becomes something you can check afterward.
Google Search Console and manual spot-checks
You can also measure a version of this for free. It's slower, it samples instead of measuring, and it won't tell you who got cited in your place, but it costs nothing to run.
Rich result reports. The Enhancements section of Search Console shows rich result impressions and click-through rates over time, so you can compare CTR before and after you deploy.
AI citation spot-checks. Pick fifteen questions a buyer would actually type, run each one in ChatGPT, Perplexity and Google's AI Overview, and record whether you're named and what got cited instead. Re-run the same fifteen monthly. A moving question list turns this into anecdote.
Then go back to it
Markup breaks on plugin upgrades and theme changes. Search Console's Enhancements report is where that surfaces. Recheck two to four weeks after any change, since that's roughly how long the report takes to catch up.
If the page underneath is thin, correct schema describes thin content accurately. That's all it does. Write the answer first. Mark it up second.