Schema markup is structured data (usually JSON-LD) that states facts about your organization, products, articles and FAQs in a form machines can read without guessing. It does not guarantee rankings or AI citations, but it removes ambiguity about who you are and what your pages contain. Start with Organization, WebSite, Service or Product, Article and BreadcrumbList, keep every value true to what the page shows, and test it.
What schema does, and what it doesn't
Schema markup uses the shared vocabulary at schema.org to describe the things on a page: an organization, a product, an article, a person, a question and its answer. Search engines read it to understand pages more precisely, and some types make a page eligible for rich results, such as product details or breadcrumbs in search listings.
Two honest caveats:
- Markup is not a ranking shortcut. It helps machines understand content that is already good; it does not make weak content rank.
- Rich results change. Google has narrowed some features over the years. For example, FAQ rich results were limited to a small set of well-known, authoritative sites in 2023, and in May 2026 Google stopped showing them altogether; HowTo rich results were retired earlier. The markup can still help machines understand a page even when no special result is shown.
For AI search, the value is clarity. When your brand's name, description, logo, official profiles and offerings are stated explicitly and consistently, systems that build answers from the web have less room to confuse you with someone else.
The types that matter most
| Type | Use it on | What it tells machines |
|---|---|---|
| Organization (or a subtype such as ProfessionalService or LocalBusiness) | Home page or About page | Who you are, your logo, contact details and official profiles |
| WebSite | Home page | Your site's name and address |
| Service or Product with Offer | Service and product pages | What you sell, and when relevant its price and availability |
| Article with a Person author | Guides, blog posts, research | What the page is about, who wrote it and when |
| FAQPage | Pages with a visible FAQ | Questions and their answers |
| BreadcrumbList | Every page below the home page | Where the page sits in your site |
| Review and AggregateRating | Only where you show genuine reviews | What customers say, collected by you or a trusted platform |
Example: Organization
Put this in the <head> of your home page and edit the values. The @id gives your organization a stable identifier that other markup on your site can refer to, and sameAs lists your official profiles.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Example Co",
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"description": "Example Co makes scheduling software for small clinics.",
"email": "hello@example.com",
"sameAs": [
"https://www.linkedin.com/company/example-co",
"https://x.com/exampleco"
]
}
</script>
Example: Article with an author
Use this on guides and posts. A named author with a profile page is a strong signal of who stands behind the content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to choose scheduling software for a small clinic",
"datePublished": "2026-09-01",
"dateModified": "2026-09-20",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://www.example.com/about/jane-doe"
},
"publisher": { "@id": "https://www.example.com/#organization" }
}
</script>
Example: FAQPage
Only mark up questions and answers that are visible on the page, word for word.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Does Example Co work for multi-location clinics?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. One account can manage up to 20 locations, each with its own calendar."
}
}]
}
</script>
How to add schema without mistakes
- Use JSON-LD. It sits in a script tag, separate from your visible HTML, which makes it easy to maintain. Google recommends it.
- Match the page. Every value must be true and visible to visitors. Markup that describes things the page does not show can lead to manual actions in Google.
- Use one identity. Give your organization one
@idand refer to it everywhere, rather than describing it slightly differently on each page. - Keep it current. When prices, addresses or products change, update the markup at the same time as the page. Generate it from the same data if you can.
- Mark up real reviews only. Self-written or incentivised reviews in markup break Google's guidelines.
How to test it
- Google's Rich Results Test shows which rich results a page is eligible for and flags errors.
- The Schema Markup Validator at validator.schema.org checks any schema.org markup, whether or not Google uses it.
- Search Console reports errors and valid items for supported types across your whole site after Google crawls it.
Common mistakes
- Several conflicting Organization blocks with different names or logos across the site.
- Leaving out
sameAs, so machines cannot connect your site with your official profiles. - Copying markup from a template and forgetting to replace its example values.
- Adding FAQ markup for questions that are not on the page.
- Marking up the page for one product while the page shows another.