Schema markup: a guide to implementing structured data
Structured data is a language you use to tell search engines precise information about the content of your pages. Without schema markup, Google has to work out on its own what a page is...
Structured data is a language you use to tell search engines precise information about the content of your pages. Without schema markup, Google has to work out on its own what a page is about. Whether it is an article, a product, a recipe or a local business.
With schema markup implemented correctly, you remove the ambiguity and give Google exactly the information it needs to show attractive rich results on the search page.
The rich results (rich snippets) generated by structured data include visual elements such as star ratings, prices, images, FAQs and breadcrumbs right in the Google results page. These elements greatly increase the visibility and click-through rate of your pages compared to standard results that show only the title, URL and meta description.
In this guide you will learn what schema markup is, how to implement structured data using the JSON-LD format recommended by Google, which schema types are most relevant for different kinds of websites, and how to validate your implementation to avoid the errors that prevent rich results from being shown.
Whether you run a blog, an online store or a company website for a local business, structured data is a basic element of any modern SEO strategy.
Schema markup: a guide to implementing structured data
Schema markup is a standardized vocabulary (schema.org) used by Google, Bing and other search engines to understand the content of web pages. Correct implementation improves your SEO visibility and gives you the chance to get rich results in search. Schema.org was created in 2011 through a joint effort by Google, Microsoft (Bing), Yahoo and Yandex, with the aim of standardizing how information is presented to search engines worldwide.
What schema markup is and why it matters
Schema.org defines hundreds of entity types (Article, Product, LocalBusiness, Recipe etc.) and their properties (name, description, price, rating etc.). Each entity type describes a category of real-world objects, and the properties describe the characteristics of that entity. When you implement schema markup on a page, you give the search engine a structured context that it can interpret precisely, regardless of how the text on the page is worded.
The benefits of implementing schema markup:
- Rich snippets: rich results with stars, prices, images, FAQ right in the SERP
- Higher click-through rate: results with rich snippets attract 20-30% more clicks than standard results
- Better understanding by Google: structured data removes ambiguity and helps Google classify content correctly
- Eligibility for special features: product carousels, recipe cards, knowledge panels and other special displays require schema markup
- AI compatibility: as Google AI becomes more important in search, structured data provides clear information that AI can process
- Competitive advantage: many competing websites don't implement structured data correctly, giving you a big visual advantage in the SERP
The JSON-LD format, the standard recommended by Google
Google recommends using the JSON-LD (JavaScript Object Notation for Linked Data) format to implement structured data. There are three main formats for structured data, JSON-LD, Microdata and RDFa, but JSON-LD is preferred for its ease of implementation and maintenance.
The advantages of JSON-LD over other formats:
- It is inserted in a single script block, without changing the existing HTML
- It is easier to implement and maintain
- It can be generated dynamically by JavaScript
- It does not interfere with the design or functionality of the page
- It can be placed anywhere on the page: in
<head>or in<body> - It lets you define several entities in a single script block
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Titlul articolului dvs.",
"description": "Descrierea scurtă a articolului",
"author": {
"@type": "Person",
"name": "Numele autorului",
"url": "https://domeniu.ro/autor/"
},
"publisher": {
"@type": "Organization",
"name": "Numele website-ului",
"logo": {
"@type": "ImageObject",
"url": "https://domeniu.ro/logo.webp"
}
},
"datePublished": "2026-03-01",
"dateModified": "2026-03-05",
"image": "https://domeniu.ro/imagine-articol.webp",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://domeniu.ro/articol/"
}
}
</script>Basic schema markup types
Article and BlogPosting
For blog posts and editorial content. It includes properties such as headline, author, datePublished, dateModified, image and publisher. This schema matters for websites that publish content regularly. The BlogPosting type is a subtype of Article and can be used specifically for blog posts, while Article is better suited to news articles or formal editorial content.
LocalBusiness
For local businesses with a physical address. It includes the business name, address, phone number, opening hours, service area and reviews. This schema matters for local SEO and for showing up in Google Maps. There are specialized subtypes such as Restaurant, MedicalBusiness, FinancialService or LegalService that let you specify the type of business more precisely.
Product
For product pages in online stores. It includes the product name, price, availability, brand, rating and reviews. The Product schema lets the price and star ratings show directly in Google results. The
offers property matters for communicating price and availability, and the aggregateRating property lets the star ratings show.FAQPage
For pages with frequently asked questions. Each question-answer pair is marked up separately using the Question and Answer types. Google can show the questions and answers as dropdowns right in the search results, taking up more visual space in the SERP. This schema is especially valuable for matching informational search intents.
HowTo
For step-by-step guides. Each step is marked up with a name, text and optional image. Google can show the individual steps in search results, especially on mobile. The HowTo schema is suited to tutorials, DIY recipes, technical guides or any content that explains a process in stages.
BreadcrumbList
It marks up the website's breadcrumb navigation. Google replaces the URL in search results with formatted breadcrumbs, giving users a view of the site's hierarchy. This schema improves the user experience in the SERP and communicates the site's structure to the search engine.
Event
For pages that describe events, conferences, concerts, webinars or any scheduled activity. It includes the date, location, organizer and ticket information. Google can show events in specific enhanced results, including in Google Events.
VideoObject
For pages that contain videos. It includes the video's title, description, thumbnail and duration. Google can show a thumbnail and information about the video right in search results, greatly increasing the click-through rate for video content.
Implementation in WordPress
For WordPress websites, there are several implementation methods. Choosing the right one depends on the complexity of your site and the technical resources available.
The main implementation options:
- Yoast SEO Premium: automatically generates schema markup for Article, WebSite, Organization, BreadcrumbList and FAQPage; includes a visual editor for FAQ and HowTo blocks
- Schema Pro: a dedicated plugin with support for more than 20 schema types and detailed visual configuration
- Rank Math: includes a schema markup generator with support for all the main types and an intuitive configuration interface
- Manual implementation through functions.php: add the JSON-LD code directly in the WordPress theme using WordPress hooks; it gives maximum control but requires development knowledge
- Custom Gutenberg blocks: create blocks that automatically generate schema markup when specific content is added
function add_local_business_schema() {
if ( is_front_page() ) {
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'LocalBusiness',
'name' => get_bloginfo('name'),
'url' => home_url(),
'telephone' => '+40754308781',
'address' => array(
'@type' => 'PostalAddress',
'streetAddress' => 'Piața Iuliu Maniu, Nr. 16',
'addressLocality' => 'Alba Iulia',
'postalCode' => '510094',
'addressCountry' => 'RO'
)
);
echo '<script type="application/ld+json">'
. wp_json_encode( $schema )
. '</script>';
}
}
add_action( 'wp_head', 'add_local_business_schema' );Whichever method you choose, make sure the structured data correctly reflects the visible content of the page. Google penalizes schema markup that includes information different from what is shown to users, for example, a 5-star rating in the schema but 3 stars on the page.
Validating structured data
After implementation, validate the structured data with dedicated tools. Regular validation is important because changes to the theme or plugins can affect schema markup without it being obvious at first glance.
Recommended validation tools:
- Rich Results Test (search.google.com/test/rich-results): checks whether the page is eligible for rich results and identifies errors; it gives a preview of how the rich result might look
- Schema Markup Validator (validator.schema.org): checks compliance with the schema.org standard and identifies missing or incorrect properties
- Google Search Console: the “Enhancements” section shows the state of structured data across the whole website and notifies you if errors or warnings appear
- Missing required properties: each schema type has required properties; for example, Product requires name, and Review requires reviewRating
- Incorrect date format: use the ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)
- Invalid URLs: all URLs in the schema must be accessible and return a 200 status
- Content that doesn't match: the data in the schema must match the visible content of the page
- Wrong schema type: using the Article type for a product page or vice versa hurts eligibility for rich results
Common mistakes in implementing schema markup
Avoiding common mistakes saves you time and prevents penalties from Google. The most frequent problems found in schema markup implementations:
- Schema markup on irrelevant pages: don't add Product schema to a blog page or Article schema to a product page
- Fake reviews: Google detects and penalizes fabricated reviews implemented through schema markup; use only real reviews
- Outdated data: prices, availability and other dynamic information must be updated in the schema markup every time they change
- Overlapping schemas: avoid implementing the same schema type several times on the same page through different plugins
- Ignoring Search Console errors: errors reported in Search Console must be fixed promptly to stay eligible for rich results
- Implementing schema on poor-quality content: structured data does not make up for weak content; Google also takes content quality into account when deciding whether to show rich results
The long-term implementation strategy
Implementing structured data is not a one-off action but an ongoing process. As your website evolves and Google introduces new types of rich results, schema markup must be updated and extended accordingly.
An effective implementation plan involves several steps:
- Audit the existing pages to identify the content types and the matching schemas
- Implement the schemas with the highest impact for your type of website first
- Validate each implementation before publishing
- Monitor the Enhancements section in Google Search Console for errors and warnings
- Update the schema markup whenever you change the page content
- Track the click-through rate after implementation to measure the real impact
Schema markup is a powerful tool that transforms the way your website appears in Google results. Correct implementation takes attention to detail and regular validation, but the benefits, higher click-through rates, better visibility and clear communication with search engines, fully justify the effort invested.
Source references
Dorel Tănase
Original author at GOAI. Published here in English with permission.