A

Policy

HIGH

MerchantReturnPolicy node present on Product or Offer

Each PDP's Product JSON-LD (or its Offer) carries a `hasMerchantReturnPolicy` node. Without the entry-point return-policy node, agents can't render or quote your return terms — they fall back to platform defaults or skip your store.

What this check looks for

Without `hasMerchantReturnPolicy` on Product or Offer, none of the Google return-policy rich-result family can render and the downstream category/country/days checks have nothing to evaluate. Coverage ≥ 85% across PDPs with Product JSON-LD passes; ≥ 50% partial; otherwise fail.

Which AI surfaces it affects

  • Google AI Mode (UCP)90
  • Microsoft Copilot60
  • Meta AI50
  • ChatGPT (ACP)40
  • Perplexity30

Weighted against the live specs — ACP 2026-04-17, UCP 2026-04-08.

How to fix it

Emit `hasMerchantReturnPolicy` on Product or Offer JSON-LD

Shopify

Developer
  1. Settings → Markets → policies: ensure each market has a Returns policy configured (Shopify Markets auto-emits the structured data on themes that support it).
  2. If your theme is on Online Store 2.0 with `product` JSON-LD enabled, the MerchantReturnPolicy block is emitted automatically once Markets policies exist.
  3. On custom or older themes, inject MerchantReturnPolicy in `sections/product.liquid` (or your product template) referencing `{{ shop.policies.refund_policy }}`.

Platform docs ↗

BigCommerce

Developer
  1. Store Settings → Returns: publish a returns policy with explicit country scope.
  2. Edit your theme's product template (`templates/components/products/product-view.html`) to emit `hasMerchantReturnPolicy` in the Product JSON-LD block.

Platform docs ↗

WooCommerce

Developer
  1. Install/update Yoast SEO or All in One SEO; both can emit MerchantReturnPolicy on WooCommerce products with the correct add-on.
  2. Alternatively add a custom snippet hooking `woocommerce_structured_data_product` in your theme's functions.php to inject `hasMerchantReturnPolicy`.

Platform docs ↗

Custom / headless

Developer
  1. Inject MerchantReturnPolicy on Product or Offer in your Product JSON-LD block.
  2. The minimal Option-A shape (category + applicableCountry) is enough to be detected by this check.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Example Hat",
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "US",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30
    }
  }
}
</script>

The spec it's pinned to

  • Google return-policy structured data — entry-point field

    Google's return-policy structured-data spec uses `hasMerchantReturnPolicy` on Product or Offer as the entry point for the entire return-policy rich-result rendering family.

  • schema.org/MerchantReturnPolicy

    schema.org defines MerchantReturnPolicy as the canonical return-policy node, attachable via `hasMerchantReturnPolicy` on Product or Offer.

Google — return policy structured data

Does your store pass this check?

Run the full audit — 82 checks across five AI shopping surfaces. Most tools only check whether you get mentioned; we check whether an agent can buy from you.

Related policy checks

← All 82 checks