# Is Shopify agent-ready? What you get by default and what to fix

> Shopify-hosted stores include several agentic-commerce files by default: a UCP profile, a shopper MCP endpoint, OAuth metadata, llms.txt and a sitemap. What Shopify does not guarantee is theme-level product data, such as complete Product JSON-LD and return and shipping structured data, or that no app or CDN blocks AI agents.

- Source: https://is-agentic-storefront.com/guides/shopify-agent-readiness
- Updated: 2026-10-15

Shopify-hosted stores include several [agentic commerce protocol](https://is-agentic-storefront.com/guides/agentic-commerce-protocols) files by default. Other checks depend on your theme and apps. This guide maps each check in the [agent-ready ecommerce](https://is-agentic-storefront.com/guides/agent-ready-ecommerce) score to what a stock Shopify store gives you, then lists the fixes in priority order.

## What does a Shopify store give AI agents by default?

On the Shopify-hosted storefront domain, Shopify serves a [Universal Commerce Protocol](https://ucp.dev/2026-08-25/specification/overview/) (UCP) profile, a shopper-facing MCP server, OAuth metadata, `/llms.txt`, `/agents.md` and a sitemap ([Shopify agents docs](https://shopify.dev/docs/agents)). Shopify's [Agentic Storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts) are "active by default for eligible stores" in ChatGPT, Google AI Mode, Gemini, Microsoft Copilot and Meta. You manage them in **Sales channels → Agentic**.

"Theme" in the tables below means the result depends on your theme. We checked against [Dawn](https://github.com/Shopify/dawn), Shopify's reference theme.

### Access

| Check                                         | Default on Shopify                                                                                    | What to do                                                                                |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| [AI agents not blocked](https://is-agentic-storefront.com/checks/agent-access) | Usually open. When agents get blocked, the block usually comes from a CDN, WAF or bot-protection app. | Allow [AI user agents](https://is-agentic-storefront.com/guides/ai-user-agents) in any proxy or app in front of the store. |
| [robots.txt](https://is-agentic-storefront.com/checks/robots-txt)              | The generated file allows crawling, disallows `/cart` and `/checkout`, and lists the sitemap.         | Leave it alone, or customize it carefully (see below).                                    |
| [No CAPTCHA](https://is-agentic-storefront.com/checks/no-captcha)              | Depends on your apps                                                                                  | Remove CAPTCHA scripts from the homepage, product pages and cart.                         |
| [No content gates](https://is-agentic-storefront.com/checks/content-gates)     | Depends on your age, geo and consent apps                                                             | Don't replace the page HTML with a gate.                                                  |

### Product data

| Check                                                    | Default on Shopify                                           | What to do                                                       |
| -------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------- |
| [Product facts in HTML](https://is-agentic-storefront.com/checks/ssr-product-facts)       | Liquid renders on the server                                 | Keep price and stock out of JS-only app blocks.                  |
| [Product JSON-LD](https://is-agentic-storefront.com/checks/product-json-ld)               | Theme. Dawn outputs it.                                      | Add `{{ product \| structured_data }}` if the raw HTML has none. |
| [Variants modeled](https://is-agentic-storefront.com/checks/product-variants)             | The filter outputs `ProductGroup` for products with variants | Use the filter rather than hand-written JSON.                    |
| [Return and shipping data](https://is-agentic-storefront.com/checks/return-shipping-data) | Missing in Dawn and in the filter                            | Add `MerchantReturnPolicy` and `OfferShippingDetails`.           |
| [OpenGraph price tags](https://is-agentic-storefront.com/checks/opengraph-product)        | Dawn outputs `og:price:amount` and `og:price:currency`       | None for Dawn-based themes.                                      |

### Discovery

| Check                                                  | Default on Shopify                                                          | What to do                                    |
| ------------------------------------------------------ | --------------------------------------------------------------------------- | --------------------------------------------- |
| [Sitemap](https://is-agentic-storefront.com/checks/sitemap)                             | Generated automatically and listed in robots.txt                            | Publish products to the Online Store channel. |
| [Canonical and status codes](https://is-agentic-storefront.com/checks/canonical-status) | Dawn outputs `canonical_url`                                                | Keep the canonical tag in `theme.liquid`.     |
| [Performance](https://is-agentic-storefront.com/checks/performance)                     | Theme and apps                                                              | Remove unused app scripts.                    |
| [Markdown alternative](https://is-agentic-storefront.com/checks/markdown-alternative)   | Not served. In our calibration scans, `Accept: text/markdown` returned 404. | Low weight. You can skip it.                  |
| [llms.txt / agents.md](https://is-agentic-storefront.com/checks/llms-txt)               | Served by Shopify                                                           | None                                          |

### Operability

| Check                                            | Default on Shopify                                                                                    | What to do                                          |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [Add-to-cart in a form](https://is-agentic-storefront.com/checks/add-to-cart)     | Dawn uses `{% form 'product' %}`, which posts to `/cart/add`                                          | Keep the form if you customize the buy box.         |
| [Variant controls](https://is-agentic-storefront.com/checks/variant-controls)     | Dawn uses radio inputs or `<select>`                                                                  | Make sure swatch apps keep native inputs.           |
| [Accessible names](https://is-agentic-storefront.com/checks/accessible-names)     | Theme                                                                                                 | Give icon-only buttons a name.                      |
| [Site search](https://is-agentic-storefront.com/checks/site-search)               | `/search?q=` is built in                                                                              | Don't disallow `/search`.                           |
| [Policy links](https://is-agentic-storefront.com/checks/policy-links)             | You create policy pages under `/policies/*`. Shopify links them in the checkout footer automatically. | Add the policy pages to the storefront footer menu. |
| [Semantic structure](https://is-agentic-storefront.com/checks/semantic-structure) | Theme                                                                                                 | One `h1`, landmarks and alt text.                   |

### Agentic commerce

| Check                                                                                                                                                | Default on Shopify                                        | What to do                |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------- |
| [UCP profile](https://is-agentic-storefront.com/checks/ucp-profile)                                                                                                                   | Served at `/.well-known/ucp`                              | None on the hosted domain |
| [Live agent endpoint](https://is-agentic-storefront.com/checks/agent-endpoint)                                                                                                        | MCP at `/api/ucp/mcp`                                     | None                      |
| [Checkout permalinks](https://is-agentic-storefront.com/checks/checkout-permalinks)                                                                                                   | UCP permalink capability, plus `/cart/{variant_id}:{qty}` | None                      |
| [OAuth discovery](https://is-agentic-storefront.com/checks/oauth-discovery)                                                                                                           | RFC 9728 and RFC 8414 metadata served                     | None                      |
| Bonus: [WebMCP](https://is-agentic-storefront.com/checks/bonus-signals#webmcp), [`rel="ucp"`](https://is-agentic-storefront.com/checks/bonus-signals#ucp-link)                                                         | Both shipped                                              | None                      |
| Bonus: [A2A](https://is-agentic-storefront.com/checks/bonus-signals#a2a-agent-card), [AI Catalog](https://is-agentic-storefront.com/checks/bonus-signals#ai-catalog), [API catalog](https://is-agentic-storefront.com/checks/bonus-signals#api-catalog) | 404                                                       | Optional                  |

The Shopify defaults in these tables come from our live probes of Shopify storefronts on 2026-10-14. In our calibration scans, Shopify stores passed the UCP, agent endpoint, OAuth and WebMCP checks together.

## How do I fix a Shopify store for AI agents, in priority order?

### 1. Make sure agents aren't blocked

Shopify's own `agents.md` asks server-side agents to sign their requests with Web Bot Auth. Blocks on Shopify stores usually come from what sits in front of the store, such as Cloudflare rules or a bot-protection app. Allow AI search and user-initiated agents there. Blocking training crawlers is your choice and isn't penalized. The [AI user agents guide](https://is-agentic-storefront.com/guides/ai-user-agents) lists the tokens.

If you customize robots.txt, add a `robots.txt.liquid` template. It replaces Shopify's generated file, so build it from the `robots` Liquid object rather than plain text, which keeps the default rules and `Sitemap:` line ([Shopify robots.txt docs](https://shopify.dev/docs/storefronts/themes/seo/robots-txt)):

```liquid
{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules %}
    {{ rule }}
  {%- endfor %}
  {%- if group.sitemap != blank %}
    {{ group.sitemap }}
  {%- endif %}
{% endfor %}
```

### 2. Confirm Product JSON-LD is in the raw HTML

Fetch a product page with `curl` and look for `application/ld+json`. In our research, one large Shopify Plus store had **no JSON-LD at all** in its raw HTML. If yours has none, add this to `sections/main-product.liquid`:

```liquid
<script type="application/ld+json">
  {{ product | structured_data }}
</script>
```

The [`structured_data` filter](https://shopify.dev/docs/api/liquid/filters/structured_data) outputs a `Product`, or a `ProductGroup` for products with variants, with brand, image, price and availability. Remove any older hand-written Product JSON so the page doesn't carry two conflicting blocks.

### 3. Add return policy and shipping structured data

This check is the most common fail across all the stores we calibrated against. First fill in **Settings → Policies** ([Shopify Help](https://help.shopify.com/en/manual/checkout-settings/refund-privacy-tos)). Then add a `MerchantReturnPolicy` and `OfferShippingDetails` block to your theme. Google accepts both at Organization level ([return policy](https://developers.google.com/search/docs/appearance/structured-data/return-policy)), so one block in `theme.liquid` covers the whole catalog. The values must match your written policy.

### 4. Link policy pages in the storefront footer

Shopify links policies in the checkout footer automatically, but agents read the storefront. Add `/policies/refund-policy`, `/policies/shipping-policy`, `/policies/terms-of-service`, `/policies/privacy-policy` and a contact page to your footer menu.

### 5. Keep the buy box agent-operable

Dawn's buy box uses a `{% form 'product', product %}` that posts to `/cart/add` ([form tag](https://shopify.dev/docs/api/liquid/tags/form)), with radio or `<select>` variant pickers. Custom themes and swatch apps sometimes replace these with clickable `div`s. Keep a native submit button and native inputs inside the form.

### 6. Headless Shopify: rebuild the defaults on your domain

Shopify's UCP, llms.txt and robots defaults apply to the Shopify-hosted Online Store domain. In our probe, a headless brand's custom domain returned 404 for `/.well-known/ucp`. A headless frontend must serve or proxy the UCP profile and llms.txt, and generate its own sitemap, robots.txt and Product JSON-LD.

## Scan your store

[Run the free scan](https://is-agentic-storefront.com/) on your store URL to see which of these checks your theme passes. Every failing check comes with a fix prompt you can copy. Terms are defined in the [glossary](https://is-agentic-storefront.com/glossary).

## Sources

- [Shopify: agents docs](https://shopify.dev/docs/agents)
- [Shopify Help: Agentic Storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts)
- [Shopify: `structured_data` Liquid filter](https://shopify.dev/docs/api/liquid/filters/structured_data)
- [Shopify: customize robots.txt](https://shopify.dev/docs/storefronts/themes/seo/robots-txt)
- [Shopify Help: find your sitemap](https://help.shopify.com/en/manual/promoting-marketing/seo/find-site-map)
- [Shopify Help: store policies](https://help.shopify.com/en/manual/checkout-settings/refund-privacy-tos)
- [Shopify Help: cart permalinks](https://help.shopify.com/en/manual/products/details/cart-permalink)
- [Shopify: `form` tag](https://shopify.dev/docs/api/liquid/tags/form)
- [Shopify: storefront search](https://shopify.dev/docs/storefronts/themes/navigation-search/search)
- [Shopify Dawn theme source](https://github.com/Shopify/dawn)
- [UCP specification](https://ucp.dev/2026-08-25/specification/overview/)
- [Google: return policy structured data](https://developers.google.com/search/docs/appearance/structured-data/return-policy)
- [Google: merchant listing structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing)

## Frequently asked questions

### Does Shopify support the Universal Commerce Protocol (UCP)?

Yes. Shopify-hosted storefronts serve a UCP profile at /.well-known/ucp with a shopper-facing MCP endpoint, cart, checkout and catalog capabilities. Headless storefronts on a custom domain do not get it automatically.

### Does Shopify add llms.txt automatically?

Yes. Shopify serves /llms.txt and /agents.md on storefronts. They describe the UCP flow and point agents at the store's commerce endpoints.

### Does my Shopify theme output Product JSON-LD?

It depends on the theme. Dawn outputs it with the structured_data Liquid filter, but some themes and heavily customized stores ship none in the raw HTML. Scan a product page to check.

### Why does my Shopify store fail the return and shipping structured data check?

The structured_data filter and Dawn do not output MerchantReturnPolicy or OfferShippingDetails. You need to add them yourself, either on the Offer or once at Organization level.

### Is a headless Shopify store agent-ready by default?

No. Shopify's defaults live on the Shopify-hosted Online Store domain. A custom headless frontend must serve or proxy /.well-known/ucp, llms.txt, robots.txt and its own sitemap.

## Run your store on a platform built for agentic commerce

Medusa is open-source, headless commerce with a full Store API agents can call and storefronts you control end to end.

### Deploy on Medusa Cloud

Open-source commerce with a full Store API, hosted and scaled for you. Your storefront, your data model.

- [Deploy on Medusa Cloud](https://cloud.medusajs.com?utm_source=agent-friendly-scorer&utm_medium=referral&utm_campaign=markdown-cta&utm_content=%2Fguides%2Fshopify-agent-readiness)
- [Medusa Cloud docs](https://docs.medusajs.com/cloud?utm_source=agent-friendly-scorer&utm_medium=referral&utm_campaign=markdown-cta&utm_content=%2Fguides%2Fshopify-agent-readiness)

### Storefront skills for coding agents

Teach Claude Code, Cursor or Codex to build storefronts with the patterns these checks look for.

```bash
npx skills add medusajs/medusa-agent-skills
```

[View the skill on GitHub](https://github.com/medusajs/medusa-agent-skills/tree/main/plugins/ecommerce-storefront/skills/storefront-best-practices)

---

Scan your store for free at https://is-agentic-storefront.com/