Course: Write Schema Markup Like a Pro — The 2026 JSON-LD Guide - Course Content - TheRevenue AI

Thank you for your purchase. Bookmark this page - your access is permanent. Order receipt was sent to your email.

Course delivery

Write Schema Markup Like a Pro: The 2026 Guide to JSON-LD for AI Search

Why Schema Is Now Worth More Than Backlinks

For fifteen years, SEO was a popularity contest. That game is dying. When ChatGPT, Gemini, Perplexity, and Google's AI Overviews answer a query, they synthesize one answer from a handful of sources, and the sources they trust most are the ones that hand them clean, machine-readable facts.

That is what schema markup does. It is a structured statement to a crawler: "This page is a product. The price is 47 USD. The seller is TheRevenue AI." A bot does not have to guess. It quotes you.

LLM crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) parse JSON-LD as a primary signal. Google's AI Overviews pull Product and FAQ schema directly into generated answers. A backlink takes weeks to earn. A correct JSON-LD block takes ten minutes to write.

JSON-LD vs Microdata vs RDFa

Format Status in 2026 AI crawler preference
Microdata Legacy. Still parsed, never recommended. Low
RDFa Mostly academic. Very low
JSON-LD Industry standard. High

JSON-LD won because it is decoupled from your visible HTML, it is one block of JSON (trivial to generate, validate, and diff), and it nests cleanly with @graph. Use JSON-LD always.

The 5 Schema Types Every Business Needs

Schema type When to use it Where it goes
Organization OR LocalBusiness Every site, once. LocalBusiness if physical area. Homepage
WebSite Every site, once. Enables Sitelinks Search Box. Homepage
BreadcrumbList Every page that is not the homepage. Per page
FAQPage Any page with three or more Q&A pairs. Per page
Product OR Service Any page selling something. Per offer page

Ship those five and you have covered 95 percent of the AI-visibility surface area.

Ready-to-Paste Examples

1. Organization

{
 "@context": "https://schema.org",
 "@type": "Organization",
 "@id": "https://therevenue-ai.com/#organization",
 "name": "TheRevenue AI",
 "url": "https://therevenue-ai.com",
 "logo": {
 "@type": "ImageObject",
 "url": "https://therevenue-ai.com/cdn/shop/files/logo.png",
 "width": 512,
 "height": 512
 },
 "description": "AI visibility audits and revenue engineering for businesses that want to be the answer LLMs give.",
 "sameAs": [
 "https://www.linkedin.com/company/therevenue-ai",
 "https://twitter.com/therevenueai"
 ]
}
  • @context always points to schema.org
  • @id is a unique URI - your domain plus a fragment
  • sameAs is the trust web. List every official profile.

2. WebSite (with Sitelinks Search Box)

{
 "@context": "https://schema.org",
 "@type": "WebSite",
 "@id": "https://therevenue-ai.com/#website",
 "url": "https://therevenue-ai.com",
 "name": "TheRevenue AI",
 "publisher": {"@id": "https://therevenue-ai.com/#organization"},
 "potentialAction": {
 "@type": "SearchAction",
 "target": {
 "@type": "EntryPoint",
 "urlTemplate": "https://therevenue-ai.com/search?q={search_term_string}"
 },
 "query-input": "required name=search_term_string"
 }
}

publisher references the Organization by @id. Do not redefine the organization here, point to it.

3. BreadcrumbList

{
 "@context": "https://schema.org",
 "@type": "BreadcrumbList",
 "itemListElement": [
 {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://therevenue-ai.com"},
 {"@type": "ListItem", "position": 2, "name": "Products", "item": "https://therevenue-ai.com/collections/all"},
 {"@type": "ListItem", "position": 3, "name": "AI Visibility Audit", "item": "https://therevenue-ai.com/products/ai-visibility-audit-personal"}
 ]
}

position is 1-indexed. The final crumb still includes item with its absolute URL.

4. FAQPage

{
 "@context": "https://schema.org",
 "@type": "FAQPage",
 "mainEntity": [
 {
 "@type": "Question",
 "name": "How long does the audit take?",
 "acceptedAnswer": {
 "@type": "Answer",
 "text": "We deliver the full 47-page report within 48 hours of payment."
 }
 }
 ]
}

mainEntity is an array, even with one question. Always.

5. Product (with Offer)

{
 "@context": "https://schema.org",
 "@type": "Product",
 "@id": "https://therevenue-ai.com/products/ai-visibility-audit-personal#product",
 "name": "Personal AI Visibility Audit",
 "description": "A 47-page audit showing exactly how ChatGPT, Gemini, Claude, and Perplexity describe you today.",
 "image": "https://therevenue-ai.com/cdn/shop/files/audit-cover.png",
 "brand": {"@id": "https://therevenue-ai.com/#organization"},
 "sku": "TRA-AUDIT-PERS-47",
 "offers": {
 "@type": "Offer",
 "url": "https://therevenue-ai.com/products/ai-visibility-audit-personal",
 "priceCurrency": "USD",
 "price": "47.00",
 "availability": "https://schema.org/InStock",
 "priceValidUntil": "2026-12-31",
 "seller": {"@id": "https://therevenue-ai.com/#organization"}
 }
}
  • price is a string, not a number
  • availability is a URL, not a word
  • priceValidUntil prevents Google from marking the offer stale

The @graph Trick

Wrap everything in one script and use @graph to list each entity. Use @id references to wire them together:

{
 "@context": "https://schema.org",
 "@graph": [
 {"@type": "Organization", "@id": "https://therevenue-ai.com/#organization", "name": "TheRevenue AI", "url": "https://therevenue-ai.com"},
 {"@type": "WebSite", "@id": "https://therevenue-ai.com/#website", "url": "https://therevenue-ai.com", "publisher": {"@id": "https://therevenue-ai.com/#organization"}},
 {"@type": "Product", "@id": "https://therevenue-ai.com/products/audit#product", "name": "Audit", "brand": {"@id": "https://therevenue-ai.com/#organization"}}
 ]
}

The Product's brand points to #organization. The crawler resolves the reference and treats it as the same entity.

The 6 Most Common Schema Mistakes

1. Wrong @id. Must be a fully qualified URI. If you reuse the same @id on two pages for different entities, parsers merge or discard them.

2. Missing required properties. Product requires name, image, and at least one of offers/review/aggregateRating. FAQPage requires mainEntity with at least one Question.

3. Mismatched type names. Schema.org is case-sensitive. LocalBusiness works. Localbusiness does not. Copy from schema.org, never retype.

4. Escaped HTML in description. Schema descriptions are plain text. HTML is a hard parse error.

5. Multi-page schema duplication. Define entity-level schema once, use @id references everywhere else.

6. Nested arrays gone wrong. mainEntity is an array. itemListElement is an array. Wrap singletons in [ ].

How to Validate

Check 1: Google's Rich Results Test. search.google.com/test/rich-results. Errors must be zero.

Check 2: Schema.org Validator. validator.schema.org. Catches schema-spec errors that Google ignores.

Check 3: Test in the LLMs themselves. Open ChatGPT, Gemini, Perplexity. Paste:

What does therevenue-ai.com offer? List the products, prices, and what makes them different. Cite the source.

If the answer mentions products by name, prices correctly, and something specific, your schema is working.

Advanced: Service, Course, AggregateRating

Service Schema

{
 "@context": "https://schema.org",
 "@type": "Service",
 "name": "Personal AI Visibility Audit",
 "provider": {"@id": "https://therevenue-ai.com/#organization"},
 "areaServed": "Worldwide",
 "offers": {
 "@type": "Offer",
 "price": "47.00",
 "priceCurrency": "USD"
 }
}

Use Product OR Service, not both, on the same page.

Course Schema for Lead Magnets

{
 "@context": "https://schema.org",
 "@type": "Course",
 "name": "Write Schema Markup Like a Pro",
 "description": "A free technical guide to writing valid JSON-LD for AI search visibility.",
 "provider": {"@id": "https://therevenue-ai.com/#organization"},
 "hasCourseInstance": {
 "@type": "CourseInstance",
 "courseMode": "Online",
 "courseWorkload": "PT45M"
 },
 "offers": {"@type": "Offer", "price": "0", "priceCurrency": "USD"}
}

courseWorkload uses ISO 8601 duration. PT45M is 45 minutes. PT2H is two hours.

AggregateRating

Wait until you have at least ten real reviews:

"aggregateRating": {
 "@type": "AggregateRating",
 "ratingValue": "4.8",
 "reviewCount": "23",
 "bestRating": "5",
 "worstRating": "1"
}

ratingValue is a string. Round to one decimal.

Real Before-and-After

Before (default Shopify product schema):

{
 "@context": "http://schema.org",
 "@type": "Product",
 "name": "AI Visibility Audit",
 "description": "Find out how AI sees you.",
 "offers": {"@type": "Offer", "price": "47.00", "priceCurrency": "USD"}
}

After (production-grade):

{
 "@context": "https://schema.org",
 "@type": "Product",
 "@id": "https://therevenue-ai.com/products/audit#product",
 "name": "Personal AI Visibility Audit",
 "description": "A 47-page audit showing exactly how ChatGPT, Gemini, Claude, and Perplexity describe you today, with a custom JSON-LD block and a 30-day fix plan delivered within 48 hours.",
 "image": ["https://therevenue-ai.com/cdn/audit-1x1.png", "https://therevenue-ai.com/cdn/audit-4x3.png"],
 "brand": {"@id": "https://therevenue-ai.com/#organization"},
 "sku": "TRA-AUDIT-PERS-47",
 "offers": {
 "@type": "Offer",
 "url": "https://therevenue-ai.com/products/audit",
 "priceCurrency": "USD",
 "price": "47.00",
 "availability": "https://schema.org/InStock",
 "priceValidUntil": "2026-12-31",
 "seller": {"@id": "https://therevenue-ai.com/#organization"}
 }
}

What changed: https in @context, @id added, specific quotable description, image array of multiple aspect ratios, brand and seller references, sku and category, priceValidUntil.

The before block ranks. The after block gets quoted.

Want Us to Write the Schema for Your Business?

Schema is the highest-use SEO work you can do in 2026. The cost of getting it wrong is invisible: bad schema does not throw errors, it just gets quietly skipped while your competitor's correct schema gets quoted.

The Personal AI Visibility Audit is $47. You get a 47-page report showing exactly how ChatGPT, Gemini, Claude, and Perplexity describe you today, the gap between that and where you should be, and a custom JSON-LD block written for your domain - copy-paste-ready into your <head>. Plus the full 30-day fix plan covering content, citations, and execution.

therevenue-ai.com/products/ai-visibility-audit-personal

Want this implemented for your business?

The Personal AI Visibility Audit is the full done-with-you version, written specifically for your domain.

Get the Audit ($47) →
Secure checkout· 30-day money-back · No questions
VISAAMERICANEXPRESSPayGoogle PayShop PayPayPaltrusted