How to track ChatGPT and AI traffic in Google Analytics 4
GA4's new AI Assistant channel misses some assistants and app clicks land in Direct. The custom channel group, the regex, and what GA4 still can't see.
Structured data is back - for a new reason. It's how models find, parse and trust your facts. The five types worth shipping first, with markup examples.
Structured data spent a decade as a rich-snippet trick - markup you added so Google would show stars under your result. Generative engines give it a second life with higher stakes: schema is how a model reading your page at retrieval time knows which numbers are prices, which questions are answered, and which organization is speaking. When a model has to guess what a number on your page means, it hedges - and hedged answers don't name prices or brands.
You don't need all of schema.org. These five types cover most of the GEO value, in roughly this order.
Engines answer questions; FAQPage markup hands them question-answer pairs in exactly that shape. Add it to any page with a Q&A section - pricing, comparisons, docs. Two rules: the marked-up text must match the visible text, and each answer should stand alone, because that's how it will be quoted.
Product with nested Offer tells the model your name, what you are, and what you cost - price, currency, billing period as data, not prose. This is the markup that turns "pricing seems to start around $19" into "Pro is $19/month". Essential on pricing pages; for SaaS, SoftwareApplication with an offers block does the same job.
One Organization block on your homepage - name, URL, logo, official profiles in sameAs - anchors your entity. Engines reconcile mentions of your brand across the web, and this is the closest thing to a change-of-address form they accept: it tells them which name, which site and which accounts are canonically yours. Cheap to ship, and it helps disambiguate brands with generic names.
Article/BlogPosting markup (headline, date, publisher) tells a retrieval engine how fresh a page is and who published it. Freshness matters: when two sources conflict, the engine has to decide which to trust, and a clearly-dated recent page beats an undated one.
The humblest of the five, but it tells the model where a page sits in your site - that this is Docs → API → Authentication, not a random orphan page. Context improves both retrieval matching and how the engine describes the page when citing it.
<script type="application/ld+json"> tag - easier to maintain than inline microdata.An afternoon of markup is one of the better returns in GEO. Run a free audit to see whether engines are citing your pages yet - and which ones - in the sources report.
Five cover most of the GEO value, in roughly this order: FAQPage, Product with nested Offer, Organization, Article or BlogPosting, and BreadcrumbList. FAQPage is the workhorse because engines answer questions and it hands them question-answer pairs in exactly that shape, while Product and Offer turn "pricing seems to start around $19" into "Pro is $19/month". You don't need all of schema.org to capture the bulk of the benefit.
It helps for a new reason. Schema is how a model reading your page at retrieval time knows which numbers are prices, which questions are answered, and which organisation is speaking. When a model has to guess what a number means it hedges, and hedged answers don't name prices or brands - so giving it machine-readable signals reduces that guessing.
No - never mark up content that isn't visible, because it's against the rules and engines cross-check the markup against the page. The marked-up text must match the visible text, and schema that contradicts your page, such as an old price, actively teaches models to distrust it. Use JSON-LD in a script tag, validate after every change, and remember schema won't rescue thin content - ship the substance first, then mark it up.
Put this guide into practice - get your free visibility score in minutes.
