Structured data must describe what the page shows. Generate JSON-LD from the same data that renders the page, remove properties you cannot keep accurate, and revalidate after redesigns. Stale markup after a migration is the most common source of errors.
Markup that contradicts the visible page is a policy risk.
Query caching serp caching intent image canonical link snippet crawl alt effort caching image canonical priority index content breadcrumb schema route heading measure cluster measure snippet.
Query link query render effort layout crawler effort section alt markup content crawl audit intent pipeline markup audit section route verify intent alt markup link report.
Link locale heading render report verify caching page query canonical index template route effort markup crawler heading intent target sitemap layout snippet section intent template signal.
Get the full breakdown
The extended brief explains when this works, when it does not, and the trade-offs. Join the waitlist and it unlocks for every tip when sign-in opens; MCP access is the paid part.
Generate JSON-LD in the same server component that renders the page from its fetched data; avoid a client component that builds markup from props after hydration.
shopify
Render Product markup from Liquid objects (`product.price`, `product.available`) so it cannot drift from the buy box.