Module 4 · Lesson 2/3 · ~12 min read

0/21 lessons read · Your progress is kept in this browser only.

Server-Readable Content and Structured Data

Does the key information on your pages actually reach crawlers? Learn to check server-delivered content and spot missing schema.org structured data.

Learning goals

  • Checks whether a page's key information is in the HTML delivered by the server.
  • Detects whether a page has JSON-LD structured data.
  • Explains what structured data does and what it doesn't guarantee.

In this lesson

Even with access open, a crawler may not find the key information on a page. This lesson covers two things. The first is whether your content is in what the server actually sends. The second is structured data, which helps machines read your brand facts consistently.

What a crawler sees on your page

When you open a page, your browser (Chrome, Safari) first receives the HTML from the server. Then it runs the page's JavaScript. On some sites, pricing tables, feature lists or plan limits appear only in that second step.

An AI crawler may not always take that second step. Google documents that it processes JavaScript for Search. As of October 2026, AI providers' documentation generally doesn't say clearly whether their crawlers run JavaScript. The safe route is to make sure the key information is already in the HTML the server sends.

Three ways to check

1. View the page source. Open the page and view its source (Ctrl+U on Windows, Cmd+Option+U on Mac). Search it with Ctrl+F or Cmd+F for a key phrase: a price, a plan name, "free for up to 3 agents". If you can't find it, the information may not be coming from the server.

2. Turn JavaScript off. Temporarily disable JavaScript in your browser settings and reload. If the key information disappears, it depends on JavaScript.

3. Ask your technical team. A developer can check it with one command:

curl -s https://acmehelpdesk.example/pricing | grep "3 agents"

Empty output means the phrase isn't in the server-delivered HTML.

Example (representative)

Acme Helpdesk is a fictional product. The pages are examples.

  • acmehelpdesk.example/docs/email-forwarding: The setup steps are plain text in the source. No problem.
  • acmehelpdesk.example/pricing: The source contains only <div id="app"></div>. Plans and prices load later through JavaScript, so a crawler may not see them.
  • acmehelpdesk.example/security: The certifications appear only as badge images. Information that isn't written as text may not be read reliably.

Note for your technical team (draft):

The key information on the pricing and security pages (plan names, prices, limits, certifications) should be in the server-delivered HTML as text. The pages can be server-rendered or pre-rendered, or at least have these facts in the initial HTML. Information shown in images should also appear as text on the page.

A note: text inside accordions or tabs is readable if it's in the HTML. The problem is text that's fetched from the server only after a click.

Structured data: labels for machines

Structured data labels a page's information in a format machines can read. The most common format is JSON-LD written with the schema.org vocabulary. It sits in the page's HTML as a block that starts with <script type="application/ld+json">.

Types often used on company sites:

  • Organization: the company's name, logo, address and official profiles.
  • SoftwareApplication or Product: the product's name, description and offers.
  • WebSite: the site's name and address.
  • LocalBusiness, for companies with physical locations.

How to spot it's missing

  • Search the page source for application/ld+json. No results means there's no JSON-LD on the page.
  • Check the page with Google's Rich Results Test or the Schema.org validator (validator.schema.org). They show which types are present and any errors.
  • If the JSON-LD is added later by JavaScript, the problem above applies here too. Check that it shows up in the source.

Draft (representative)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Helpdesk",
  "url": "https://acmehelpdesk.example",
  "logo": "https://acmehelpdesk.example/logo.png",
  "sameAs": [
    "https://social.example/acmehelpdesk"
  ]
}
</script>

This is an example. Fill it in with your company's real details. They should match what's visible on the page and the facts in your brand fact sheet (Module 5).

What structured data doesn't guarantee

Google states that you don't need to add any special schema.org structured data to appear in AI Overviews or AI Mode. Structured data alone isn't a visibility switch.

What it does is narrower: it makes it easier for machines to read core facts, such as the company name, logo and address, in one consistent form. So its value depends on its accuracy. If the page says "up to 5 agents" and the markup says 3, it creates confusion, not clarity. Don't mark up information that's invisible on the page or contradicts it.

Summary

  • Key information such as prices, plan limits and policies should be in the server-delivered HTML as text.
  • To check, view the page source, try with JavaScript off, or ask your technical team for a one-line check.
  • Text in images, or text loaded later, may not be read reliably.
  • Structured data (JSON-LD, schema.org) labels brand facts for machines. You can find gaps in the page source or with validation tools.
  • Google says no special structured data is needed for its AI features. Structured data is no guarantee, and its value depends on its accuracy.