94% of Product Pages Have No Return Policy AI Can Read. Agents Won't Buy What They Can't Return.
We audited 109 Shopify catalogs: 94% expose no machine-readable return terms where AI shopping agents look. Why it's structural, and the hasMerchantReturnPolicy fix (with final-sale done right).

We audited 109 Shopify catalogs. Almost none expose return terms where AI shopping agents look for them. This is the quietest, cheapest gap in agentic-commerce readiness — and it's structural, not laziness.
Every merchant has a return policy. It lives on a policy page, written for humans, linked in the footer.
AI shopping agents don't read footers. When an agent evaluates whether it can safely complete a purchase — or an answer engine decides which store to recommend for a cautious buyer — it looks for machine-readable purchase terms on the product page: specifically hasMerchantReturnPolicy inside your Product structured data, the Schema.org field built for exactly this.
When we audited the catalogs of 109 Shopify stores in our fleet: 94% had no machine-readable return terms on their product pages. Not one product. Stores with generous 60-day policies were indistinguishable — to a machine — from stores with no returns at all.
Why this gap exists on nearly every store
This isn't merchant negligence; it's structural:
- Themes don't emit it. Standard Shopify theme Product schema covers name, price, availability, maybe reviews. Return policy fields simply aren't in the template.
- The data lives in a different room. Your return policy exists in Shopify — as a legal/policy page — but nothing connects that document to your product pages' structured data. The pipe was never built.
- Most SEO apps skip it too. Return policy markup (
hasMerchantReturnPolicy,MerchantReturnPolicy,merchantReturnDays) is fiddly and invisible in normal SEO audits, so it stays unbuilt.
The result: a fact you already publish, that machines actively want, is missing from the one place machines read.
Why it's about to matter a lot more
Two consumers of this field are growing fast:
- Cautious-buyer prompts. Real shopping prompts are full of risk language — "with free returns", "in case it doesn't fit", "easy to return". An engine grounding that answer prefers stores whose return terms it can verify. If your terms are unreadable, you're not in the consideration set for the exact buyers who convert best on generous policies.
- Agentic checkout. An agent completing a purchase on a user's behalf is making a commitment — and purchase terms are part of what it's committing its user to. Google's product-data guidance already includes merchant return policy markup; agent frameworks read the same fields. Machine-verifiable terms are becoming a precondition for being transactable, not a nice-to-have.
Your generous return policy is a conversion asset you already paid for — 60-day returns cost you real money in operations. Leaving it machine-invisible is paying for the insurance and hiding the certificate.
What "fixed" looks like
Product schema that includes, alongside price and availability:
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
Two details that separate honest implementations from box-ticking:
- Final-sale items must say so. Marking clearance/personalized items with
MerchantReturnNotPermittedis as important as marking the generous default — an agent that gets surprised by an undisclosed no-return item is a trust failure with your store's name on it. Accuracy beats generosity. - It must mirror your real policy. This markup is a claim about your actual terms. Generate it from your policy, don't hand-type aspirational numbers next to it.
How to close the gap
Manual route: add a hasMerchantReturnPolicy block to your theme's Product JSON-LD, keyed to your real policy page terms, with per-product overrides for final-sale collections. Doable for a developer; the maintenance burden is keeping it truthful when policies change.
Our route: FoundGPT reads the return policy you already wrote in Shopify and emits it as compliant hasMerchantReturnPolicy markup across your catalog — including the final-sale exceptions — as part of its structured-data pass. The pipe that was never built, built.
See what's missing from your product pages (return terms are one of the scanner's 14 checks): foundgpt.app/scan · FoundGPT for Shopify
Methodology: structured-data audit of 109 Shopify store catalogs in the FoundGPT fleet, mid-2026. "No machine-readable return terms" = no hasMerchantReturnPolicy (or equivalent MerchantReturnPolicy markup) in product-page structured data. Descriptive of our fleet; your mileage should be checked, which is what the scanner is for.
About the author
Rahul — Founder, FoundGPT
Rahul built FoundGPT and ran the audits behind this page. Across 111 Shopify stores he has run 23,000+ real AI-search checks on ChatGPT, Gemini, Google AI Mode and Perplexity, and applied ~99,000 structured-data fixes.