Why AI Agents Silently Skip Stores With Unclear Shipping and Returns

AI searchE-commerceStructured dataShopify
by Anton S
Pastel shipping box with a shield checkmark and a circular return arrow

The offers you lose to shipping and returns never show up in your analytics. There is no bounce, no abandoned cart, no exit page. The product was eliminated from a result set somewhere upstream and nobody at your store ever knew a shopper was looking.

That is a different failure mode from the ones merchants are trained to watch for, and the fix is not "write a friendlier returns page."

Shipping destination is a hard filter, not a preference

Shopify's Global Catalog lets an agent pass ships_to with a country, region, or postal code, and filter the entire catalog on it. Every variant also carries a requires object with a shipping boolean.

There is no partial credit in a filter. If your shipping zones do not cover the destination the shopper mentioned, you are not ranked lower. You are absent. And unlike a Google Shopping disapproval, nothing lands in your inbox to tell you.

Shopify's own setup guidance for agentic storefronts is blunt about the prerequisite: you have to configure shipping zones and rates "to ensure that accurate shipping costs are calculated at checkout," and if you use weight-based rates you have to populate the weight field on every product. A missing weight on 300 SKUs is a shipping calculation that quietly fails on 300 SKUs.

Worth knowing before you plan around it: Microsoft Copilot's direct checkout on Shopify does not support local delivery, pickup in store, or pickup points as delivery methods. If those are most of your fulfillment mix, that channel is not a fit yet, and knowing that is more useful than optimizing for it.

A link to your refund policy is not a returns policy

When the catalog returns a product, the seller object includes a links array with entries like {"type": "refund_policy", "url": ...}. That is the whole of what an agent gets about your returns terms from the catalog itself.

A URL. Not a return window. Not a fee structure. Not whether you pay for return shipping.

So the agent has a pointer to a page. Whether it follows that pointer, parses what it finds, and trusts the result is entirely dependent on what is on the page. A 900-word block of legal prose with three conditional clauses and a sentence beginning "at our sole discretion" gives a machine nothing it can act on. It reads as unresolved, and unresolved loses to a competitor whose terms parse in one pass.

Agents can now ask your store directly

The other route is more direct, and most merchants do not know it exists. Every Shopify store has a Storefront MCP endpoint at https://{shop}.myshopify.com/api/mcp, and one of the tools it exposes is search_shop_policies_and_faqs, described in Shopify's docs as answering "questions about the store's policies, products, and services to build customer trust."

That tool is only as good as the text behind it. If a shopper asks an assistant "can I return these if they don't fit" and your policy page says returns are accepted "within a reasonable period subject to condition," the tool returns that sentence and the assistant has to decide what to do with it. Usually what it does is hedge, or move on to a store that said thirty days.

You are being interviewed by a machine that reads your policy page literally. Write for that reader.

Put the terms into structured data

Google has published structured markup for both of these for years. It is mostly a copying exercise: the numbers already exist in your Shopify settings, they just are not expressed anywhere a machine can read them without interpreting English.

For returns, MerchantReturnPolicy gives you two options. Either specify applicableCountry and returnPolicyCategory (plus merchantReturnDays if you use a finite window), or supply merchantReturnLink pointing at the policy page. Google also recommends returnMethod, returnFees, and refundType. It can sit under your Organization markup as the store-wide default, or under a specific Offer when one product breaks the pattern.

For shipping, shippingDetails is strongly recommended on merchant listings, with shippingRate, shippingDestination, and a deliveryTime that splits into handlingTime and transitTime. That split matters more than it looks: it is the difference between "ships in 1-2 days" and "arrives in 1-2 days," and shoppers and agents both read the second one as a promise.

None of this is a ranking trick. It is the same three facts you already have in Shopify settings, expressed in a format that does not require anyone to interpret your prose. If you are new to emitting structured data on Shopify, the store-readiness walkthrough covers where it goes.

What to actually put on the policy page

Shopify requires three published policies before you can sell through agentic storefronts: terms of service, privacy policy, and return and refund policy. Publishing them is the floor. The version that survives a machine reading has four things stated as facts in the first hundred words:

  • The return window as a number of days, from a defined start point. "30 days from delivery," not "30 days."
  • Who pays return shipping, in one clause, with no conditions attached to it.
  • What form the refund takes: original payment method, store credit, or exchange.
  • Which countries the policy applies to, if it is not all of them.

Then put the exceptions underneath. Final-sale categories, hygiene items, custom orders. Exceptions are fine. Exceptions stated before the rule are what make a policy unparseable.

The same discipline applies to delivery. Give a handling time and a transit range as separate numbers rather than one vague window, and say what happens to orders placed after your cutoff. "Orders placed after 2pm ET ship the next business day" costs you nothing and answers a question an assistant would otherwise refuse to answer.

The uncomfortable part

Most of this is not an SEO problem. It is an operations problem that has become legible to outsiders.

If your return window is genuinely "it depends," a machine will read that as risk and route around you. If you have never committed to a handling time because your fulfillment is inconsistent, structured data will just publish that inconsistency more efficiently. Agents are not evaluating your marketing. They are evaluating whether a transaction with you is likely to go smoothly, using the only evidence you have made available.

The stores that will do well here are not the ones with the most generous policies. They are the ones whose policies can be stated in a sentence and are actually true. That is a lower bar than free two-day shipping and a considerably harder one than writing a better paragraph.

If you want to see what your store currently publishes to machines before you rewrite anything, start with your structured data output.

Share this Story

Blurred blog main image. Pastel shipping box with a shield checkmark and a circular return arrow

Related Blogs

Two pastel cable plugs facing each other over a small payment terminal
ComparisonAI searchShopifyE-commerce

UCP vs ACP: The Two Protocols Fighting Over Agentic Checkout

Two open standards want to run AI checkout. One already had its consumer feature pulled after about a dozen Shopify merchants went live. Here is the state of play and what a merchant should do.

August 3, 2026 by Anton S

Read More
Pastel product cubes moving along a dotted path into a catalog grid panel
ShopifyAI searchProductsE-commerce

Shopify Catalog, Explained: How Your Products End Up Inside ChatGPT

Shopify syndicates eligible products to ChatGPT, Copilot, Gemini and the Shop app without asking you first. Here is what makes a product eligible, and what the 2x conversion claim really says.

July 28, 2026 by Anton S

Read More
Is Your Shopify Store Ready for AI Agents? A Readiness Checklist
ShopifyStructured dataAI searchBest practices

Is Your Shopify Store Ready for AI Agents? A Readiness Checklist

A practical checklist for making your Shopify catalog readable to AI agents, covering product type, attributes, structured data, crawler access and llms.txt, with why each one matters to a machine.

July 26, 2026 by Anton S

Read More