Skip to content
AgentReady
By Dylan HuntNovember 13th, 2026Structured dataStructured dataMerchant listingsReturn policy

Missing hasMerchantReturnPolicy on Shopify: What the Warning Means and Whether to Fix It

The warning means Google read your product markup and found no return policy attached to the offer. Its sibling, missing shippingDetails, means the same for shipping. On a Shopify store both usually appear because the theme's default product markup does not include either field.

Neither is an error. Google lists both as recommended, not required, for merchant listings. Whether you should fix them depends on one thing most forum answers skip: whether Google already has your policies from somewhere else. Google's docs say which source it uses, in order, and markup on the product page is third.

Why almost every Shopify store sees it

Most Shopify themes print product markup with the structured_data Liquid filter. We read that output on Shopify's Dawn and Horizon demo stores on 12 November 2026. Each offer had a price, currency, availability and URL. None had hasMerchantReturnPolicy or shippingDetails. Our post on what Shopify's default product schema includes has the full list.

So a store on a stock theme gets the warning on every product, even with a clear refund policy on the site. Our benchmark of 2,704 Shopify stores, scanned in June 2026, found no shipping details in the structured data of 63.2% of them.

Which source Google uses

Google's return policy docs give an order of precedence, strongest first:

  1. Return settings sent through the Content API for Shopping.
  2. Settings in Merchant Center or Search Console.
  3. Return policy markup on the product's offer.
  4. Return policy markup on your Organization.

The shipping policy docs give the same order for shipping. And where both exist, the return policy page is blunt: "Google will only use the information provided in Search Console."

That changes the question. If your return and shipping policies are already set in Merchant Center or in Search Console's shipping and returns settings, Google uses those, and markup on the page will not override them. The warning in the markup report can still appear, because that report checks the markup, not your account settings.

When to fix it

Your policies are set in Merchant Center or Search Console. Fixing the markup is optional for Google. Check that those settings match your actual policy page, because Google uses them. If you add markup anyway, make it say the same thing.

Your policies are not set anywhere Google can read. Then markup is the way to tell Google. Fix it, and start at the store level, as Google suggests.

You sell in several countries, or some products have different terms. Google recommends a global policy on your Organization and offer-level policies only where a product differs, such as final-sale items.

In every case, the markup has to match what your visible policy says. A 30-day window in the markup and a 14-day window on the policy page is worse than no markup.

What the markup needs

Return policy on the Organization. Google needs either applicableCountry and returnPolicyCategory (plus merchantReturnDays for a fixed window), or just a merchantReturnLink to your policy page. returnFees and returnMethod are recommended. A store-level block looks like this:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Example Store",
  "url": "https://example.com",
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "applicableCountry": "US",
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 30,
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn"
  }
}

Google's docs say to put the organization-level policy on one page, such as the home page, rather than repeating it on every page.

Shipping on the offer. For the shipping enhancement, an OfferShippingDetails needs shippingRate, shippingDestination and deliveryTime. Google also supports a store-level shipping policy through hasShippingService on the Organization, which an offer can then reference by @id instead of repeating it.

Where the numbers come from. On Shopify, your return terms live in Settings > Policies, where the refund policy template draws on your return rules, and your rates and zones live in Settings > Shipping and delivery. The markup should be built from those, not typed once and forgotten. If you change your return window and the markup does not follow, you have published a wrong fact.

Three ways to add it

Write it into the theme. Add the Organization block to the layout and extend the product block with shippingDetails. You will need to keep it in step with your settings by hand. Duplicate the theme and test the copy first.

Set it in Google instead. If Google is the only reason you care, Merchant Center or Search Console settings are the strongest source and need no code. They do nothing for other software reading your pages.

Let AgentReady publish it. AgentReady builds shipping details from your Shopify shipping settings and the return policy from your Shopify policies, shows you the result, and publishes it after you approve it, on paid plans from Core up. A return window appears only once your store states one. When the settings change, the published copy follows. See business and policies for what it reads and the structured data docs for setup.

If you also want AI shopping assistants to find your terms, our post on returns and shipping data for AI shopping assistants covers the parts beyond markup. For product markup in general, start with the Shopify product schema guide.

To see whether your store's pages carry shipping and return markup today, run the free audit.

See where your store stands

See what AI shopping assistants can read on your store.

Run the free AI-Readiness Checker to see, in under a minute, how ChatGPT, Perplexity, and Google read your store today and exactly what is holding it back. Then AgentReady prepares the fixes, starting with Schema.org structured data, and publishes them after you approve. Install free. Paid plans start at $9/mo.

Comments

Every comment here comes from a verified email. Write yours, confirm from your inbox, and it's live.

Loading comments…

Leave a comment

ShareXLinkedInFacebook

Written by Dylan Hunt, Founder, AgentReady. AgentReady measures what AI says about Shopify stores and helps teams improve the answer. See plans.