How can standard shipping markup express order-value thresholds?

The Citead team, updated

In short. Use orderValue minValue and maxValue ranges with a matching shippingRate in each ShippingConditions object.

Definition: An order-value band is a ShippingConditions object whose orderValue describes the minimum and maximum order amount for a shipping rule. Its shippingRate supplies the cost that applies to that range.

Key facts

  • Google documents a standard ShippingService under Organization with the hasShippingService property. Google Search Central's ShippingService documentation places shippingConditions inside that service.
  • A service can contain multiple shippingConditions. When more than one condition applies, Google says it uses the lowest shipping cost and, for equal costs, the fastest shipping speed. The same documentation states this selection rule.
  • orderValue uses MonetaryAmount to represent an order-value range. Google requires currency and documents minValue and maxValue as the range boundaries.
  • shippingRate can use MonetaryAmount for a fixed or maximum cost. Google also documents ShippingRateSettings for a rate based on order value or weight.

How does an order-value band work?

Google defines orderValue as the range of the order cost for a ShippingConditions object. At least one of minValue and maxValue must be supplied. If minValue is omitted, it defaults to 0. If maxValue is omitted, it defaults to infinity. The currency value is the order-value currency code in ISO 4217 format.

Each band is paired with its own shippingRate. The example below follows Google's documented US and Canada pattern: a USD 3.49 charge applies through an order value of USD 29.99, while a second condition starts at USD 30 and has a zero USD shipping rate.

"shippingConditions": [
  {
    "@type": "ShippingConditions",
    "orderValue": {
      "@type": "MonetaryAmount",
      "minValue": 0,
      "maxValue": 29.99,
      "currency": "USD"
    },
    "shippingRate": {
      "@type": "MonetaryAmount",
      "value": 3.49,
      "currency": "USD"
    }
  },
  {
    "@type": "ShippingConditions",
    "orderValue": {
      "@type": "MonetaryAmount",
      "minValue": 30,
      "currency": "USD"
    },
    "shippingRate": {
      "@type": "MonetaryAmount",
      "value": 0,
      "currency": "USD"
    }
  }
]

Schema.org describes ShippingConditions as constraints that can apply to only a subset of products and says that all specified conditions must be met. Its orderValue property is defined as the minimum and maximum order value for which the conditions are valid.

Which shipping rate belongs to each range?

For a fixed charge, use shippingRate with a MonetaryAmount. Google says that the shipping-rate form requires currency together with either value or maxValue. value represents a fixed shipping cost, and the documentation specifies 0 for free shipping. maxValue represents the maximum shipping cost for that condition and cannot be supplied together with value.

Google also accepts ShippingRateSettings as the type of shippingRate. The documented use is a rate calculated as a percentage of the order value or the weight of the goods. Schema.org describes shippingRate as the cost of shipping to the specified destination and lists MonetaryAmount and ShippingRateSettings as its expected types.

What happens when conditions overlap?

A ShippingService may have several shippingConditions, including conditions that use different combinations of order value, weight, item count, destination, or dimensions. Google says it chooses the lowest shipping cost for the product in the given situation and displays that rate with its associated shipping speed. When costs are equal, it uses the shipping information with the fastest shipping speed.

Google's example also shows that an order-value band can describe unavailable shipping: its Mexico condition covers orders below USD 50 and sets doesNotShip to true, while the condition from USD 50 uses a percentage-based ShippingRateSettings value.

How can you check the markup?

Google recommends validating the code with the Rich Results Test, then using the URL Inspection tool on deployed pages to test how Google sees them. The same documentation recommends placing the standard shipping policy on one page that describes the business policy and nesting ShippingService under Organization.

FAQ

Can an order-value band have only one boundary?

Yes. Google documents that minValue defaults to 0 when omitted and maxValue defaults to infinity when omitted. At least one of the two properties must be provided.

Can a shipping band represent free shipping?

Yes. For a fixed shipping rate, Google documents value as the fixed cost and says to use 0 for free shipping.

What if two shipping conditions match the same order?

Google uses the lowest shipping cost for the situation. If the costs are equal, it uses the shipping information with the fastest shipping speed.

Sources

  1. Google Search Central, "Merchant shipping policy (ShippingService) structured data", undated
  2. Schema.org, "ShippingConditions", undated

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark