Policy
HIGHMerchantReturnPolicy 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- Settings → Markets → policies: ensure each market has a Returns policy configured (Shopify Markets auto-emits the structured data on themes that support it).
- If your theme is on Online Store 2.0 with `product` JSON-LD enabled, the MerchantReturnPolicy block is emitted automatically once Markets policies exist.
- On custom or older themes, inject MerchantReturnPolicy in `sections/product.liquid` (or your product template) referencing `{{ shop.policies.refund_policy }}`.
BigCommerce
Developer- Store Settings → Returns: publish a returns policy with explicit country scope.
- Edit your theme's product template (`templates/components/products/product-view.html`) to emit `hasMerchantReturnPolicy` in the Product JSON-LD block.
WooCommerce
Developer- Install/update Yoast SEO or All in One SEO; both can emit MerchantReturnPolicy on WooCommerce products with the correct add-on.
- Alternatively add a custom snippet hooking `woocommerce_structured_data_product` in your theme's functions.php to inject `hasMerchantReturnPolicy`.
Custom / headless
Developer- Inject MerchantReturnPolicy on Product or Offer in your Product JSON-LD block.
- 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.
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.