How to Add Schema Markup to Your Website
How to Add Schema Markup to Your Website
Quick answer: Schema markup is structured data that tells search engines and AI platforms what your content means. Add JSON-LD code to your <head> section for LocalBusiness, Organization, FAQ, Product, or other types. Validate with Google Rich Results Test.
Reading time: 14 minutes
What you’ll learn:
- Copy-paste JSON-LD templates for 5 schema types: LocalBusiness (local services), Organization (SaaS/national), FAQPage (reduces Ghost Influence 15-30%), Product (e-commerce), HowTo (step-by-step guides)
- Timeline expectations: 30 minutes per page for basic schema implementation, 2-4 weeks for AI platforms to re-index and reflect improvements (Ghost Influence 68% → 45%, Presence Rate 42% → 52%)
- Validation workflow using Google Rich Results Test and Schema.org validator to catch syntax errors before publishing (check “Valid items found” green status vs red “No valid items found” errors)
- Priority implementation order: Homepage Organization/LocalBusiness schema first (30 min, highest impact), then top 3 FAQ pages (1 hour total), then 5-8 product pages (1-2 hours), finally top 10 blog posts (1-2 hours)
- Four implementation methods based on your platform: manual HTML editing (add to
<head>section), WordPress plugins (Yoast/Rank Math auto-generation), Shopify theme.liquid editing, or Google Tag Manager deployment (no code edit needed)
Timeline: 30 minutes per page (copy template, customize, validate, publish). Start with homepage (Organization schema) and FAQ pages (FAQ schema).
What Schema Markup Does
Why Schema Matters for AI Visibility
Without schema, AI platforms guess what your content means:
- “We offer 24/7 service” → AI might not recognize this as opening hours
- “Serving Phoenix since 2010” → AI might not recognize this as location/founding date
- “Call (555) 123-4567” → AI might not recognize this as contact info
With schema, you explicitly tell AI platforms:
{
"openingHours": "Mo-Su 00:00-24:00",
"foundingDate": "2010",
"telephone": "+15551234567",
"areaServed": { "name": "Phoenix" }
}
Result: AI platforms cite your structured data confidently (improves Presence Rate and reduces Ghost Influence).
Schema Types You Need
Priority 1: Organization or LocalBusiness (Homepage)
Use Organization schema if: National business, SaaS, e-commerce, no physical location Use LocalBusiness schema if: Local business with physical location (HVAC, law firm, restaurant)
Where to add: Homepage (index.html, /)
Effort: 20-30 minutes
Template: LocalBusiness Schema (Local Service Business)
Example: HVAC company in Phoenix
Copy this template, customize with your details:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme HVAC",
"description": "24/7 emergency HVAC repair, installation, and maintenance in Phoenix. EPA-certified technicians, same-day service, 90-day warranty.",
"url": "https://acmehvac.com",
"telephone": "+15551234567",
"email": "info@acmehvac.com",
"foundingDate": "2010",
"priceRange": "$$",
"openingHours": "Mo-Su 00:00-24:00",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "Phoenix",
"addressRegion": "AZ",
"postalCode": "85001",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 33.4484,
"longitude": -112.0740
},
"areaServed": [
{ "@type": "City", "name": "Phoenix" },
{ "@type": "City", "name": "Scottsdale" },
{ "@type": "City", "name": "Tempe" }
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "HVAC Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "24/7 Emergency HVAC Repair",
"description": "Same-day emergency AC and furnace repair with 60-90 minute response time"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "AC Installation",
"description": "Central air conditioning installation for residential and commercial properties"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "HVAC Maintenance Plans",
"description": "Annual maintenance plans starting at $199/year"
}
}
]
},
"sameAs": [
"https://facebook.com/acmehvac",
"https://twitter.com/acmehvac",
"https://www.linkedin.com/company/acmehvac"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
</script>
Where to add this code:
<html>
<head>
<title>Acme HVAC - 24/7 Emergency AC Repair Phoenix</title>
<!-- Add schema here, before closing </head> tag -->
<script type="application/ld+json">
{ ... schema code ... }
</script>
</head>
<body>
<!-- Page content -->
</body>
</html>
Template: Organization Schema (SaaS, National Business)
Example: B2B SaaS project management tool
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "AsyncHub",
"description": "Project management software for remote teams. Async collaboration, time zone support, Slack integration.",
"url": "https://asynchub.com",
"logo": "https://asynchub.com/logo.png",
"email": "support@asynchub.com",
"foundingDate": "2020",
"founders": [
{
"@type": "Person",
"name": "Jane Doe"
}
],
"address": {
"@type": "PostalAddress",
"addressLocality": "San Francisco",
"@type": "CA",
"addressCountry": "US"
},
"sameAs": [
"https://twitter.com/asynchub",
"https://www.linkedin.com/company/asynchub",
"https://github.com/asynchub"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "Customer Support",
"email": "support@asynchub.com",
"availableLanguage": ["English"]
}
}
</script>
Priority 2: FAQPage Schema (FAQ Pages)
Use FAQPage schema if: Page has Q&A format (FAQ page, “Common Questions” page, Help articles)
Where to add: FAQ pages, help articles, “How it works” pages with Q&A
Effort: 15-20 minutes per page
Why it matters: AI platforms (especially Perplexity) cite FAQ schema directly. High impact for reducing Ghost Influence.
Template: FAQPage Schema
Example: “Do you offer 24/7 emergency service?” FAQ page
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do you offer 24/7 emergency HVAC service?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Acme HVAC provides 24/7 emergency HVAC repair service in Phoenix, including same-day response on weekends and holidays. Average response time: 60-90 minutes. Call (555) 123-4567 for immediate dispatch."
}
},
{
"@type": "Question",
"name": "How fast do you respond to emergency calls?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Average response time: 60-90 minutes. Priority dispatch for life-safety issues (gas leaks, carbon monoxide). Same-day service guaranteed, including weekends."
}
},
{
"@type": "Question",
"name": "Do you charge extra for emergency service?",
"acceptedAnswer": {
"@type": "Answer",
"text": "After-hours surcharge: $75 (weeknights after 6pm). Weekend surcharge: $100 (Saturday/Sunday). Holiday surcharge: $150 (major holidays). No surprise fees. Price quoted before work begins."
}
},
{
"@type": "Question",
"name": "What areas do you serve for emergency HVAC?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We provide 24/7 emergency service throughout Phoenix metro: Phoenix, Scottsdale, Tempe, Mesa, Chandler, Gilbert, Glendale."
}
},
{
"@type": "Question",
"name": "How do I request emergency service?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Call (555) 123-4567 (24/7 dispatch). Online: acmehvac.com/emergency. Text: (555) 123-4567 with 'EMERGENCY' + address."
}
}
]
}
</script>
Each question-answer pair gets its own object in mainEntity array.
Add as many Q&A pairs as needed (3-15 typical).
Priority 3: Product Schema (E-commerce, SaaS Products)
Use Product schema if: Selling physical products (e-commerce) or software products (SaaS)
Where to add: Product pages, pricing pages, service pages
Effort: 15-20 minutes per product
Template: Product Schema (SaaS Pricing)
Example: SaaS subscription plan
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "AsyncHub Pro Plan",
"description": "Project management for remote teams. Unlimited projects, 50 team members, Slack integration, priority support.",
"brand": {
"@type": "Brand",
"name": "AsyncHub"
},
"offers": {
"@type": "Offer",
"url": "https://asynchub.com/pricing",
"priceCurrency": "USD",
"price": "50",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "50",
"priceCurrency": "USD",
"unitText": "per month"
},
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "AsyncHub"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "234"
}
}
</script>
Template: Product Schema (E-commerce Physical Product)
Example: E-commerce product (wireless earbuds)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Earbuds Pro X",
"image": "https://example.com/earbuds-pro-x.jpg",
"description": "Noise-canceling wireless earbuds with 30-hour battery life, IPX7 water resistance, and premium sound quality.",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"sku": "EARBUDS-PRO-X-001",
"gtin": "123456789012",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/earbuds-pro-x",
"priceCurrency": "USD",
"price": "149.99",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2025-12-31",
"seller": {
"@type": "Organization",
"name": "AudioTech"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"businessDays": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": "http://schema.org/Monday"
},
"cutoffTime": "14:00:00",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 2,
"maxValue": 5
}
}
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "892"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sarah Johnson"
},
"datePublished": "2025-10-15",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"reviewBody": "Best wireless earbuds I've owned. Battery lasts forever and sound quality is amazing."
}
]
}
</script>
Priority 4: Article Schema (Blog Posts)
Use Article schema if: Publishing blog posts, news articles, guides, tutorials
Where to add: Blog post pages, news pages, guides
Effort: 10-15 minutes per article
Template: Article Schema
Example: Blog post about HVAC maintenance
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "HVAC Maintenance Checklist: 10 Things to Do Before Summer",
"description": "Prevent AC failure during Phoenix summer heat with this 10-point HVAC maintenance checklist.",
"image": "https://acmehvac.com/blog/hvac-maintenance-checklist.jpg",
"author": {
"@type": "Person",
"name": "Mike Rodriguez",
"jobTitle": "Lead HVAC Technician",
"url": "https://acmehvac.com/about"
},
"publisher": {
"@type": "Organization",
"name": "Acme HVAC",
"logo": {
"@type": "ImageObject",
"url": "https://acmehvac.com/logo.png"
}
},
"datePublished": "2025-03-15",
"dateModified": "2025-11-09",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://acmehvac.com/blog/hvac-maintenance-checklist"
}
}
</script>
Priority 5: HowTo Schema (Tutorial/Guide Pages)
Use HowTo schema if: Page explains how to do something (step-by-step guide, tutorial, instructions)
Where to add: How-to guides, tutorials, DIY instructions
Effort: 20-30 minutes per guide
Template: HowTo Schema
Example: “How to Change Your HVAC Filter”
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Change Your HVAC Filter",
"description": "Step-by-step guide to changing your HVAC air filter in 10 minutes. Improve air quality and system efficiency.",
"image": "https://acmehvac.com/guides/change-hvac-filter.jpg",
"totalTime": "PT10M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "15"
},
"supply": [
{
"@type": "HowToSupply",
"name": "Replacement HVAC filter (16x20x1 MERV 11)"
}
],
"tool": [
{
"@type": "HowToTool",
"name": "Screwdriver (optional, if cover is screwed on)"
}
],
"step": [
{
"@type": "HowToStep",
"name": "Turn off HVAC system",
"text": "Switch your thermostat to 'OFF' to prevent system from running while filter is removed.",
"url": "https://acmehvac.com/guides/change-hvac-filter#step-1"
},
{
"@type": "HowToStep",
"name": "Locate filter compartment",
"text": "Find the filter compartment (usually near return air vent or furnace). Look for a panel with a removable cover.",
"url": "https://acmehvac.com/guides/change-hvac-filter#step-2"
},
{
"@type": "HowToStep",
"name": "Remove old filter",
"text": "Slide out the old filter. Note the direction of airflow arrow on the filter frame (you'll need to match this with new filter).",
"url": "https://acmehvac.com/guides/change-hvac-filter#step-3"
},
{
"@type": "HowToStep",
"name": "Install new filter",
"text": "Slide new filter into place, matching airflow arrow direction with old filter. Ensure filter is seated fully in frame.",
"url": "https://acmehvac.com/guides/change-hvac-filter#step-4"
},
{
"@type": "HowToStep",
"name": "Close compartment and turn system on",
"text": "Replace cover, turn thermostat back to desired setting. Mark calendar to replace filter again in 90 days.",
"url": "https://acmehvac.com/guides/change-hvac-filter#step-5"
}
]
}
</script>
How to Add Schema to Your Website
Method 1: Manual HTML Edit (All Websites)
Step 1: Copy appropriate schema template (from above)
Step 2: Customize with your details
- Replace “Acme HVAC” with your business name
- Replace phone, address, services with your info
- Update dates, prices, descriptions
Step 3: Add to <head> section of HTML
Example:
<html>
<head>
<title>Your Page Title</title>
<meta name="description" content="...">
<!-- Add schema here -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business Name",
...
}
</script>
</head>
<body>
...
</body>
</html>
Step 4: Validate (see validation section below)
Step 5: Publish (upload updated HTML to server)
Method 2: WordPress Plugin
Recommended plugin: Yoast SEO or Rank Math (both have schema builders)
Using Yoast SEO:
- Install Yoast SEO plugin
- Navigate to SEO → Search Appearance → General
- Select “Organization” or “Person” for site type
- Fill out organization details (name, logo, social profiles)
- Yoast auto-generates Organization schema on homepage
For FAQ schema:
- Create FAQ page
- Use Yoast FAQ block or manually add FAQ schema to page
- Validate with Google Rich Results Test
Method 3: Shopify
Shopify includes basic Product schema automatically on product pages.
To add custom schema:
- Navigate to Online Store → Themes → Actions → Edit Code
- Open
theme.liquid - Add schema code before
</head>tag - Save
Example: Add Organization schema to all pages
<head>
...
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "{{ shop.name }}",
"url": "{{ shop.url }}",
"logo": "{{ shop.logo | img_url: '400x' }}"
}
</script>
</head>
Method 4: Google Tag Manager (For Any Site)
Process:
- Create new tag in Google Tag Manager
- Tag type: “Custom HTML”
- Paste schema code (wrapped in
<script type="application/ld+json">...</script>) - Trigger: All Pages (or specific pages)
- Publish
Example GTM tag:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Business",
"url": "https://yourbusiness.com"
}
</script>
Benefit: Add schema without editing website code directly.
Validating Schema Markup
Step 1: Google Rich Results Test
URL: https://search.google.com/test/rich-results
Process:
- Enter URL or paste schema code
- Click “Test URL” or “Test Code”
- Review results
What to check:
- “Valid items found” (green) = Schema working
- “No valid items found” (red) = Schema has errors
- Warnings (yellow) = Schema valid but missing recommended fields
Example valid result:
✓ LocalBusiness schema detected ✓ name, address, telephone, openingHours found ⚠ Warning: aggregateRating recommended (not required)
Example error:
✗ Error: Missing required field “name”
Fix errors before publishing.
Step 2: Schema.org Validator
URL: https://validator.schema.org/
Process:
- Paste schema code
- Click “Validate”
- Review errors/warnings
More strict than Google’s validator (catches edge cases).
Common Schema Errors
Error 1: Missing @context
{
"@type": "Organization", // Missing @context
"name": "Acme"
}
Fix:
{
"@context": "https://schema.org", // Add this
"@type": "Organization",
"name": "Acme"
}
Error 2: Invalid date format
{
"foundingDate": "March 2010" // Wrong format
}
Fix:
{
"foundingDate": "2010-03-01" // Use YYYY-MM-DD
}
Error 3: Missing required field
{
"@context": "https://schema.org",
"@type": "LocalBusiness"
// Missing "name" field (required)
}
Fix:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme HVAC" // Add required field
}
Schema Priority: Which Pages to Add First
Week 1: Homepage (Organization or LocalBusiness)
Effort: 30 minutes Impact: Highest (homepage = highest authority page, impacts all queries)
Add: Organization or LocalBusiness schema with name, address, phone, services, hours, reviews.
Week 2: Top 3 FAQ Pages
Effort: 1 hour (20 minutes × 3 pages) Impact: High (reduces Ghost Influence, improves AI citability)
Add: FAQPage schema to top 3 FAQ pages (e.g., “Do you offer 24/7 service?”, “What’s your pricing?”, “What areas do you serve?”).
Week 3: Product/Service Pages
Effort: 1-2 hours (15 minutes × 5-8 product pages) Impact: Moderate (improves product visibility in AI responses)
Add: Product or Service schema to top product/service pages.
Week 4: Blog Posts (Top 5-10)
Effort: 1-2 hours (10 minutes × 10 articles) Impact: Moderate (improves content discoverability)
Add: Article schema to top-performing blog posts.
The Bottom Line
Schema markup is structured data that tells search engines and AI platforms what your content means. Add JSON-LD code to your <head> section.
Start with:
- Homepage: Organization or LocalBusiness schema (30 minutes)
- FAQ pages: FAQPage schema (20 minutes per page)
- Product pages: Product schema (15 minutes per product)
Validate with Google Rich Results Test before publishing.
Expected impact: Reduces Ghost Influence 15-30%, improves Presence Rate 10-20%, eligible for rich snippets (Google).
Frequently Asked Questions
Do I need to add schema to every page?
No. Prioritize:
- Homepage: Organization/LocalBusiness (most important)
- FAQ pages: FAQPage (high impact for AI visibility)
- Product pages: Product (if e-commerce or SaaS)
- Blog posts: Article (if content-heavy site)
Skip schema on:
- Privacy policy, terms of service (low value)
- Thank you pages, confirmation pages
- Internal admin pages
How long does it take for schema to improve AI visibility?
2-4 weeks for AI platforms to re-index content with schema.
Timeline:
- Week 1: Add schema, validate, publish
- Week 2-3: Google and AI platforms re-crawl site
- Week 4: Re-run Signal to measure improvement
Expected improvement:
- Ghost Influence: 68% → 45% (15-25% reduction)
- Presence Rate: 42% → 52% (10-20% increase)
Can I use multiple schema types on one page?
Yes. Common combinations:
- Organization + FAQPage (homepage with FAQ section)
- Article + FAQPage (blog post with Q&A)
- LocalBusiness + Service (service page for local business)
Example: Multiple schemas on one page
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme HVAC",
...
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [...]
}
]
</script>
Note: Wrap multiple schemas in array [ {...}, {...} ].
Does schema help Google rankings?
Indirectly. Schema doesn’t directly boost rankings, but:
- Enables rich snippets (higher CTR from search results)
- Helps Google understand content (better matching to queries)
- Improves AI visibility (Gemini uses Google data, benefits from schema)
Direct benefit: Rich snippets (star ratings, FAQ dropdowns, breadcrumbs in Google results).
Will adding schema break my website?
No. Schema is non-visual code (users don’t see it, only search engines).
Worst case if errors:
- Google ignores invalid schema (no rich snippets)
- Website still functions normally
Best practice: Validate before publishing to catch syntax errors.
How do I know if my schema is working?
Method 1: Google Rich Results Test
- Paste URL or code
- Check for “Valid items found”
Method 2: Google Search Console
- Navigate to “Enhancements” section
- Check “Unparsable structured data” report
- If no errors, schema is working
Method 3: View source
- Right-click page → View Page Source
- Search for “@context”: “https://schema.org”
- If present, schema is on page
Does Scan check schema markup?
Yes. Scan’s Technical SEO section reports:
- Missing schema (homepage without Organization schema)
- Invalid schema syntax
- Incomplete schema (missing recommended fields)
- Schema opportunities (FAQ pages without FAQPage schema)
Example Scan finding:
“Missing LocalBusiness schema on homepage. Add structured data to improve local SEO and AI visibility. Effort: 30 minutes.”
Can I hire someone to add schema markup?
Yes. Typical cost:
- Freelancer (Upwork, Fiverr): $50-150 (homepage + 3-5 pages)
- Agency: $200-500 (comprehensive site-wide schema)
- Developer (hourly): $75-150/hour (1-3 hours)
DIY vs hire:
- DIY if comfortable editing HTML (use templates above)
- Hire if non-technical or need custom schema for complex site
What schema type should I use for a law firm?
LocalBusiness (if local practice) or ProfessionalService.
Example:
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "Smith & Associates Law Firm",
"description": "Personal injury and employment law in Phoenix. Free consultations.",
"priceRange": "$$$$",
...
}
Add service-specific fields:
- areaServed: Phoenix, Scottsdale
- hasOfferCatalog: Personal injury, Employment law, etc.
Ready to add schema markup? Start with homepage (Organization or LocalBusiness schema), validate with Google Rich Results Test, and publish. Re-run Signal in 30 days to measure AI visibility improvement.
Was this helpful?
Thanks for your feedback!
Have suggestions for improvement?
Tell us moreHelp Us Improve This Article
Know a better way to explain this? Have a real-world example or tip to share?
Contribute and earn credits:
- Submit: Get $25 credit (Signal, Scan, or Solutions)
- If accepted: Get an additional $25 credit ($50 total)
- Plus: Byline credit on this article