SEO fidelity
Not all integration methods deliver schemas to Google the same way. Understanding the difference helps you pick the right method for your use case.The two delivery modes
Server-rendered (Next.js SDK, Astro, Nuxt, Custom API) Schemas appear in the raw HTML returned by your server. When Googlebot fetches the page, it sees the<script type="application/ld+json"> tags immediately — no JavaScript execution required.
Client-injected (CDN script, Inline script, GTM)
The page HTML loads first, then JavaScript runs and appends schema tags to the document. Google can index these schemas, but only after it renders the page with its JavaScript engine.
What Google does with each
Google crawls pages twice for most sites: once with the raw HTML fetcher (fast, no JS) and once with its full rendering pipeline (slower, JS enabled). Structured data injected by JavaScript is only visible in the second pass. The rendering pass typically happens seconds to days after the initial crawl, depending on how frequently Google crawls your site. For low-traffic or new pages, this delay can mean schemas aren’t indexed for a week or more after deploy. Server-rendered schemas are indexed on the very first crawl — no second pass needed.When client-side is fine
Client-side injection is acceptable for most marketing sites:- Low-update content — landing pages, about pages, service pages where schemas rarely change
- Organization / WebSite schemas — these don’t affect ranking for individual pages
- Sites already indexed frequently — Googlebot will pick up rendered content quickly on popular pages
- Speed of setup matters more than latency — CDN script is live in under a minute
When to upgrade to server-side
Consider switching to a server-side method if:- News / time-sensitive content —
Articleschemas on news posts need to be indexed before the story is stale - Product pages with inventory —
Productschemas withoffers(price, availability) should reflect current state as fast as possible - Rich result gaps — if the Rich Results Test at
search.google.com/test/rich-resultsshows no structured data on a page you know has schemas, JS rendering may not have happened yet for that URL - High page count — Google’s rendering queue is finite; large sites may have many pages waiting for a second pass
Checking what Googlebot sees
The fastest way to check whether your schemas appear in the raw HTML:grep returns output, your schemas are server-rendered. If it returns nothing but your browser shows them in DevTools, they’re client-injected.
You can also use URL Inspection in Google Search Console → Test Live URL → View Tested Page → HTML tab to see exactly what Googlebot fetched.
The Rich Results Test executes JavaScript, so it will show client-injected schemas. To test what the raw HTML fetcher sees, use
curl or the Search Console HTML tab instead.Summary
| Server-rendered | Client-injected | |
|---|---|---|
| In raw HTML source | ✅ Yes | ❌ No |
| Works without JS | ✅ Yes | ❌ No |
| Indexed on first crawl | ✅ Yes | ❌ After rendering pass |
| Setup complexity | Medium | Low |
| Best for | News, products, large sites | Marketing pages, quick setup |