Search documentation

Find pages, sections, and snippets across the Clog docs.

Schema.org types

The ~50-variant schemaType catalogue for posts, the 5 pageType variants for pages, and how each maps to jsonLd.

A Clog post carries a schemaType field that selects which Schema.org variant the post is — BlogPosting, Recipe, HowTo, Event, Product, Review, and ~45 more. Pages carry a smaller pageType enum. The chosen type drives:

  • The fields the dashboard wizard shows in the Post details section (for posts).
  • The shape of the structuredData payload Clog validates and stores.
  • The structuredBlocks projection Clog derives on read (recipe card / how-to steps / etc. as the 13-block vocabulary).
  • The @type and graph of the assembled jsonLd payload on every read response.

This page is the lookup table — pick a row when you need to know the exact @type, what fields the wizard surfaces, and what the JSON-LD looks like.

For the authoring-side walkthrough (the type wizard, smart suggestions, switching types), see SEO → Schema.org variants.

Tier overview

The catalogue ships in three tiers — picking a type is a 3-step wizard (or one Skip click for the default BlogPosting).

TierCountCoverage
Tier 110The most-used variants — BlogPosting, Article, NewsArticle, HowTo, Recipe, FAQPage, Review, Product, VideoObject, ItemList.
Tier 220Specialised article subtypes, the Event family (7 sub-types), Job / Course / LocalBusiness / Podcast / Tech / Software, plus the news-article subtypes (OpinionNewsArticle, etc.) and ClaimReview.
Tier 329Long-tail variants — movie / TV / book / music / dataset / scholarly / vehicle / accommodation / travel / discussion-forum / Q&A, plus LocalBusiness subtypes (Restaurant, Hotel, Store, etc.).

Tier 1 — the most-used variants

schemaTypeWhat it's forKey structured fields
BlogPostingDefault for any post. Editorial blog content.none required beyond title / body
ArticleGeneric article — when "blog post" understates the case.none required
NewsArticleA news report. Triggers Google News eligibility (with publisher signals).none required
HowToStep-by-step instructions. Auto-populates step[] from ordered lists or heading + paragraph pairs in the body.step[], optional tool[], totalTime, supply[]
RecipeA recipe with ingredients, instructions, times, nutrition.recipeIngredient[], recipeInstructions[], prepTime, cookTime, totalTime, recipeYield, nutrition?, recipeCuisine?, suitableForDiet?, keywords?
FAQPageA page whose primary content is a Q&A list. Auto-builds mainEntity[] from any faq blocks in the body.nothing additional — the faq block is the source
ReviewA review of a specific subject (a product, a place, a book, ...).itemReviewed (subject sub-pick), reviewRating (ratingValue, bestRating?, worstRating?)
ProductA product page.brand, sku?, mpn?, gtin?, offers (price + availability), aggregateRating?
VideoObjectA page whose primary content is a video. Auto-extracts embedUrl from any video_embed blocks.embedUrl (auto), optional duration, uploadDate, thumbnailUrl
ItemListAn ordered or unordered list as the primary content.itemListElement[], itemListOrder? (Ascending/Descending/Unordered)

Tier 2 — specialised subtypes

schemaTypeFamilyKey structured fields
TechArticleArticleproficiencyLevel? (Beginner / Intermediate / Expert), dependencies?
ScholarlyArticleArticlecitation?, doi?
ReportArticlereportNumber?
OpinionNewsArticleNewsArticle subtype
AnalysisNewsArticleNewsArticle subtype
ReportageNewsArticleNewsArticle subtype
BackgroundNewsArticleNewsArticle subtype
ReviewNewsArticleNewsArticle subtype
ClaimReviewReview subtypeclaimReviewed, reviewRating
SoftwareApplicationAnnouncementapplicationCategory, operatingSystem?, softwareVersion?, offers?
EventEvent basestartDate, endDate?, location (Place or VirtualLocation), organizer?, performer?, offers?
BusinessEventEvent subtypeinherits Event fields
EducationEventEvent subtypeinherits Event fields
SportsEventEvent subtypeinherits Event fields
MusicEventEvent subtypeinherits Event fields
TheaterEventEvent subtypeinherits Event fields
FoodEventEvent subtypeinherits Event fields
SocialEventEvent subtypeinherits Event fields
JobPostingAnnouncementhiringOrganization, jobLocation, baseSalary?, employmentType?, validThrough?
CourseAnnouncementprovider, courseCode?, educationalLevel?, timeRequired?
LocalBusinessLocalBusiness baseaddress, telephone?, openingHours?, priceRange?, geo?
PodcastEpisodeAnnouncementaudioUrl, duration?, episodeNumber?, partOfSeries?

Tier 3 — long-tail variants

Creative works

schemaTypeKey structured fields
Moviedirector?, actor[]?, duration?, contentRating?
TVSeriesnumberOfSeasons?, numberOfEpisodes?
TVEpisodeepisodeNumber?, partOfSeason?
Bookisbn?, bookFormat?, numberOfPages?
AudiobookBook fields + duration?, readBy?
MusicAlbumbyArtist?, numTracks?, genre?
MusicRecordingbyArtist?, duration?, inAlbum?
MusicGroupmember[]?, genre?
Datasetlicense?, creator?, distribution?, variableMeasured?
MedicalWebPagemedical-specific metadata

Vehicles, accommodation, travel

schemaTypeKey structured fields
Vehiclebase vehicle
CarfuelType?, vehicleSeatingCapacity?, numberOfDoors?
Accommodationbase accommodation
HousefloorSize?
ApartmentfloorLevel?
SingleFamilyResidenceoccupancy?
Tripitinerary?, partOfTrip?, subTrip?
TouristAttractionaddress?, geo?, touristType?
TouristTripTrip fields + touristType?

LocalBusiness subtypes

All inherit LocalBusiness fields (address, telephone, openingHours, etc.) plus a few specialised ones:

schemaTypeSpecialised fields
RestaurantservesCuisine?, menu?
HotelstarRating?, amenityFeature?
Store
AutoDealerbrand[]?
MedicalBusinessmedicalSpecialty[]?
ProfessionalServiceareaServed?

Discussion & QA

schemaTypeKey structured fields
DiscussionForumPostinginteractionStatistic?
QAPagemainEntity (Question + acceptedAnswer)

How a type maps to jsonLd

On every content read response, Clog assembles a Schema.org @graph rooted at the entity's type, with the workspace's publisher Organization (or Person) and a BreadcrumbList (when enabled) as sibling nodes. The shape is:

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "<schemaType>", ...entity-typed-data },
    { "@type": "Organization", ...publisher },
    { "@type": "BreadcrumbList", ...trail }
  ]
}

Drop into a <script type="application/ld+json"> tag verbatim. See API → SEO and JSON-LD for the rendering recipe.

The graph's first node is the entity itself, populated from the merge { ...post.structuredData, ...post.seo.schemaData } (per-field override semantics — see SEO → Type-specific SEO overrides). Embedded nodes (Person for the author, MediaObject for images, Place for an Event location) are inlined when relevant.

Page-type variants

Pages carry a smaller pageType enum picked from the page editor's right sidebar. There's no wizard — pick the closest match; WebPage is fine when nothing else fits.

pageTypeWhen to pick itjsonLd @type
WebPageThe default. Any page that doesn't fit one of the others.WebPage
AboutPageAn "About us" or "About the team" page.AboutPage
ContactPageA contact page (form, address, hours).ContactPage
LearningResourceA self-contained educational resource.LearningResource
MedicalWebPageMedical / health content with regulated metadata.MedicalWebPage

Pages don't carry structuredData — their pageType solely drives the jsonLd @type. If you need rich structured content on a page (a FAQPage with mainEntity[], for example), the workaround in v1 is to author the equivalent as a post — pages are designed to be simpler.

Category, Tag, and Author defaults

Three entity types pin their Schema.org type without a picker:

EntityjsonLd @typeEmbedded nodes
CategoryCollectionPageBreadcrumbList (from path)
TagCollectionPage
AuthorProfilePagePerson (from the author's person JSON-LD scaffold)

The Author's person scaffold (jobTitle, worksFor, knowsAbout, alumniOf, awards, honorific prefix/suffix) is edited in the Author drawer's Person section — see Authors → Person (JSON-LD scaffold).

Skipping the type wizard

Clicking Skip on the create-time wizard ships the post as the workspace's defaultPostType (usually BlogPosting). The smart-suggestion banner may later prompt to switch — see SEO → Smart suggestions.

Skipping is the right answer for most posts. The wizard's value is highest for posts that genuinely are how-tos, recipes, reviews, or events — where structured-content rendering and richer SERP previews are worth a minute of authoring effort.

On this page