Skip to content

EVAL-002Compare

Return policy machine-readable

Checks whether an AI agent can read your return window and conditions from structured data or an HTML return policy.

What we check

We look for a MerchantReturnPolicy in the JSON-LD on your product pages (standalone, or as hasMerchantReturnPolicy on the Product or an Offer), and for a return window stated in days, weeks or months on your return policy page, which must be HTML text rather than a PDF, an image or an embedded document.

Why it matters

Shoppers ask agents whether they can send something back before buying, and an agent handling a return after purchase needs the window. A PDF or "contact us to arrange a return" gives it no terms to report or act on.

How we check

We read up to 3 product pages and the return policy page (from the crawl, or fetched once if only its link was found). Weeks count as 7 days, months as 30. PASS: a MerchantReturnPolicy is in the JSON-LD, including one declaring returns are not accepted (MerchantReturnNotPermitted); or the HTML policy states a window. WARN: the JSON-LD merchantReturnDays is not among the windows the page states (we compare against all of them, so "14 days statutory, 30 days ours" matches either); or the HTML policy states no window or defers ("contact us to arrange a return"). FAIL: the policy is a PDF, an image or an embedded document, or returns 404/410; or no policy is found anywhere. SKIPPED when nothing relevant was captured, or when the policy page was blocked or refused to our crawler and there is no JSON-LD policy. We list every window found but do not decide which applies to a given product.

How to fix it

  1. Add hasMerchantReturnPolicy to your Product or Offer JSON-LD, with merchantReturnDays, returnPolicyCategory and returnFees.
  2. Publish the return policy as an HTML page stating the window in days and the conditions, not a PDF or "contact us".
  3. Keep merchantReturnDays equal to a window the page itself states.
  4. If a product cannot be returned, declare returnPolicyCategory MerchantReturnNotPermitted.
  5. Link the policy from your footer with a word such as "Returns", "Refunds" or "Rückgabe".

What good looks like

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Linen shirt",
  "offers": {
    "@type": "Offer",
    "price": "49.00",
    "priceCurrency": "EUR",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "DE",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30,
      "returnFees": "https://schema.org/FreeReturn"
    }
  }
}
</script>

Return policy page (HTML text):
You can return unworn items within 30 days of delivery. Returns are free.

Sources