Machine-readable shipping information
Why it matters Filters like “free shipping” or “arrives tomorrow” read this field; if it’s empty the store doesn’t appear in them.
- Category
- Policies and trust
- Weight
- 4 of 100 points
- Critical blocker
- No. If it fails, it only costs its own weight.
- Applies to
- Online stores
- Effort
- 2-4 hours · developer
- Score model
- v2.4
How we measure it
We look for machine-readable shipping details (OfferShippingDetails or ShippingService) in the offer or at Organization level and count four fields: shipping cost (shippingRate), delivery region (shippingDestination), handling time (handlingTime) and transit time (transitTime); the times may sit under deliveryTime or shippingConditions. All four pass; a definition with missing fields is a partial pass (one missing 0.75, two 0.6, more 0.5 points); no definition fails.
What the result page says
These are the sentences in the test result; “…” is replaced by what we found on your site.
- PassedShipping cost, delivery region, handling and transit times are defined in structured data (on the offer or the organization).
- PartialShipping information is in structured data but incomplete: …. An agent can’t work out the total cost or the delivery date.
- FailedShipping time and cost aren’t in structured data, so agents can’t compare your delivery terms.
How to fix it
Target: Shipping rate, handling and transit times are defined with OfferShippingDetails.
Example code
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY" }
}
}
Example values (example.com, product name, price) are placeholders; replace them with your own.
How to verify it yourself
The Rich Results Test should show shipping details. Note: Merchant Center shipping settings may take precedence on Google.
Fix it with an AI coding agent
Paste this into Claude Code, Cursor or another coding agent working on your store’s code. Review the change before you deploy it.
You are working on my online store. Specoria’s agent readiness test checks the item below. Fix it so AI shopping agents can read the store and act on it.
## 1. Machine-readable shipping information (shipping_machine)
Target: Shipping rate, handling and transit times are defined with OfferShippingDetails.
Example fix (adapt it to this codebase and platform; example values are placeholders):
```
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY" }
}
}
```
Reference: https://specoria.com/method/checks/shipping-machine/
## Rules
- First look through the codebase and tell me which files or templates you will change, before editing anything.
- Change only what these checks need, and keep the visible page and the structured data saying the same thing.
- Never invent prices, stock, shipping or return terms, reviews or product identifiers (GTIN): take them from the store’s real data or ask me.
- Don’t block or slow down real visitors and don’t add tracking.
- After deploying, run the free test again at https://specoria.com/ to verify the fix.
Specifications and guidance
The check is based on these open sources; links go to the publisher’s own pages.
Where it sits in the 196-criteria framework
The result of this check counts as evidence for these items of the readiness framework:
2.4OfferShippingDetails is machine-readable