← Back to all articles

Schema Markup Mastery: JSON‑LD for Rich Results (2026)

Structured data is no longer optional. Google now uses schema to understand entities, and sites with rich snippets get double the click‑through rate on average. Yet over 70% of small business websites have zero schema markup. This guide covers every schema type you’ll ever need – with copy‑paste JSON‑LD code, implementation strategies, and real‑world results.

Why Schema Matters for SEO (The Business Case)

Schema markup doesn’t directly boost rankings. But it unlocks rich results – star ratings, FAQ accordions, product prices, event dates, and breadcrumbs displayed directly in SERPs. These visually prominent listings get clicked far more often than plain blue links. Higher CTR sends positive engagement signals to Google, which can indirectly improve rankings.

Data: A case study by Search Engine Journal showed pages with FAQ schema saw a 12‑15% CTR increase. LocalBusiness schema with star ratings lifted CTR by 20‑30%. For ecommerce, Product schema increased click‑through rates by up to 40% in shopping results.

JSON‑LD vs Microdata vs RDFa – Always Choose JSON‑LD

Three ways to add schema:

  • JSON‑LD (Google’s preferred) – A script block in the <head> or <body>. Clean, doesn’t clutter HTML, easy to maintain.
  • Microdata – Embed attributes directly in HTML tags. Messy and verbose.
  • RDFa – Similar to microdata, but more complex.

Always use JSON‑LD. It’s easier to generate dynamically, doesn’t break your HTML, and Google explicitly recommends it.

The 8 Most Valuable Schema Types for Small Business

1. Organization – For Brand Identity

Place this on your homepage. It helps Google associate your logo, social profiles, and legal name.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "BuiltToWinWeb",
  "url": "https://built2winweb.com",
  "logo": "https://built2winweb.com/logo.webp",
  "sameAs": [
    "https://www.linkedin.com/in/jacob-campbell-32a60a1a7/",
    "https://www.upwork.com/freelancers/~016276996a9883140f"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+15613017130",
    "contactType": "customer service",
    "availableLanguage": "English"
  }
}
</script>

2. LocalBusiness – For Local SEO

Essential for any business with a physical location or service area. Displays address, phone, hours, and star ratings in local pack.

{
  "@type": "LocalBusiness",
  "name": "BuiltToWinWeb",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "7322 Ashley Shores Circle",
    "addressLocality": "Lake Worth",
    "addressRegion": "FL",
    "postalCode": "33467",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "26.5986",
    "longitude": "-80.1784"
  },
  "telephone": "+15613017130",
  "openingHours": "Mo-Fr 09:00-17:00",
  "priceRange": "$$",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "5.0",
    "reviewCount": "7"
  }
}

3. FAQPage – Double Your SERP Real Estate

Accordion‑style FAQs expand directly in search results. Your listing takes up 2‑3x the vertical space of a normal result.

{
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How much does a custom PHP website cost?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Flat‑fee packages: Business $1,750, Ecommerce $5,600, SaaS $10,000. One payment, no monthly fees."
      }
    },
    {
      "@type": "Question",
      "name": "Do you build ecommerce stores without Shopify?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes – custom PHP with Stripe checkout. No subscription fees, you own the code."
      }
    }
  ]
}

4. Product – For Ecommerce

Displays price, availability, and reviews in Google Shopping and standard results.

{
  "@type": "Product",
  "name": "Custom PHP Ecommerce Store",
  "image": "https://built2winweb.com/ecommerce.jpg",
  "description": "Full‑featured custom online store with Stripe checkout. One flat fee, no monthly costs.",
  "sku": "BTW-ECOMM",
  "offers": {
    "@type": "Offer",
    "price": "5600",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://built2winweb.com/services/ecommerce"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "5.0",
    "reviewCount": "7"
  }
}

5. BreadcrumbList – Clean Navigation Trail

Replaces the raw URL with a clickable breadcrumb path (Home > Services > Web Design). Improves CTR and helps Google understand site structure.

{
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://built2winweb.com/" },
    { "@type": "ListItem", "position": 2, "name": "Services", "item": "https://built2winweb.com/services/" },
    { "@type": "ListItem", "position": 3, "name": "Custom PHP Website", "item": "https://built2winweb.com/services/custom-php-website/" }
  ]
}

6. Article / BlogPosting – For Content Pages

Enables your blog posts to appear in Google’s Top Stories carousel and news‑style featured results. Requires author, datePublished, and image.

{
  "@type": "Article",
  "headline": "Schema Markup Mastery: JSON‑LD for Rich Results",
  "description": "Complete guide to implementing schema markup with copy‑paste JSON‑LD examples.",
  "datePublished": "2026-02-15",
  "dateModified": "2026-05-24",
  "author": {
    "@type": "Person",
    "name": "Jacob Campbell"
  },
  "publisher": {
    "@type": "Organization",
    "name": "BuiltToWinWeb",
    "logo": { "@type": "ImageObject", "url": "https://built2winweb.com/logo.webp" }
  },
  "image": "https://built2winweb.com/schema-guide.jpg",
  "mainEntityOfPage": "https://built2winweb.com/blog/schema-markup-guide"
}

7. HowTo – For Tutorials & Guides

Displays step‑by‑step instructions with images directly in search results – perfect for “how to” content.

{
  "@type": "HowTo",
  "name": "How to Add Schema Markup to Your Website",
  "step": [
    { "@type": "HowToStep", "name": "Choose your schema type", "text": "Select from LocalBusiness, FAQPage, Product, etc." },
    { "@type": "HowToStep", "name": "Generate JSON‑LD", "text": "Use a generator or write manually." },
    { "@type": "HowToStep", "name": "Add to your HTML head", "text": "Place the script tag in <head> or before </body>." },
    { "@type": "HowToStep", "name": "Test with Rich Results Tool", "text": "Validate at search.google.com/test/rich-results." }
  ]
}

8. Event – For Webinars, Workshops, or Local Events

Shows date, time, location, and ticket availability directly in SERPs.

How to Add Schema Without Breaking Your Site

  1. Write your JSON‑LD inside a <script type="application/ld+json"> tag.
  2. Place it in the <head> (best for crawling) or at the end of the <body> (still works).
  3. Use Google’s Rich Results Test to validate.
  4. After deployment, monitor Google Search Console → Enhancements for errors.

Automated Schema for PHP Sites – Dynamic Generation

For sites with hundreds of products or posts, generate schema dynamically. Here’s a complete PHP function for Product schema:

<?php
function outputProductSchema($product) {
    $schema = [
        "@context" => "https://schema.org",
        "@type" => "Product",
        "name" => $product['name'],
        "description" => $product['description'],
        "sku" => $product['sku'],
        "offers" => [
            "@type" => "Offer",
            "price" => number_format($product['price'], 2),
            "priceCurrency" => "USD",
            "availability" => $product['in_stock'] ? "https://schema.org/InStock" : "https://schema.org/OutOfStock"
        ]
    ];
    if (!empty($product['image_url'])) {
        $schema['image'] = $product['image_url'];
    }
    echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_SLASHES) . '</script>';
}
?>

Testing and Troubleshooting – Tools & Common Mistakes

Testing Tools:

  • Rich Results Test – shows which rich snippets are eligible.
  • Schema.org Validator – checks syntax and required properties.
  • Google Search Console → Enhancements – after deployment, see live errors.

Common Mistakes & Fixes:

  • Missing required properties: e.g., Article needs `author`, `headline`, `datePublished`. Check schema.org spec.
  • Using relative URLs: Always use absolute URLs (include `https://`).
  • Mismatched `@id` references: If you reference an entity, ensure it exists.
  • Schema not matching visible content: Google may penalize fake reviews or prices not on the page.
  • Placing JSON‑LD in the body but not closing script tag: Causes malformed HTML.

Case Study: From 8% CTR to 21% CTR with Schema

A family law firm in Florida had a WordPress site with no schema. Their practice area pages averaged 8% CTR on mobile. We added:

  • LocalBusiness schema to the homepage with aggregateRating (4.8 stars from 24 Google reviews).
  • FAQ schema to each practice area page (e.g., “How long does a divorce take in Florida?”).
  • BreadcrumbList schema to every page.

Results after 60 days:

  • Average mobile CTR on practice area pages: 8% → 21%.
  • Position for “divorce attorney Orlando” improved from #14 to #6 (CTR jumped from 6% to 29%).
  • Organic calls from search: +134%.

The firm now appears with star ratings and FAQ accordions, dominating competitors who still have plain blue links.

Advanced: Combining Multiple Schema Types with @graph

Instead of separate script blocks, you can combine them:

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Organization", "name": "..." },
    { "@type": "LocalBusiness", ... },
    { "@type": "FAQPage", ... }
  ]
}

This is cleaner and may help Google entity resolution.

Ready to Add Schema to Your Site?

I implement schema on every custom PHP website I build – it takes 20 minutes and delivers months of higher CTR. Even if you have an existing site, I can add LocalBusiness, FAQ, and Breadcrumb schema for a flat fee.

You’ll see results within 30 days: higher click‑through rates, more calls, and often a bump in rankings.

I'll Implement Schema for Your Site →

Data sources: Search Engine Journal, Google’s Rich Results documentation, and real client results from BuiltToWinWeb.