# Return and shipping terms machine-readable

> Return and shipping terms machine-readable: An agent must verify return terms before making a purchase decision. The fix: add return and shipping schema.

- Source: /checks/returns
- Site: AgenticWebScore
- Language: English

---
An agent must verify return terms before making a purchase decision.

| 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:

```bash
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.

```json
{
  "@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" }
    }
  }
}
```

> Wrap this in <script type="application/ld+json"> on the product page or on /returns; a returns page written as plain prose scores only the 0.65 partial.

## 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 | — |
