Skip to main content
Technical SEO

What Is Schema Markup? & How to Add It to Your Site

By Khalid Hossen17 min read
What Is Schema Markup? & How to Add It to Your Site

Learn how to choose, implement, validate, govern, and measure schema markup with practical JSON-LD examples and current Google guidance for SEO.

Schema markup is structured data that labels the people, products, organizations, articles, events, and other entities described on a web page. It gives search engines explicit clues about meaning and relationships. When the page and markup meet a search feature’s requirements, the page may become eligible for a rich result.

Eligibility is the important word. Valid markup does not guarantee a special search appearance, higher rankings, or more traffic. Google may still show a standard text result, and a structured data manual action removes rich-result eligibility rather than directly changing ordinary web ranking. The safest strategy is accurate markup that reflects visible, useful content.

This guide explains how to choose a type, implement JSON-LD, validate it, avoid misleading claims, manage structured data in a CMS, and measure whether the work supports real business goals.

Structured data code describing entities on a web page

What Schema Markup Means

Schema.org provides a shared vocabulary of types and properties. A type identifies what an item is, such as Article, Product, Organization, or LocalBusiness. Properties describe it, such as a name, author, address, image, price, or publication date.

Google Search supports selected structured data features with its own required and recommended properties. Schema.org defines a broader vocabulary, so a property can be valid Schema.org markup without enabling a Google rich result. Use Google Search Central as the definitive source for Google feature eligibility and Schema.org for the wider vocabulary and generic validation.

Structured Data, Rich Results, and Rankings

Structured data can help Google understand page content and can make a page eligible for supported search features. It does not create facts that are missing from the page, and it should not be treated as a ranking shortcut. A page with excellent markup but weak, misleading, or inaccessible content is not a strong result.

A rich result may present information such as product availability, recipe details, event information, article images, or breadcrumbs. The available appearance depends on the feature, query, device, location, user context, and Google’s systems. Search features change, so implementations need ongoing maintenance.

Choose the Right Schema Type

Begin with the main purpose of the page, not the rich result you hope to obtain. If a page primarily presents a product for purchase, use the current product and merchant-listing guidance. If it is an editorial review, follow the appropriate product and review documentation. A service business homepage is not a product page merely because the company sells services.

Common choices

  • Article, NewsArticle, or BlogPosting: editorial pages with a headline, author, dates, and relevant images.
  • BreadcrumbList: a page’s position in a visible site hierarchy.
  • Organization: the entity operating a site, including its preferred name, logo, and identity links.
  • LocalBusiness: a qualifying physical business location with accurate address, hours, and contact information.
  • Product: a specific product described on a page, with feature requirements determined by whether the page supports purchase or editorial information.
  • Event: a real scheduled event with a location or valid online attendance details.
  • VideoObject: a video that is a meaningful part of the page.
  • ProfilePage: a page whose main focus is a person or organization profile.

Use the most specific type that accurately represents the content. Do not add every remotely related type. A smaller graph with complete, correct properties is easier to test and maintain than a large graph filled with guessed values.

Supported Formats: JSON-LD, Microdata, and RDFa

Google supports JSON-LD, Microdata, and RDFa for structured data unless a feature guide says otherwise. JSON-LD is usually the easiest to implement and maintain because the data is contained in a script block instead of being interleaved with visible HTML.

  • JSON-LD: a JavaScript object inside a script element. It works well with templates and nested entities.
  • Microdata: attributes embedded directly into HTML elements.
  • RDFa: HTML attributes designed for linked data.

Choose the format your team can keep synchronized with the page. Converting valid Microdata to JSON-LD is not automatically valuable if the migration introduces stale or duplicated information.

A Basic JSON-LD Example

The following example shows the shape of an Article implementation. It is intentionally generic; compare it with the current feature documentation before using it in production.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Plan a Technical SEO Audit",
  "datePublished": "2026-07-10T09:00:00+06:00",
  "dateModified": "2026-07-18T14:30:00+06:00",
  "author": {
    "@type": "Person",
    "name": "Example Author",
    "url": "https://example.com/authors/example-author/"
  },
  "image": ["https://example.com/images/technical-seo-audit.jpg"],
  "mainEntityOfPage": "https://example.com/technical-seo-audit/"
}

The visible page should show the same headline, author, dates, and relevant image. Use real values generated from the CMS. Do not copy placeholder data, invent an author, or mark a modification date that did not happen.

Connect Entities With Stable Identifiers

Structured data becomes easier to maintain when important entities have stable URLs and identifiers. An Organization can have a consistent @id, and an Article can reference that identifier as its publisher. A Product and its Offer can be nested or connected where the feature guidance supports it.

Use canonical, fully qualified URLs. Keep the same identifier for the same entity across templates. Do not use one identifier for several branches, people, or products. When a name changes, update the visible page and graph together while preserving the stable identity when it still represents the same real-world entity.

Required, Recommended, and Optional Properties

A required property is necessary for eligibility for a specific Google feature. Recommended properties can improve completeness and usefulness. Optional Schema.org properties may help other systems or internal data consumers, but they do not automatically affect Google Search.

Implement all required properties with valid values, then add recommended properties that your organization can maintain accurately. Fewer correct properties are better than a complete-looking object containing fabricated ratings, default prices, inaccurate stock, or missing images.

General Quality Rules

Google’s structured data guidelines require markup to represent the page truthfully. The content described must be visible to users and relevant to the page’s main focus. Pages also need to comply with Search policies and feature-specific requirements.

  • Do not mark up hidden claims, reviews, prices, jobs, or events.
  • Do not use a type that misrepresents the page.
  • Do not create fake ratings or copy ratings from unrelated sources.
  • Keep time-sensitive values current.
  • Use images that belong to the content and are crawlable.
  • Place the markup on the page it describes.
  • Include the main type that reflects the page’s primary purpose.
  • Keep duplicate page variants consistent when both remain accessible.

Syntactic validity is not enough. A validator can confirm that a field is formatted correctly but cannot always determine whether a review is genuine, a job is open, an event was canceled, or a price matches the checkout.

Article and NewsArticle Markup

Article markup can identify a headline, author, publication time, modified time, and images. For news, the visible date and time should be clear, and the modified time should change only after a meaningful update. Link authors to pages that identify them and provide relevant background.

Keep the headline aligned with the H1, the date values aligned with visible dates, and image URLs accessible to crawlers. Structured data does not replace editorial transparency, accurate bylines, or correction notes.

Product, Offer, and Review Markup

Product implementations require careful modeling because editorial product snippets and merchant listings have different needs. A purchasable product page may include an Offer with a real price, currency, availability, shipping information, and return policy where supported. An editorial page must not pretend to be a merchant page.

Review markup should represent reviews visible on the page. An aggregate rating must be calculated from genuine ratings for the item being reviewed. Do not mark up a business’s selected testimonials as if they were an independent aggregate, and do not attach ratings for one product to another.

Product structured data fields connected to an ecommerce page

LocalBusiness and Organization Markup

Organization markup helps clarify the identity of the entity behind a website. LocalBusiness is appropriate for a qualifying physical business and can describe a specific location. Use the most specific applicable subtype, and match the visible name, address, telephone number, and hours.

For multi-location organizations, give each location its own useful page and distinct data. Do not put every branch into one LocalBusiness object. Structured data complements business information elsewhere; it does not replace a complete website or Google Business Profile.

FAQ Markup: Avoid Outdated Assumptions

FAQ content can still help users, but an FAQ section should not be added solely to chase a search enhancement. Google’s supported features and eligibility rules change, and FAQ rich results have been limited compared with earlier years. Check the current Search Gallery before investing in feature-specific markup.

If you keep FAQ structured data for other consumers, ensure every question and answer is visible, accurate, and genuinely part of the page. Do not repeat the same generic questions across hundreds of URLs or mark up user-submitted answers as publisher-authored FAQs.

Adding Schema in WordPress or Another CMS

Many CMS themes and plugins already generate structured data. Audit what exists before adding another plugin or custom block; duplicate Organization, Article, Breadcrumb, and Product objects are common. Choose one owner for each entity or feature.

Implementation options

  • A trusted SEO or ecommerce plugin configured with real site data.
  • Theme or template code populated from CMS fields.
  • A server-side component that builds JSON-LD from a product or content model.
  • A tag-management implementation for limited cases, with careful rendering and governance.
  • Manual markup for a small static site.

Server- or template-generated markup is often easier to keep synchronized than a tag manager. If structured data is injected with JavaScript, verify that Google can render it and that late-loading consent or personalization logic does not prevent delivery.

Validate Before and After Deployment

Use Google’s Rich Results Test to see which supported Google features the markup may enable and to catch feature-specific errors. Use the Schema Markup Validator to inspect Schema.org syntax and the full extracted graph. The tools answer different questions, so passing one does not replace the other.

  1. Test code before deployment.
  2. Resolve errors and evaluate warnings against the feature documentation.
  3. Deploy to a crawlable test or production URL.
  4. Test the live URL, not only pasted code.
  5. Use URL Inspection to confirm Google can access the page.
  6. Monitor applicable rich-result reports in Search Console.
  7. Re-test after template, plugin, pricing, or front-end changes.

A warning often identifies a recommended property, while an error usually blocks feature eligibility. Read the message and current documentation instead of adding placeholder values merely to make the report green.

Troubleshooting Common Problems

Markup is valid but no rich result appears

This is not automatically a defect. Google does not guarantee display. Confirm that the page is indexed, the markup describes the main visible content, the feature is supported, feature-specific policies are met, and there is no structured data manual action.

Search Console reports more affected URLs than expected

A template, plugin, or shared component may be generating the same issue at scale. Group examples by page type, inspect the rendered markup, and fix the common source rather than editing pages one by one.

Duplicate entities appear

Identify every source: theme, SEO plugin, ecommerce plugin, custom tag, and app. Decide which source owns each entity. Remove or connect duplicates carefully, then validate representative page types.

Values do not match the page

Trace the structured data field to its source. Prices, availability, dates, and ratings should come from the same authoritative data used by the visible page. Avoid separate manual fields that drift out of sync.

Google cannot access an image or page

Check robots.txt, meta robots, HTTP headers, authentication, canonical tags, CDN rules, hotlink protection, and response status. Structured data on a blocked or noindexed page cannot make that page eligible for a rich result.

A Structured Data Rollout Plan

1. Inventory page types

List the templates that matter: homepage, organization, local location, article, product, category, event, video, profile, and breadcrumb. Record existing markup, traffic, conversion role, and ownership.

2. Choose one high-value feature

Prioritize a feature supported by the visible content and business model. A retailer may begin with products; a publisher with articles; a location-based company with Organization, LocalBusiness, and breadcrumbs.

3. Define a field map

Map each property to a trustworthy CMS, catalog, author, location, or event field. Define formatting, fallbacks, validation rules, and who updates the value. Never generate a property that has no reliable source.

4. Build and validate a small sample

Test several representative pages, including edge cases such as missing images, out-of-stock products, multiple authors, overnight opening hours, and canceled events.

5. Deploy gradually

Release to a controlled group when possible. Monitor errors, page rendering, crawl access, and business metrics before expanding to every template.

6. Assign maintenance

Document ownership, review dates, alert thresholds, and a rollback process. Subscribe to relevant Search Central updates because supported features and requirements change.

Measurement: Is the Markup Worth Maintaining?

Measure structured data as a product change, not a guaranteed traffic lever. Select a set of stable pages with enough historical data, record a baseline, deploy valid markup, confirm Google detected it, and observe performance over a meaningful period. Avoid pages dominated by seasonality or breaking news when you need a clean comparison.

  • Track valid, warning, and invalid items by template.
  • Monitor impressions, clicks, click-through rate, and conversions.
  • Segment by search appearance when Search Console provides it.
  • Annotate deployments and Google feature changes.
  • Compare similar pages rather than raw site totals.
  • Include maintenance time and error risk in the evaluation.

An increase cannot always be attributed solely to schema because content, rankings, demand, snippets, and competition also change. Treat the result as evidence with uncertainty, not proof of causation.

Governance Checklist

  • Every type matches the page’s primary visible content.
  • Required properties are complete and correctly formatted.
  • Recommended properties are included only when accurate.
  • Dates, prices, availability, ratings, and hours come from authoritative systems.
  • Images are relevant, crawlable, indexable, and appropriately licensed.
  • Markup is not duplicated by several plugins or templates.
  • Canonical URLs and identifiers are stable and fully qualified.
  • Rich Results Test and Schema Markup Validator checks are part of release QA.
  • Search Console reports and manual actions are monitored.
  • Owners know how to disable or roll back faulty markup.

Decision Framework: Should This Page Have Schema?

Before implementation, ask four questions. First, does the page describe a clear entity or activity? Second, is there a supported type that accurately represents it? Third, does the visible page contain the required information? Fourth, can the values be maintained automatically or through an owned workflow?

If the answer to any question is no, improve the page or data model before adding markup. Schema should follow content and business truth. It should not become a parallel database of information that users cannot see.

High-confidence implementation

A product page has a unique SKU, visible price, current availability, product images, shipping terms, and a reliable catalog feed. Product and Offer markup can be generated from the same system that renders the page. This is a strong candidate because the data is specific, visible, and maintainable.

Low-confidence implementation

A services page has no customer reviews, but a marketer proposes adding a five-star AggregateRating copied from the company’s overall profile. The rating does not evaluate the specific visible item and may be self-serving or misleading. Do not add it simply because competitors display stars.

Practical Examples by Business Type

Local service company

Use Organization information consistently across the site and a specific LocalBusiness subtype for each real location page. Include the visible business name, address, phone number, and opening hours. Add BreadcrumbList where the visible hierarchy supports it. Service descriptions should remain ordinary helpful content; do not force each service into Product markup without a valid reason.

Ecommerce store

Generate Product and Offer data from the catalog and checkout systems. Handle sale prices, variants, stock, shipping, returns, and currency consistently. Decide whether variants are individual products or part of a product group based on the current guidance and storefront architecture. Test out-of-stock, preorder, and discontinued states so stale availability does not remain in search.

Publisher or blog

Generate Article or BlogPosting data from editorial fields. Use author profile URLs, accurate dates, and representative images. Mark paywalled sections according to the current paywall guidance when applicable. Connect articles to a consistent publisher Organization, but do not manufacture credentials or claim an author reviewed content when the workflow did not occur.

Events organization

Create one useful page per event with a real start date, location or online attendance method, status, organizer, and ticket information. Update postponed, rescheduled, canceled, or online-only events promptly. Do not leave old events marked as upcoming, and do not use Event markup for coupons, store hours, or vague promotional periods.

Entity Modeling Without Overengineering

A structured data graph can describe several related entities on one page. For example, an Article can reference its author and publisher, while BreadcrumbList describes navigation. The entities can be nested or connected with @id values. The model should be understandable to the team that maintains it.

Start with the main entity and add related items only when they clarify the page. Use a stable Organization identifier such as the canonical homepage plus a fragment. Give each author a stable profile URL. Reuse identifiers consistently, and avoid inventing identifiers that change on every page render.

Do not combine unrelated pages into one giant sitewide graph merely for completeness. Page-level markup should describe that page, while sitewide identity markup can come from a shared template. Confirm that shared data, especially logos and contact details, stays accurate across all templates.

Handling Variants, Pagination, and Duplicate URLs

Ecommerce filters, print views, tracking parameters, translated pages, and pagination can produce multiple URLs. Structured data should agree with canonical and indexing decisions. True duplicate variants should not present conflicting prices, ratings, or identities. Translated pages can carry equivalent structured data in the page’s language when the visible content is translated.

On paginated lists, mark the entities actually visible on each page if list markup is appropriate. Do not repeat an entire catalog graph on every pagination URL. For canonical product variants, follow the current product-variant guidance and ensure the visible selection, URL, and structured data remain synchronized.

Release QA for Developers

  • View the server response and rendered DOM to confirm the intended JSON-LD is present.
  • Check that template escaping produces valid JSON for quotes, line breaks, and non-Latin text.
  • Confirm date and time values include the intended time zone.
  • Test missing optional fields without generating empty strings or invalid objects.
  • Verify canonical, Open Graph, visible content, and structured data use the same preferred URL and entity values.
  • Test logged-out, mobile, consent, and cache states.
  • Ensure staging placeholders and test domains cannot reach production markup.
  • Run automated checks on representative fixtures during deployment.

Keep a small library of valid and intentionally invalid examples. A regression test can confirm that a product without a price does not emit an incomplete Offer, an article without an image follows the designed fallback, and a canceled event carries the correct status.

Monitoring and Incident Response

When valid items suddenly fall or errors rise, review the timing against releases, plugin updates, data-feed incidents, canonical changes, and crawling problems. Inspect a few affected URLs from each template. Compare source data, visible content, rendered JSON-LD, validation results, and Search Console.

  1. Identify whether the issue affects one URL, one template, or the entire site.
  2. Confirm that source data is correct before changing the markup.
  3. Reproduce the issue on a representative live page.
  4. Fix the shared component and test edge cases.
  5. Deploy with a rollback plan.
  6. Validate live URLs and monitor recovery over time.

Do not respond to a reporting delay by rewriting valid markup repeatedly. Search Console processing takes time, and rich-result visibility can change even when code remains valid. Change the implementation only when evidence identifies a real defect or the current documentation requires it.

Final Takeaway

Good schema markup is accurate data engineering applied to search. Choose the type that reflects the page, map every property to a reliable source, prefer maintainable JSON-LD when practical, validate both code and live URLs, and monitor the result after deployment. The objective is not to add the most markup. It is to give search systems a precise, trustworthy description of content that already serves users well.

Drive Results Together

Ready to grow your business online? Get a free consultation from our experts.

Get A Free Quote