SwiftSchema Logo

    SwiftSchema

    Intuitive Schema Generation at Your Fingertips

    AboutLearnContact

    Offer Shipping Details — Clarify Regions, Rates, and Timing

    Generate valid OfferShippingDetails JSON‑LD for product offers. Describe regions, rates, handling/transit times, and thresholds to set clear delivery expectations.

    Why many product pages underperform

    Pain points we solve

    • Shoppers can’t see accurate shipping costs by region.
    • No handling/transit breakdown, leading to missed delivery expectations.
    • Free‑shipping policies are unclear or inconsistently modeled.
    • Multiple regions and rates are mixed together in one block of JSON.

    How SwiftSchema helps

    Solution

    The generator guides you to add one OfferShippingDetails object per region/policy, with region targeting (DefinedRegion), a clear shippingRate, and deliveryTime as handling and transit ranges in days.

    It supports freeShippingThreshold and shippingLabel for merchandising, producing clean, copy‑ready JSON‑LD attached under Offer.shippingDetails.

    How it works

    How it works

    1. Select Offer (or Product > Offer) in the generator.
    2. Add shippingDestination (country, and optional region or postal ranges).
    3. Set shippingRate (value + currency) and any freeShippingThreshold.
    4. Provide deliveryTime with handling and transit ranges in days (unitCode=DAY).
    5. Copy JSON or Script and paste into the product offer. Validate in the Rich Results Test.

    What is OfferShippingDetails structured data?

    OfferShippingDetails describes shipping regions, rates, and delivery timing for an Offer. Use one object per region or policy to keep options clear and maintainable across your catalog.

    Eligibility & Status

    This type supports clarity and consistency for commerce but isn't a standalone rich result. Correct modeling helps Product/Offer eligibility and user expectations.

    Why shipping markup matters

    • Clarity at scale: Customers see accurate costs and timelines per region, reducing checkout friction.
    • Policy enforcement: Structured delivery times ensure your on-page messaging mirrors logistics data.
    • Automation: Region-specific objects let teams update shipping policies without touching every product page.
    • Merchandising: Free-shipping thresholds and labels can be surfaced consistently in feeds.

    Essential properties to include

    • shippingDestination
      (
      DefinedRegion
      ): Always set
      addressCountry
      ; add
      addressRegion
      /
      postalCodeRange
      when needed.
    • shippingRate
      (
      MonetaryAmount
      ): Provide
      value
      +
      currency
      ; set to 0 for free tiers.
    • deliveryTime
      (
      ShippingDeliveryTime
      ): Include
      handlingTime
      and
      transitTime
      QuantitativeValues with min/max and
      unitCode=DAY
      .
    • freeShippingThreshold
      (
      MonetaryAmount
      ): Order value that unlocks free shipping.
    • shippingLabel
      : Text label to identify each shipping method.

    Preparing shipping data before generating schema

    1. Audit policies: Gather current rates, zones, and SLA windows from logistics.
    2. Segment regions: Decide how granular you need (country, state, postal range).
    3. Confirm currencies: Ensure rates use valid ISO currency codes.
    4. Document thresholds: Capture free-shipping minimums or promotional rules.
    5. Plan labels: Align labels (Standard, Express) with storefront messaging.
    6. Sync with ops: Establish who updates schema when fulfillment rules change.

    Implementation workflow inside SwiftSchema

    1. Select Offer (or Product > Offer) in the generator.
    2. Add
      shippingDestination
      for the region this policy covers.
    3. Set
      shippingRate
      and optional
      freeShippingThreshold
      .
    4. Provide
      deliveryTime
      with handling/transit ranges (
      unitCode=DAY
      ).
    5. Add
      shippingLabel
      or notes for each method.
    6. Repeat per region/policy and attach each object under
      Offer.shippingDetails
      .
    7. Validate via the Rich Results Test.

    Troubleshooting & QA

    • Missing units: Always specify
      unitCode=DAY
      (or other ISO codes).
    • Mixed regions: Keep one object per region/postal range.
    • Threshold confusion: Pair
      freeShippingThreshold
      with clear on-page messaging.
    • Incorrect nesting: Place objects under
      Offer.shippingDetails
      , not directly on Product.
    • Stale data: Update schema when rates or transit windows change; scripts can compare schema to logistics tables.

    Maintenance and governance

    • Update shipping entries whenever logistics teams adjust policies.
    • Audit quarterly to ensure schema matches storefront shipping tables and merchant feeds.
    • Coordinate promotions—when running free shipping, adjust thresholds and revert afterward.
    • Keep
      lastReviewed
      metadata current and note ownership for shipping schema updates.

    Common Errors & Fixes

    • Missing units: add
      unitCode=DAY
      for handling/transit time ranges.
    • Mixed regions: provide separate objects per region or postal range.
    • Unclear free shipping: add
      freeShippingThreshold
      MonetaryAmount and reflect policy in page content.
    • Incorrect nesting: ensure the object sits under
      Offer.shippingDetails
      .

    Required properties

    • shippingDestination.addressCountry
    • shippingRate.value
    • shippingRate.currency

    Recommended properties

    • shippingDestination.addressRegion
    • shippingDestination.postalCodeRange
    • shippingRate.value
    • shippingRate.currency
    • deliveryTime.handlingTime.minValue
    • deliveryTime.handlingTime.maxValue
    • deliveryTime.handlingTime.unitCode=DAY
    • deliveryTime.transitTime.minValue
    • deliveryTime.transitTime.maxValue
    • deliveryTime.transitTime.unitCode=DAY
    • freeShippingThreshold.value
    • freeShippingThreshold.currency
    • shippingLabel
    Attach to Offer
    Validate
    {
      "@context": "https://schema.org",
      "@type": "Offer",
      "price": 9.99,
      "priceCurrency": "USD",
      "shippingDetails": {
        "@type": "OfferShippingDetails",
        "shippingDestination": {
          "@type": "DefinedRegion",
          "addressCountry": "US"
        },
        "shippingRate": {
          "@type": "MonetaryAmount",
          "value": 3.49,
          "currency": "USD"
        },
        "deliveryTime": {
          "@type": "ShippingDeliveryTime",
          "handlingTime": {
            "@type": "QuantitativeValue",
            "minValue": 1,
            "maxValue": 2,
            "unitCode": "DAY"
          },
          "transitTime": {
            "@type": "QuantitativeValue",
            "minValue": 3,
            "maxValue": 5,
            "unitCode": "DAY"
          }
        }
      }
    }

    FAQs

    Where do I put it?Show
    Attach under Offer.shippingDetails. Include one object per shipping region or policy, and duplicate for each distinct rate/threshold.
    Handling vs transit time?Show
    Handling is prep time before shipment; transit is carrier time after dispatch. Use QuantitativeValue in days for both.
    How do I represent free shipping?Show
    Use freeShippingThreshold with a MonetaryAmount (value + currency). Set shippingRate to 0 when threshold is met on page content and policies.
    Can I target specific regions or postal codes?Show
    Use DefinedRegion with addressCountry and optional addressRegion or postalCodeRange to narrow eligibility.
    Do times need units?Show
    Yes. Provide unitCode=DAY for handlingTime and transitTime ranges to avoid ambiguity.

    Generate Offer Shipping Details schema

    Fill in page details, copy JSON or Script, and validate.

      Schema Type

      🚚 Offer Shipping Details Schema Generator

      Describe shipping destinations, rates, handling and transit times, and free shipping thresholds for offers.

      Generated Schema

      Validate your schema here.