Schema markup: which structured data to use on each page type
Visual guide to schema markup: LocalBusiness, Product, Service, BlogPosting, FAQPage and Organization. Learn which structured data to use on each page type to rank on Google and get cited by AI.
Published on · Updated on · 11 min read

Okay, let’s talk straight. You know structured data is important.
The problem isn’t that there are too many schemas. The problem is that nobody has told you which ones to use on each page.
And on top of that, things have gotten more complicated. Because you don’t only have to think about Google. Artificial intelligences (ChatGPT Search, Perplexity, Gemini) also read your code and use that data to decide whether to cite you or not.
If you’re starting from scratch with technical SEO, begin with what SEO is and how it works and the complete On-Page SEO guide.
What is structured data and what is it for?
Structured data is like the labels in a library. It’s code you add to your site (usually in JSON-LD format) to tell Google and artificial intelligences what each thing means.
What exactly is it for?
- So Google understands you better: you help the algorithms interpret your page’s content and display it in the right search results.
- To get Rich Snippets: those enriched results with stars, prices, images or event information that stand out in the SERP and attract many more clicks. Here’s how to optimize the meta title and meta description to take advantage of them.
- To speak AI’s language: platforms like ChatGPT Search, Perplexity or Gemini use this data to find quick answers and cite reliable sources. If you don’t make it easy, they’ll probably ignore you. Here I explain how to optimize your site for AI (GEO).
Schema for LocalBusiness (homepage or contact page)
The LocalBusiness schema is the backbone for businesses with a physical location or service area. Without it, Google and AI have to guess your basic data.
| Field type | Property | Description |
|---|---|---|
| Required | @type | The specific subtype of your business (e.g. Plumber, Restaurant, Dentist) |
name | Exact business name, must match your Google Business Profile | |
address | Full postal address with PostalAddress (street, city, region, postal code, country) | |
telephone | Main phone number that matches your GBP | |
url | The URL of your website | |
image | Logo or main photo of the business | |
| Optional | priceRange | Price range (e.g. $, $$, $$$) |
openingHoursSpecification | Opening hours by day of the week | |
geo | Latitude and longitude coordinates (GeoCoordinates) | |
areaServed | Coverage area for businesses without a physical location (SABs) | |
sameAs | Links to social media and directory profiles | |
aggregateRating | Average rating and number of reviews (if applicable) | |
hasMap | Link to your Google Maps listing |
Practical example: if you’re a plumber in Madrid, your
homepage should have LocalBusiness with @type: "Plumber".
Include name, address, phone, opening hours and service area.
Add sameAs with links to your Google Business Profile
and social media to connect entities.
If you work in local SEO, complement this schema with a good strategy in free local SEO directories and with reviews on your Google Business Profile.
Schema for Product (product pages in ecommerce)
On a specific product page, the goal is to sell. The schema should give all the information so that AI and Google show rich snippets with price, availability and ratings.
| Field type | Property | Description |
|---|---|---|
| Required | name | Product name, must match the visible title |
image | URL of at least one product image | |
description | Clear and precise product description | |
offers | Object with price, currency and availability | |
brand | Product brand (as a Brand entity) | |
| Optional | aggregateRating | Average rating and total number of reviews. Enables stars in the SERP |
review | Individual reviews with author and rating | |
sku | Product identification code | |
gtin | Barcode or global identification | |
mpn | Manufacturer part number | |
shippingDetails | Shipping cost, delivery time and service region | |
hasMerchantReturnPolicy | Return window and conditions |
Practical example: a TV page should have
Product with name, description, image,
sku and brand. Inside, an Offer with
price, priceCurrency and availability.
If there are reviews, include aggregateRating with
ratingValue and reviewCount.
Schema for Service (service pages)
If you offer services instead of physical products, you need Service. This applies to local businesses, consultancies, agencies, etc. It helps AI understand what service you offer and in what area.
| Field type | Property | Description |
|---|---|---|
| Required | name | Name of the service you offer |
| Optional | serviceType | Type of service (e.g. «boiler repair», «SEO consulting») |
provider | Who offers the service (link to your LocalBusiness or Organization via @id) | |
areaServed | Geographic area where the service is provided | |
offers | Price information (Offer object) |
Practical example: each service page (e.g.
«boiler repair») should have Service linked to the LocalBusiness of
your homepage via provider and @id. AI uses
these connections to know that you’re the one offering that service in your
area. If you work on local positioning, reinforce this with
local positioning on Google Maps.
Schema for BlogPosting (articles and blog posts)
Your content should demonstrate authority and experience. The schema helps AI know who wrote what and when. Google requires certain fields to show article rich snippets.
| Field type | Property | Description |
|---|---|---|
| Required | @type | BlogPosting or Article (use the most specific one) |
headline | Article title (maximum 110 characters) | |
image | URL of at least one image. Google requires it for rich snippets | |
author | Person or entity who wrote the article | |
datePublished | Publication date in ISO 8601 format (YYYY-MM-DD) | |
publisher | Organization that publishes the content (with its logo) | |
| Optional | dateModified | Last modified date |
articleBody | The full body of the article | |
articleSection | Article section or category (e.g. «SEO», «Marketing») | |
wordCount | Number of words | |
about | The main topic of the content | |
speakable | Indicates sections suitable for text-to-speech |
Practical example: if you publish a guide on «how
to fix a water leak», add BlogPosting with the author, publication
date and featured image. Link the author to an
«About» page with experience and credentials. Here’s
how to apply E-E-A-T: experience, authority and trust on Google
correctly.
Schema for FAQPage (frequently asked questions pages)
If you have a FAQs section, the schema can make your answers appear directly in search results and in AI answers. It’s a great hook for traffic.
| Field type | Property | Description |
|---|---|---|
| Required | @type | FAQPage |
mainEntity | Array of Question objects | |
Question.name | The question text | |
Question.acceptedAnswer | Answer object with the answer | |
Answer.text | The answer text |
Golden rule: don’t mark questions that the user can’t see on the page. It’s misleading and goes against Google’s guidelines.
Schema for Organization (institutional pages)
For «About» or institutional pages, Organization helps define who the entity behind the site is. Useful for brands, NGOs or projects without a physical location.
| Field type | Property | Description |
|---|---|---|
| Required | name | Organization name |
url | URL of the organization’s website | |
| Optional | logo | Organization logo |
sameAs | Links to social media and profiles | |
description | Organization description | |
legalName | Official legal name |
How to implement all this without losing your mind
You have three paths to add structured data to your site. Choose the one that best fits your technical level.
WordPress plugins
Tools like Rank Math, Yoast SEO or Schema Pro can generate basic schema without touching code. They’re perfect to start with, but they tend to be limited in customization.
Manual JSON-LD
It’s the most professional and clean route. You write the JSON-LD code in
your page’s <head> and have total control
over each property and @id connection.
Plugins specialized in Local SEO
There are plugins designed specifically to generate LocalBusiness and Service schema. They’re usually lighter and more accurate than generalist SEO plugins.
Free SEO tools
You can rely on tools like checking that your schema works or on this very article to replicate the examples.
Important: no matter what, always validate your code with the official Google tools (Rich Results Test) and Schema.org tools (Schema Markup Validator). A small syntax error can render the entire block useless.
And remember: if you don’t know what schema you already have implemented, start with a complete SEO audit in 7 steps to review your site’s technical status. If you also want AI to cite you, complement it with a properly configured llms.txt file step by step and a strategy to show up in ChatGPT with your business.
The time to act is now
Structured data is the language Google and AI speak. If you don’t use it, you’re letting them guess who you are and what you offer.
You don’t need to implement all the schemas in the world at once. Start with the basics on your main page and your main services. As you grow, add more layers. But don’t wait any longer.
Speak their language. And they’ll listen.
If you’d rather have a professional implement the schema for you, I analyze your site, define which schema types each page needs and implement them in properly validated JSON-LD. Tell me about your project and I’ll reply in less than 48 hours.
Want to implement schema correctly?
I implement the right structured data for each page type, validated and ready for Google and AI.