We use cookies for analytics and to serve ads. Accept to enable Google Analytics and AdSense. You can decline to stay opt-out.
Subscription box pages with Product, OfferShippingDetails, MerchantReturnPolicy, FAQs, and breadcrumb navigation.
Identifies the subscription box product with offer details.
Defines delivery regions and cadence for the subscription shipping.
Clarifies return/cancellation policy for the subscription box.
Answers billing, skipping, and cancellation questions.
Provides navigation context for the subscription box 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": "Product",
"@id": "https://www.example.com/subscriptions/snack-box#product",
"name": "Global Snack Box — Monthly Subscription",
"description": "A curated box of 12 international snacks delivered monthly.",
"image": [
"https://www.example.com/images/snack-box-front.webp",
"https://www.example.com/images/snack-box-contents.webp"
],
"sku": "SNACK-BOX-MO",
"brand": { "@type": "Brand", "name": "Example Snacks" },
"category": "FoodSubscription",
"offers": {
"@type": "Offer",
"@id": "https://www.example.com/subscriptions/snack-box#offer",
"price": "29.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/subscriptions/snack-box/checkout",
"shippingDetails": [
{
"@type": "OfferShippingDetails",
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 3,
"maxValue": 7,
"unitCode": "d"
}
},
"shippingRate": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "5.00"
}
}
],
"hasMerchantReturnPolicy": "https://www.example.com/policies/subscriptions#returns"
}
},
{
"@context": "https://schema.org",
"@type": "MerchantReturnPolicy",
"@id": "https://www.example.com/policies/subscriptions#returns",
"name": "Subscription box returns",
"url": "https://www.example.com/policies/subscriptions",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn",
"applicableCountry": "US"
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Can I skip a month?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Pause or skip any month before your billing date in your account."
}
},
{
"@type": "Question",
"name": "When will I be billed?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Billing occurs on the 1st of each month for the upcoming shipment."
}
},
{
"@type": "Question",
"name": "What if an item arrives damaged?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Contact support within 7 days for a replacement item or credit."
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
{ "@type": "ListItem", "position": 2, "name": "Subscriptions", "item": "https://www.example.com/subscriptions" },
{ "@type": "ListItem", "position": 3, "name": "Snack Box", "item": "https://www.example.com/subscriptions/snack-box" }
]
}
]Yes—set returnPolicyCategory to the correct type (e.g., NoReturn) and keep it aligned with on-page policy language.
Add multiple OfferShippingDetails entries for each region shown on the page with accurate rates and transit times.