Schema markup is the structured data you add to your HTML to tell Google what kind of thing each part of your page is — a business, a product, an article, a recipe, a job posting. When Google understands your content structurally, it can display your search result with rich snippets: star ratings, opening hours, product prices, FAQ accordions, all right there on the search results page.
Pages with the right schema markup get 20–35% more clicks than plain blue-link results, according to multiple industry studies. For local businesses specifically, the LocalBusiness schema is the single highest-ROI piece of SEO work you can do — it's what powers the address, phone number, hours, and review-star widgets that show up next to your search listings.
This guide walks through the three most valuable schema types for small businesses (LocalBusiness, Product, Article), gives you copy- pasteable templates, and shows you exactly where to put them.
What is schema markup?
Schema markup is a vocabulary maintained by Schema.org (a joint project of Google, Microsoft, Yahoo, and Yandex) that defines hundreds of "types" a piece of content can be. You embed these types in your HTML using JSON-LD, a small JavaScript object inside a <script> tag in your page's <head>.
Google reads the JSON-LD, understands what the page represents, and rewards you with enhanced search appearance.
LocalBusiness schema (highest ROI for small businesses)
If you run any kind of local business — dental practice, law firm, restaurant, plumber, chiropractor — this is the schema you absolutely need. It populates Google's "knowledge panel" with your hours, address, phone, and review stars right on the search results page.
Copy-pasteable template:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Bright Smile Dental",
"image": "https://example.com/storefront.jpg",
"@id": "https://example.com",
"url": "https://example.com",
"telephone": "+1-608-555-1234",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Madison",
"addressRegion": "WI",
"postalCode": "53703",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
</script>Notice the "@type": "Dentist". Schema has specific types for nearly every business category — Plumber, Electrician, Restaurant, LegalService, MedicalClinic, RealEstateAgent, AutoBodyShop. Pick the most specific one for your business. The full list is at schema.org/LocalBusiness under "More specific Types."
Two fields earn special mention: aggregateRating shows gold stars next to your search result — high-impact for click-through. Only include this if you have real reviews (Google verifies). And openingHoursSpecification lets Google display "Open now · closes 5 PM" on your result.
Product schema (for ecommerce)
If you sell physical products, Product schema enables rich snippets with price, availability, and review stars:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Noise-Cancelling Headphones",
"image": "https://example.com/headphones.jpg",
"description": "Premium over-ear wireless headphones with 30-hour battery.",
"brand": { "@type": "Brand", "name": "Acme" },
"offers": {
"@type": "Offer",
"url": "https://example.com/headphones",
"priceCurrency": "USD",
"price": "199.00",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "342"
}
}
</script>Most modern ecommerce platforms (Shopify, WooCommerce, BigCommerce) generate Product schema automatically. If you're on a custom platform, add this to each product page's <head>.
Article schema (for blog posts)
If you publish blog content, Article schema makes your posts eligible for the "Top Stories" carousel and adds author + publish- date metadata to your search appearance:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Fix a Missing Meta Description in 2026",
"description": "A 5-minute fix that almost nobody does — and it's costing you click-throughs.",
"datePublished": "2026-06-08",
"dateModified": "2026-06-08",
"author": { "@type": "Person", "name": "Mathias" },
"publisher": {
"@type": "Organization",
"name": "SiteGrade",
"url": "https://sitegrade.xyz"
}
}
</script>How to add schema to your site, by platform
WordPress
Yoast SEO Premium ($99/year) and Rank Math (free version supports this) both auto- generate LocalBusiness, Product, and Article schema based on the page type. Install one, fill in your business info under the plugin's settings, and the schema is added automatically to every page.
For free + manual: use the Header and Footer Scripts plugin to paste a custom <script> tag into your homepage's <head>.
Squarespace
Settings → Advanced → Code Injection → Header. Paste the JSON-LD <script> tag here. It'll appear on every page. For page-specific schema (per-product), use the per-page Advanced Header Code in the page's settings.
Wix
Wix has built-in structured data support for some types but it's limited. For full control: Settings → Custom Code → Add Custom Code. Paste your JSON-LD script with placement set to "Head."
Shopify
Shopify themes typically include Product schema automatically. For LocalBusiness or to override the default Product schema, edit your theme's theme.liquid file and paste the JSON-LD inside the <head>.
Next.js (App Router)
In your layout.tsx or any page, render a <script> tag in the <head>:
const jsonLd = {
"@context": "https://schema.org",
"@type": "LocalBusiness",
name: "Bright Smile Dental",
// ...rest of the schema
};
export default function Layout({ children }) {
return (
<html>
<head>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
</head>
<body>{children}</body>
</html>
);
}How to verify your schema is working
Three tools, all free:
- Google Rich Results Test at search.google.com/test/rich-results. Paste your URL, click Test. It shows you exactly which rich snippets your page qualifies for and flags any errors.
- Schema Markup Validator at validator.schema.org. More thorough than Google's tool — flags syntax issues and missing recommended fields.
- Google Search Console → left nav has sections for each rich-result type your site is eligible for (Products, Reviews, Sitelinks Searchbox, etc.). Shows errors and warnings on your live pages.
After adding schema, wait 1–2 weeks for Google to re-crawl your pages. Then search your business by name — your rich snippets should start appearing in the search results.
What to do first if you're overwhelmed
If you do only one schema thing this month: add LocalBusiness schema (or the appropriate sub-type) to your homepage. It's the single highest-ROI piece of SEO work for any business with a physical location or service area. Takes 10 minutes. Compounds for the lifetime of your domain.
For everything else — checking if your schema is the right type for your business, whether your hours are formatted correctly, whether you're eligible for rich snippets you didn't know about — a full SEO audit catches it.