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

      Checkout Experience Stack

      Checkout pages with delivery/returns policies, FAQs, and breadcrumb context to reduce friction.

      Open generatorValidate in Rich Results Test

      When to use this stack

      • Checkout or payment pages needing structured delivery/returns info
      • Flows where FAQs address payment, shipping, and returns
      • Pages that benefit from breadcrumb clarity in multi-step checkout

      What's included

      • Checkout Page
        Open generator

        Identifies the page as a checkout step.

      • Offer Shipping Details
        Open generator

        Clarifies delivery regions, handling/transit times, and rates.

      • Merchant Return Policy
        Open generator

        Defines returns window, method, and fees.

      • Frequently Asked Questions
        Open generator

        Answers payment, shipping, returns, and security questions.

      • Breadcrumb
        Open generator

        Provides navigation/step context.

      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.transitTime
      itemListElement[].name
      mainEntity[].@type=Question
      mainEntity[].acceptedAnswer.text
      name
      returnFees
      returnMethod
      returnPolicyCategory
      shippingDestination.addressCountry
      shippingRate.currency
      url

      Recommended properties (stack union)

      applicableCountry
      deliveryTime.businessDays
      deliveryTime.handlingTime
      description
      inStoreReturnsOffered
      itemListElement[].item
      mainEntity[].acceptedAnswer.text
      mainEntity[].author.name
      mainEntity[].name
      merchantReturnDays
      restockingFee
      shippingDestination.addressRegion
      shippingRate.value
      url

      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": "CheckoutPage",
          "@id": "https://www.example.com/checkout#page",
          "name": "Checkout — Payment",
          "url": "https://www.example.com/checkout"
        },
        {
          "@context": "https://schema.org",
          "@type": "OfferShippingDetails",
          "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" },
          "deliveryTime": {
            "@type": "ShippingDeliveryTime",
            "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "d" },
            "transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "d" }
          },
          "shippingRate": { "@type": "MonetaryAmount", "value": "0.00", "currency": "USD" }
        },
        {
          "@context": "https://schema.org",
          "@type": "MerchantReturnPolicy",
          "@id": "https://www.example.com/policies/returns#policy",
          "name": "Standard returns",
          "url": "https://www.example.com/policies/returns",
          "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
          "merchantReturnDays": 30,
          "returnMethod": "https://schema.org/ReturnByMail",
          "returnFees": "https://schema.org/FreeReturn",
          "applicableCountry": "US"
        },
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            { "@type": "Question", "name": "Which payment methods are accepted?", "acceptedAnswer": { "@type": "Answer", "text": "We accept major credit cards, PayPal, and ShopPay." } },
            { "@type": "Question", "name": "How long does shipping take?", "acceptedAnswer": { "@type": "Answer", "text": "Standard shipping arrives in 3-5 business days; expedited options at checkout." } },
            { "@type": "Question", "name": "What is the return policy?", "acceptedAnswer": { "@type": "Answer", "text": "30-day free returns on unused items. Start a return from your account." } }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "BreadcrumbList",
          "itemListElement": [
            { "@type": "ListItem", "position": 1, "name": "Cart", "item": "https://www.example.com/cart" },
            { "@type": "ListItem", "position": 2, "name": "Checkout", "item": "https://www.example.com/checkout" }
          ]
        }
      ]

      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

      Should I include product-level data?

      Optional. Keep checkout JSON-LD focused on the flow; product data belongs on product pages.

      How do I localize shipping/returns?

      Add multiple OfferShippingDetails per region and set MerchantReturnPolicy applicableCountry accordingly.

      References