Schema Markup Decoded: The Hidden Language That Gets You Cited by AI
What is Schema Markup
The Definition
Schema markup (also called structured data) is a standardized vocabulary of tags you add to your HTML. These tags explicitly define what things are: this is a business, this is a product, this is an FAQ, this person wrote this article.
How It Works
<!-- Without schema: AI guesses what this is -->
<div>
<h1>Acme Corp</h1>
<p>123 Main St, San Francisco</p>
<p>
contact@acme.com
</p>
</div>
<!-- With schema: AI knows exactly what this is -->
<script type="application/ld+json">
{
"@context": "
https://schema.org
",
"@type": "Organization",
"name": "Acme Corp",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "San Francisco"
},
"email": "
contact@acme.com
"
}
</script>The Three Formats
| Format | Description | Recommendation |
|---|---|---|
| JSON-LD | JavaScript in <script> tag |
✅ Recommended by Google |
| Microdata | HTML attributes inline | ⚠️ Harder to maintain |
| RDFa | HTML attributes | ⚠️ Less common |
Always use JSON-LD. It's cleaner, easier to maintain, and preferred by search engines.
Why Schema Matters for AI
The Disambiguation Problem
Words are ambiguous. "Apple" could mean:
- The fruit
- Apple Inc.
- Apple Records
- A specific product like Apple Watch
Schema removes ambiguity:
{
"@type": "Corporation",
"name": "Apple Inc.",
"sameAs": "
https://www.wikidata.org/wiki/Q312
"
}Now AI knows exactly which Apple you mean.
Schema as AI Instructions
Think of schema as metadata that tells AI:
- What this content is (article, product, FAQ)
- Who created it (author, organization)
- When it was published/updated
- Where this entity is located
- How things relate to each other
The Citation Connection
AI systems prefer citing structured sources because:
- Confidence - Schema confirms what content represents
- Accuracy - Explicit data reduces interpretation errors
- Attribution - Clear authorship supports E-E-A-T
- Freshness - dateModified shows recency
Types of Schema Markup
Entity Types (What You Are)
| Schema Type | Use Case |
|---|---|
| Organization | Company/business |
| LocalBusiness | Physical location |
| Person | Individual (founder, author) |
| Corporation | Large enterprise |
| EducationalOrganization | Schools, universities |
Content Types (What You Publish)
| Schema Type | Use Case |
|---|---|
| Article | Blog posts, news |
| BlogPosting | Blog content specifically |
| FAQPage | Question and answer pages |
| HowTo | Step-by-step guides |
| Review | Product/service reviews |
| Recipe | Cooking instructions |
Commercial Types (What You Sell)
| Schema Type | Use Case |
|---|---|
| Product | Physical or digital products |
| Service | Services offered |
| Offer | Pricing information |
| SoftwareApplication | SaaS products |
| Course | Educational offerings |
Connecting Types (Relationships)
| Schema Type | Use Case |
|---|---|
| WebSite | Site-level information |
| WebPage | Page metadata |
| BreadcrumbList | Navigation structure |
| ItemList | Collections of things |
Essential Schema for Every Website
The Foundation Stack
Every website should implement these:
1. Organization Schema (Homepage)
{
"@context": "
https://schema.org
",
"@type": "Organization",
"@id": "
https://yoursite.com/#organization
",
"name": "Your Company Name",
"url": "
https://yoursite.com
",
"logo": {
"@type": "ImageObject",
"url": "
https://yoursite.com/logo.png
",
"width": 600,
"height": 60
},
"description": "What your company does in 1-2 sentences",
"foundingDate": "2020",
"sameAs": [
"
https://linkedin.com/company/yourcompany
",
"
https://twitter.com/yourcompany
",
"
https://github.com/yourcompany
"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"email": "
hello@yoursite.com
"
}
}2. WebSite Schema (Homepage)
{
"@context": "
https://schema.org
",
"@type": "WebSite",
"@id": "
https://yoursite.com/#website
",
"url": "
https://yoursite.com
",
"name": "Your Company Name",
"description": "Site description",
"publisher": {
"@id": "
https://yoursite.com/#organization
"
}
}3. WebPage Schema (Every Page)
{
"@context": "
https://schema.org
",
"@type": "WebPage",
"@id": "
https://yoursite.com/about/#webpage
",
"url": "
https://yoursite.com/about/
",
"name": "About Us",
"description": "Page description",
"isPartOf": {
"@id": "
https://yoursite.com/#website
"
},
"about": {
"@id": "
https://yoursite.com/#organization
"
}
}Content Page Schema
Blog Post / Article
{
"@context": "
https://schema.org
",
"@type": "Article",
"headline": "Article Title Here",
"description": "Article description",
"image": "
https://yoursite.com/images/article-image.jpg
",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "
https://yoursite.com/team/author-name/
"
},
"publisher": {
"@id": "
https://yoursite.com/#organization
"
},
"datePublished": "2026-01-10",
"dateModified": "2026-01-10"
}FAQ Page
{
"@context": "
https://schema.org
",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is your refund policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We offer a 30-day money-back guarantee..."
}
},
{
"@type": "Question",
"name": "How long does shipping take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard shipping takes 5-7 business days..."
}
}
]
}
Implementing Schema in Webflow
Method 1: Page-Level Custom Code
- Open the page in the Webflow Designer
- Go to Page Settings (gear icon)
- Scroll to Custom Code section
- Paste JSON-LD in "Inside tag"
<script type="application/ld+json">
{
"@context": "
https://schema.org
",
"@type": "FAQPage",
...
}
</script>Method 2: Site-Wide Custom Code
- Go to Project Settings
- Navigate to Custom Code tab
- Add schema in "Head Code" section
- Use for Organization and WebSite schema
Method 3: Embed Component
For CMS-driven pages:
- Add an Embed element to your template
- Insert schema with CMS field references
- Use Webflow's field syntax
<script type="application/ld+json">
{
"@context": "
https://schema.org
",
"@type": "BlogPosting",
"headline": "{{wf {"path":"name","type":"PlainText"} }}",
"datePublished": "{{wf {"path":"published-date","type":"Date"} }}"
}
</script>Method 4: Using Finsweet Attributes
Finsweet's schema attributes can automate some schema:
<article fs-schema="BlogPosting">
<h1 fs-schema-field="headline">Title</h1>
<time fs-schema-field="datePublished">Date</time>
</article>
Advanced Schema Patterns
Nested Entity Graph
Connect multiple entities:
{
"@context": "
https://schema.org
",
"@graph": [
{
"@type": "Organization",
"@id": "
https://yoursite.com/#organization
",
"name": "Your Company"
},
{
"@type": "WebSite",
"@id": "
https://yoursite.com/#website
",
"publisher": {"@id": "
https://yoursite.com/#organization
"}
},
{
"@type": "WebPage",
"@id": "
https://yoursite.com/about/#webpage
",
"isPartOf": {"@id": "
https://yoursite.com/#website
"}
}
]
}Service + Offer Pattern
{
"@type": "Service",
"name": "Website Development",
"provider": {
"@id": "
https://yoursite.com/#organization
"
},
"offers": {
"@type": "Offer",
"price": "5000",
"priceCurrency": "USD"
},
"areaServed": {
"@type": "Country",
"name": "United States"
}
}SaaS Product Schema
{
"@type": "SoftwareApplication",
"name": "Your SaaS Product",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web browser",
"offers": {
"@type": "AggregateOffer",
"lowPrice": "29",
"highPrice": "299",
"priceCurrency": "USD",
"offerCount": "3"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "150"
}
}
Testing and Validation
Testing Tools
| Tool | Purpose | URL |
|---|---|---|
| Google Rich Results Test | Validate and preview | search.google.com/test/rich-results |
| Schema.org Validator | Syntax validation | validator.schema.org |
| Schema Markup Validator | Detailed checking | validator.schema.org |
Validation Checklist
- No syntax errors (valid JSON)
- Required properties present
- URLs are absolute, not relative
- Images are accessible
- Dates in ISO 8601 format
- @id references are consistent
- No duplicate @type declarations
Monitoring in Search Console
- Go to Google Search Console
- Navigate to Enhancements
- Check each schema type for errors
- Fix issues promptly
Common Mistakes
Mistake 1: Invalid JSON
// ❌ Wrong - trailing comma
{
"name": "Company",
"url": "
https://site.com
", // <- trailing comma
}
// ✅ Correct
{
"name": "Company",
"url": "
https://site.com
"
}Mistake 2: Relative URLs
// ❌ Wrong
"url": "/about",
"image": "images/logo.png"
// ✅ Correct
"url": "
https://yoursite.com/about
",
"image": "
https://yoursite.com/images/logo.png
"Mistake 3: Missing Required Properties
Each schema type has required properties. Check schema.org documentation.
Mistake 4: Schema That Doesn't Match Content
Schema must accurately represent visible page content. Don't add Review schema without visible reviews.
Mistake 5: Overmarking
Don't add schema for things that don't exist or aren't relevant.
Schema Strategy by Business Type
SaaS Company
Priority schema:
1. Organization
2. SoftwareApplication
3. FAQPage (pricing, features)
4. Article (blog posts)
5. HowTo (tutorials)Agency/Consultancy
Priority schema:
1. Organization
2. Service (each service)
3. FAQPage
4. Article/Case studies
5. Person (team members)E-commerce
Priority schema:
1. Organization
2. Product (each product)
3. Offer (pricing)
4. Review (customer reviews)
5. BreadcrumbList (navigation)Local Business
Priority schema:
1. LocalBusiness (with hours, location)
2. Service
3. FAQPage
4. Review
5. Event (if applicable)
References
Official Documentation
- Schema.org - Complete vocabulary
- Google Structured Data Docs
- Google Rich Results Test