schema
defineWebPage(input?: WebPage)SchemaOrgWebPage (see how components work)stringtitle key, see defaults.WebPage, see resolves${canonicalUrl}#webpagecanonicalUrlcurrentRouteMeta.title (see: route meta resolving)Home page only
AboutPageCheckoutPageCollectionPageContactPageFAQPageItemPageMedicalWebPageProfilePageQAPageRealEstateListingSearchResultsPagepotentialAction to ReadActiondateModified to articles dateModifieddatePublished to articles datePublisheddateModified or datePublished can be resolved from Date objectsdefineWebPage({
// will resolve to ISO 8601 format
datePublished: new Date(2020, 10, 1)
})@type which isn't WebPage will convert it to an array TechArticle -> ['WebPage', 'AboutPage']defineWebPage({
// will be resolved as ['WebPage', 'AboutPage']
'@type': 'AboutPage',
})/about, /about-us -> AboutPage/search -> SearchResultsPage/checkout -> CheckoutPage/contact, /get-in-touch, /contact-us -> ContactPage/faq -> FAQPagedefineWebPage({
name: 'Page Title',
image: '/image.jpg',
})/**
* A web page.
* Every web page is implicitly assumed to be declared to be of type WebPage,
* so the various properties about that webpage, such as breadcrumb may be used.
*/
type ValidSubTypes = 'WebPage' | 'AboutPage' | 'CheckoutPage' | 'CollectionPage' | 'ContactPage' | 'FAQPage' | 'ItemPage' | 'MedicalWebPage' | 'ProfilePage' | 'QAPage' | 'RealEstateListing' | 'SearchResultsPage'
/**
* A web page.
* Every web page is implicitly assumed to be declared to be of type WebPage,
* so the various properties about that webpage, such as breadcrumb may be used.
*/
export interface WebPageSimple extends Thing {
['@type']?: Arrayable<ValidSubTypes>
/**
* The unmodified canonical URL of the page.
*/
url?: string
/**
* The title of the page.
*/
name?: string
/**
* The page's meta description content.
*/
description?: string
/**
* A reference-by-ID to the WebSite node.
*/
isPartOf?: NodeRelation<WebSite>
/**
* A reference-by-ID to the Organisation node.
* Note: Only for the home page.
*/
about?: NodeRelation<Organization>
/**
* A reference-by-ID to the author of the web page.
*/
author?: NodeRelation<Person | string>
/**
* The language code for the page; e.g., en-GB.
*/
inLanguage?: Arrayable<string>
/**
* The time at which the page was originally published, in ISO 8601 format; e.g., 2015-10-31T16:10:29+00:00.
*/
datePublished?: ResolvableDate
/**
* The time at which the page was last modified, in ISO 8601 format; e.g., 2015-10-31T16:10:29+00:00.
*/
dateModified?: ResolvableDate
/**
* A reference-by-ID to a node representing the page's featured image.
*/
primaryImageOfPage?: NodeRelation<ImageObject | string>
/**
* A reference-by-ID to a node representing the page's breadrumb structure.
*/
breadcrumb?: NodeRelation<BreadcrumbList>
/**
* An array of all videos in the page content, referenced by ID.
*/
video?: NodeRelations<VideoObject>
/**
* A SpeakableSpecification object which identifies any content elements suitable for spoken results.
*/
speakable?: unknown
/**
* Potential actions for this web page.
*
* Note it's on by default for most page types.
*/
potentialAction?: Arrayable<(ReadAction | unknown)>
}