Cookies & analytics

    We use cookies for analytics and to serve ads. Accept to enable Google Analytics and AdSense. You can decline to stay opt-out.

    SwiftSchema Logo

    SwiftSchema

    Intuitive Schema Generation at Your Fingertips

    AboutLearnContact
      Stack

      Delivery & Pickup Info Stack

      Delivery/shipping/pickup policy pages with WebPage + OfferShippingDetails + MerchantReturnPolicy, FAQs, and breadcrumbs.

      Open generatorValidate in Rich Results Test

      When to use this stack

      • Delivery and pickup policy pages
      • Shipping policy pages with rates and timelines
      • Pages where FAQs clarify cutoff times and returns

      What's included

      • Declares the policy page and its description.

      • Offer Shipping Details
        Open generator

        Describes shipping rates, destinations, and delivery windows.

      • Merchant Return Policy
        Open generator

        Defines return policy details and fees.

      • Frequently Asked Questions
        Open generator

        Answers questions about cutoff times, tracking, and returns.

      • Breadcrumb
        Open generator

        Provides navigation context to the policy page.

      Required properties (stack union)

      Ensure every applicable required property is present in your implementation. Nested props reference their parent objects (for example, `offers.priceCurrency`).

      deliveryTime.handlingTime.minValue
      description
      itemListElement[].name
      mainEntity[].@type=Question
      mainEntity[].acceptedAnswer.text
      merchantReturnDays
      name
      returnFees
      returnMethod
      returnPolicyCategory
      shippingDestination.addressCountry
      shippingRate.value
      url

      Recommended properties (stack union)

      dateModified
      deliveryTime.transitTime.maxValue
      inLanguage
      itemCondition
      itemListElement[].item
      mainEntity[].acceptedAnswer.text
      mainEntity[].author.name
      mainEntity[].name
      returnPolicySeasonalOverride
      shippingLabel
      shippingRate.currency

      Combined JSON-LD

      Paste as a single script tag. Keep product details, offer data, shipping/returns, and FAQ answers in sync with the page.

      Validate
      [
        {
          "@context": "https://schema.org",
          "@type": "WebPage",
          "@id": "https://www.example.com/shipping#page",
          "name": "Delivery & Pickup Information",
          "description": "Shipping rates, delivery times, and pickup policies.",
          "url": "https://www.example.com/shipping",
          "inLanguage": "en",
          "dateModified": "2025-06-10"
        },
        {
          "@context": "https://schema.org",
          "@type": "OfferShippingDetails",
          "@id": "https://www.example.com/shipping#standard",
          "shippingLabel": "Standard Shipping",
          "shippingRate": {
            "@type": "MonetaryAmount",
            "value": "6.99",
            "currency": "USD"
          },
          "shippingDestination": {
            "@type": "DefinedRegion",
            "addressCountry": "US"
          },
          "deliveryTime": {
            "@type": "ShippingDeliveryTime",
            "handlingTime": {
              "@type": "QuantitativeValue",
              "minValue": "1",
              "maxValue": "2",
              "unitCode": "d"
            },
            "transitTime": {
              "@type": "QuantitativeValue",
              "minValue": "3",
              "maxValue": "5",
              "unitCode": "d"
            }
          }
        },
        {
          "@context": "https://schema.org",
          "@type": "MerchantReturnPolicy",
          "@id": "https://www.example.com/shipping#returns",
          "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
          "merchantReturnDays": 30,
          "returnMethod": "https://schema.org/ReturnByMail",
          "returnFees": "https://schema.org/FreeReturn"
        },
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            {
              "@type": "Question",
              "name": "What is the order cutoff time?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Orders placed by 2 PM local time ship the same business day."
              }
            },
            {
              "@type": "Question",
              "name": "Do you offer local pickup?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. Local pickup is available at checkout for eligible items."
              }
            },
            {
              "@type": "Question",
              "name": "How do returns work?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Start a return within 30 days and use the provided prepaid label."
              }
            }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "BreadcrumbList",
          "itemListElement": [
            { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
            { "@type": "ListItem", "position": 2, "name": "Policies", "item": "https://www.example.com/policies" },
            { "@type": "ListItem", "position": 3, "name": "Delivery & Pickup", "item": "https://www.example.com/shipping" }
          ]
        }
      ]

      Implementation steps

      1. Start from your live product detail page content; ensure titles, prices, and availability match the page.
      2. Embed one JSON-LD script in the head or just before the closing body tag using the combined example as a template.
      3. Fill shipping details for each region you serve and keep them aligned with on-page shipping tables.
      4. Attach your canonical MerchantReturnPolicy URL and keep the policy text in sync with Merchant Center.
      5. Add 3–6 FAQs that address purchase blockers (shipping, returns, compatibility) and keep answers consistent with visible content.
      6. Validate in the Rich Results Test and revalidate after price/availability/policy changes.

      Common errors and fixes

      FAQs

      Can I include multiple shipping options?

      Yes. Use one OfferShippingDetails per option (standard, expedited) with distinct @id values.

      Should I include pickup details?

      Include pickup details in the page content and, if applicable, add a separate OfferShippingDetails entry for pickup.

      References