Write JSON-LD, in the head
There are three ways to write structured data and only one worth using. Google recommends JSON-LD over the two older formats, Microdata and RDFa, and it is the only one that lives in a single block instead of being scattered through your markup.
It goes in a script tag with type set to application/ld+json, in the head. That is the whole delivery mechanism.
Start with Organization on the homepage
Legal name, url, logo, telephone, postal address, and the profile links. The field people skip is @id, and it is the one that matters most: it is the identifier every other node on the site points back to.
Add sameAs pointing at your LinkedIn company page, your Wikidata item, and anywhere else your name is already published. That is 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 rather than floating separately.
Pick the narrowest subtype that is true. Dentist, Restaurant, MedicalBusiness, LegalService, HomeAndConstructionBusiness. There is one for most trades. What goes on the page around that markup is a different job: see 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.
A WebSite node carrying a SearchAction is what 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. Publishing a rating you awarded yourself is the schema spam pattern that triggers a manual action. Speakable is news-publisher only, so 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 and you want both answers.
Test the live URL, never the pasted code. Search Console's URL Inspection tool shows you the rendered HTML Google actually received, which is 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. 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. 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 is slower, it samples rather than measures, and it will not 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. 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 are named and what got cited instead. Re-run the same fifteen monthly, because a moving question list turns this into anecdote.
Then go back to it
Markup breaks on plugin upgrades and theme changes, and Search Console's Enhancements report is where that surfaces. Recheck two to four weeks after any change, which is roughly how long the report takes to catch up.
If the page underneath is thin, correct schema describes thin content accurately and that is all it does. Write the answer first. Mark it up second.