Schema Types Reference
When to Use
Reference this guide when mapping Drupal content types and fields to Schema.org types. Schema Metatag 3.x supports 25 top-level Schema.org types via submodules. Each type has required and recommended properties that affect rich result eligibility in Google Search.
Decision
Choosing a Schema Type for Your Content
| Content type | Schema type | Rich result? | GEO value |
|---|---|---|---|
| News/blog post | Article / NewsArticle / BlogPosting | Yes | High |
| FAQ section | FAQPage | Yes | Very high |
| Product page | Product | Yes | High |
| Step-by-step guide | HowTo | Yes | High |
| Event listing | Event | Yes | Medium |
| Person/author | Person | No (enhances) | Medium |
| Company/org page | Organization | No (enhances) | High |
| Course/training | Course | Yes | Medium |
| Recipe | Recipe | Yes | Medium |
| Video | VideoObject | Yes | High |
| General page | WebPage | No | Low |
| Book | Book | Yes | Low |
| Software app | SoftwareApplication | Yes | Medium |
Article Subtype Selection
| Content | Use | Why |
|---|---|---|
| News content, timely reporting | NewsArticle | Eligible for Top Stories carousel |
| Editorial blog posts | BlogPosting | Appropriate for opinion/commentary |
| Generic articles | Article | Broadest coverage; safe default |
| Scholarly/research content | ScholarlyArticle | Academic indexing |
Pattern
All 25 Supported Types
Editorial & Content
| Type | Submodule | Key Required Properties | Rich Results |
|---|---|---|---|
| Article | schema_article | headline, image, datePublished, author | Yes |
| NewsArticle | schema_article | headline, image, datePublished, author | Yes (Top Stories) |
| BlogPosting | schema_article | headline, image, datePublished, author | Yes |
| ScholarlyArticle | schema_article | headline, author, datePublished | No |
Commerce & Products
| Type | Submodule | Key Required Properties | Rich Results |
|---|---|---|---|
| Product | schema_product | name, image, offers | Yes |
| Offer | schema_product | price, priceCurrency, availability | Nested in Product |
| AggregateRating | schema_product | ratingValue, reviewCount | Nested in Product |
| Review | schema_review | reviewRating, author | Nested in Product |
Events & Activities
| Type | Submodule | Key Required Properties | Rich Results |
|---|---|---|---|
| Event | schema_event | name, startDate, location | Yes |
| Course | schema_course | name, description, provider | Yes |
| Recipe | schema_recipe | name, image, recipeIngredient, recipeInstructions | Yes |
Information Architecture
| Type | Submodule | Key Required Properties | Rich Results |
|---|---|---|---|
| FAQPage | schema_faq_page | mainEntity (Question + acceptedAnswer) | Yes |
| HowTo | schema_how_to | name, step (HowToStep) | Yes |
| BreadcrumbList | schema_breadcrumb | itemListElement (ListItem) | Yes |
| WebPage | schema_web_page | name, url | No |
| AboutPage | schema_web_page | name, url | No |
| ContactPage | schema_web_page | name, url | No |
Entities & Organizations
| Type | Submodule | Key Required Properties | Rich Results |
|---|---|---|---|
| Organization | schema_organization | name, url, logo | No (enhances) |
| LocalBusiness | schema_organization | name, address, telephone | Yes |
| Person | schema_person | name | No (enhances) |
| JobPosting | schema_job_posting | title, hiringOrganization, jobLocation | Yes |
Media
| Type | Submodule | Key Required Properties | Rich Results |
|---|---|---|---|
| ImageObject | Nested type | url, width, height | Enhances others |
| VideoObject | schema_video_object | name, description, thumbnailUrl, uploadDate | Yes |
| AudioObject | schema_audio_object | name, description, contentUrl | No |
| Book | schema_book | name, author, isbn | Yes |
| SoftwareApplication | schema_software_application | name, operatingSystem, applicationCategory | Yes |
GEO Priority: Field-to-Property Mapping
These five types are highest value for AI citation and rich result eligibility.
Article
name / headline → node:title
datePublished → node:created:html_datetime
dateModified → node:changed:html_datetime
author > name → node:author:display-name
image > url → node:field_hero_image:entity:url:absolute
description → node:field_summary (or metatag description token)
publisher > name → site:name
FAQPage (structured as Question/Answer pairs)
mainEntity[] > @type → Question
mainEntity[] > name → paragraph:field_question (or node field)
mainEntity[] > acceptedAnswer → Answer
acceptedAnswer > text → paragraph:field_answer:value
Product
name → node:title
description → node:field_description
image > url → node:field_product_image:entity:url:absolute
offers > price → node:field_price
offers > priceCurrency → "USD" (hardcoded or config token)
offers > availability → "https://schema.org/InStock"
aggregateRating > ratingValue → node:field_rating
aggregateRating > reviewCount → node:field_review_count
HowTo
name → node:title
description → node:field_summary
totalTime → node:field_time (ISO 8601 duration: "PT30M")
step[] > @type → HowToStep
step[] > name → paragraph:field_step_title
step[] > text → paragraph:field_step_body
Organization
name → site:name
url → site:url:absolute
logo > url → site:url:absolute + /path/to/logo.png
address > streetAddress → config token or hardcoded
address > addressLocality → config token or hardcoded
address > addressRegion → config token or hardcoded
address > postalCode → config token or hardcoded
address > addressCountry → "US"
telephone → config token or hardcoded
Nested Types
Schema.org types frequently nest other types. Schema Metatag handles this with grouped property fields:
| Parent | Nested type | Purpose |
|---|---|---|
| Article | ImageObject | Article.image |
| Article | Person | Article.author |
| Article | Organization | Article.publisher |
| Product | Offer | Pricing and availability |
| Product | AggregateRating | Star ratings |
| Event | PostalAddress | Event location |
| Organization | PostalAddress | Business address |
| Organization | ImageObject | Logo |
Common Mistakes
- Wrong: Using Article for all content types (contact pages, landing pages) → Right: Match schema type to content purpose; use WebPage for general pages, AboutPage for about sections
- Wrong: Omitting required properties and expecting rich results → Right: Google has minimum required properties per type; missing
imageon Article orofferson Product disqualifies the rich result - Wrong: Setting datePublished to the node publish date without checking it was actually published then → Right: If you backdated content, datePublished should reflect actual original publication, not the Drupal created timestamp
- Wrong: Using
http://schema.orgcontext when Google recommendshttps://schema.org→ Right: Schema Metatag handles this automatically; verify in output - Wrong: Nesting Organization inside every Article manually → Right: Configure publisher Organization once in Global metatag defaults and let Article inherit it