Commerce Protocols · Recommended · Medium impact
Return and shipping terms machine-readable
An agent must verify return terms before making a purchase decision.
- Recommended
- Medium impact
- Adopted standard
| Property | Value |
|---|---|
| Check id | returns |
| Dimension | Commerce Protocols (15%) |
| Tier | Recommended — pool 20 pts |
| Weight inside tier | 1 |
| Impact | Medium |
| Maturity | Adopted — A ratified standard with real deployment. |
| Conditional | Yes — scored only on commercial sites |
| Publishing skill | return-policy-schema |
| Standards | schema.org/MerchantReturnPolicy |
What is measured
Conditional: reported n/a unless the scanner has already detected a commercial signal (Product/Offer JSON-LD, add-to-cart or buy-now copy, a cart/checkout link). It greps the JSON-LD it holds for the homepage and for the /returns, /shipping and /refund-policy paths for "@type": "MerchantReturnPolicy" or "@type": "OfferShippingDetails"; markup found on any of them passes, a returns or shipping page without that schema is a partial (0.65), and neither a page nor the schema fails.
Reproduce it yourself
You do not have to take our word for any of this. Run the same measurement against your own domain:
DOMAIN=shop.example.com
for p in / /returns /shipping; do printf '%s: ' "$p"; curl -sL "https://$DOMAIN$p" | grep -Eo '"@type"[[:space:]]*:[[:space:]]*"(MerchantReturnPolicy|OfferShippingDetails)"' | sort -u | tr '\n' ' '; echo; done
The fix
This is the artifact to ship. It is the complete change, not a description of one.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Aurora Desk Lamp",
"offers": {
"@type": "Offer",
"price": "1299.00",
"priceCurrency": "USD",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" }
}
}
}
Standards referenced
-
schema.org/MerchantReturnPolicy
Related checks
| Check | Tier | Impact | Same skill |
|---|---|---|---|
product-schema — Product/catalog schema | Essential | Critical | — |
payment-protocols — Agent payment standard support (AP2/ACP/x402/UCP) | Recommended | High | — |
agent-purchase — Agent purchase policy | Recommended | High | — |
ucp-manifest — UCP manifest (/.well-known/ucp) | Emerging | Medium | — |
agent-analytics — Agent traffic measurement | Emerging | Low | — |
inventory-freshness — Inventory and price freshness | Recommended | High | — |
seller-identity — Seller identity declared | Recommended | Medium | — |
shipping-costs — Shipping cost and delivery declared | Recommended | High | — |