We use cookies for analytics and to serve ads. Accept to enable Google Analytics and AdSense. You can decline to stay opt-out.
Seasonal promo pages with CollectionPage + Offer context, FAQs, and breadcrumb navigation.
Represents a seasonal landing page aggregating offers.
Highlights seasonal deals and their availability.
Answers questions about timing, exclusions, and delivery.
Provides navigation context to the seasonal page.
Ensure every applicable required property is present in your implementation. Nested props reference their parent objects (for example, `offers.priceCurrency`).
Paste as a single script tag. Keep product details, offer data, shipping/returns, and FAQ answers in sync with the page.
[
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"@id": "https://www.example.com/seasonal/summer#page",
"name": "Summer Sale",
"description": "Limited-time summer offers across travel, apparel, and gear.",
"url": "https://www.example.com/seasonal/summer",
"inLanguage": "en",
"hasPart": [
{ "@id": "https://www.example.com/seasonal/summer#offer-1" },
{ "@id": "https://www.example.com/seasonal/summer#offer-2" }
]
},
{
"@context": "https://schema.org",
"@type": "Offer",
"@id": "https://www.example.com/seasonal/summer#offer-1",
"name": "20% Off Summer Apparel",
"price": "0.80",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/seasonal/summer#apparel",
"category": "SeasonalSale",
"description": "Save 20% on select summer styles."
},
{
"@context": "https://schema.org",
"@type": "Offer",
"@id": "https://www.example.com/seasonal/summer#offer-2",
"name": "Free Shipping Over $50",
"price": "0.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/seasonal/summer#shipping",
"category": "ShippingOffer",
"description": "Free standard shipping on orders over $50."
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "When does the sale end?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The summer sale ends August 31 at 11:59 PM PT."
}
},
{
"@type": "Question",
"name": "Are there exclusions?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Exclusions are listed on the offer details page and in the terms section."
}
},
{
"@type": "Question",
"name": "Can I combine offers?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Offers cannot be combined unless explicitly stated."
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
{ "@type": "ListItem", "position": 2, "name": "Seasonal", "item": "https://www.example.com/seasonal" },
{ "@type": "ListItem", "position": 3, "name": "Summer Sale", "item": "https://www.example.com/seasonal/summer" }
]
}
]Yes. Use a separate Offer for each category or promotion on the page.
Yes. Use it for time-bound offers to reflect promotion end dates.