Technical SEO

Shopify and WooCommerce SEO for Google and AI search: what each platform controls

What Shopify and WordPress with WooCommerce generate for you (robots.txt, sitemaps, canonicals, structured data, robots meta), what you can change, and a checklist for Google and AI crawlers, from the platforms’ own documentation.

The short answer. Both platforms generate the basics for you: a robots.txt file, an XML sitemap, canonical tags and product structured data. Shopify does more of it automatically and lets you change less; WordPress with WooCommerce does less by default and lets you change almost everything, usually through a theme or plugin. Neither platform does anything special for AI search, and nothing special is needed. What matters for Google and AI crawlers alike is that the right crawlers are allowed, the product facts are in the HTML, and the structured data matches the visible page.

We work on Shopify, WooCommerce and other e-commerce platforms. Everything below comes from the platforms’ own documentation, linked in each section and read on 15 October 2026. Where the documentation is silent, we say so.

What does each platform generate for you?

Element Shopify WordPress with WooCommerce
robots.txt Generated; editable through a robots.txt.liquid theme template Generated by WordPress; changed through the robots_txt filter
XML sitemap Generated at /sitemap.xml, updated automatically Generated at /wp-sitemap.xml since WordPress 5.5
Canonical tags Added automatically to pages Output by WordPress core for single posts, pages and custom post types only
Structured data Built into Shopify themes; a Liquid filter outputs Product or Article WooCommerce outputs Product JSON-LD on single product pages
Hiding a page A noindex meta tag added in theme.liquid Directives added through the wp_robots filter (WordPress 5.7+)
International versions Shopify Markets sets canonicals and hreflang automatically Not covered by the core documentation linked here
  • Shopify

    • robots.txt: robots.txt.liquid template
    • Titles, descriptions, URLs: admin fields
    • Canonical and hreflang: automatic
    • Structured data: theme and Liquid filter

    Change the theme, not the platform output

  • WordPress with WooCommerce

    • robots.txt: robots_txt filter or a plugin
    • Sitemaps: wp_sitemaps filters
    • Canonical on archives: theme or plugin
    • Product data: woocommerce_structured_data_product filter

    Check what each plugin has replaced

Where the control sits on each platform. Shopify generates more and exposes less; WordPress exposes nearly everything through code.

Shopify: what can you control?

robots.txt

Shopify “generates a default robots.txt file that works for most stores”, according to its robots.txt guide. To change it, you add a robots.txt.liquid template to the theme, which “replaces Shopify’s generated robots.txt output”. The guide shows how to add a rule to the default groups, remove a default rule, add rules for a specific crawler, and add extra Sitemap: lines.

Two cautions from the same page. Shopify strongly recommends using its Liquid objects whenever possible rather than hard-coding the file. And it notes that “rendered template output doesn’t always match Shopify’s generated file exactly”, so save a copy of the live file and compare before you publish. Shopify’s help centre adds that you do not need to change the file “unless you have a specific reason to do so”.

A decision about AI crawlers is one such reason. Rules for OAI-SearchBot, PerplexityBot or GPTBot go in this template like any other crawler rule. Our crawler access policy guide covers which ones to allow.

Sitemap

Shopify publishes a sitemap at the root of each store domain. It links to products, primary product images, pages, collections and blog posts, and “Sitemap files are automatically updated when you add a new webpage, product, collection, image, or blog post” (Shopify Help Center). Stores on the Basic plan or higher that use international domains get a sitemap for each one.

Google cannot read the sitemap while the store is in private mode, so a password-protected store under development is not indexable. Submit sitemap.xml in Search Console for each domain once the store is public.

Canonicals, international versions and duplicate URLs

Shopify’s SEO overview says “Auto-generated canonical tags are added to pages to prevent duplicate content from appearing in search results”. Theme developers can read or set the canonical with the Liquid canonical_url object.

For international stores, Shopify’s markets SEO page says canonical URLs point to the primary version of each page, and “Hreflang tags are generated automatically based on your market and language configuration.” Shopify’s theme documentation warns that “Adding your own tags on top of the automatic ones can produce duplicate or conflicting annotations”, so remove hreflang tags a previous theme or app added by hand.

Structured data

Shopify says “Structured data implementation is built into Shopify themes”. The Liquid structured_data filter outputs a product as a schema.org Product, or as a ProductGroup when it has variants, and an article as an Article. Themes and apps can add more markup on top, which is where duplicates come from: two Product nodes on one page, with different prices, can happen when a review app and a theme both emit markup. Check the page with our structured data check.

Hiding a page

Shopify’s help page shows a <meta name="robots" content="noindex"> tag added to the <head> of theme.liquid, wrapped in a condition for the template you want hidden (its example is the search template).

WordPress with WooCommerce: what can you control?

robots.txt

WordPress serves a generated robots.txt through do_robots(). The default output is User-agent: *, a Disallow for the admin area and an Allow for admin-ajax.php. The robots_txt filter changes it.

Since WordPress 5.3, ticking “Discourage search engines from indexing this site” no longer adds Disallow: /; WordPress uses the robots meta tag instead. A staging site copied to production with that box ticked is therefore not blocked in robots.txt but carries noindex on every page. Check the meta tag, not just the file.

Sitemaps

WordPress 5.5 added sitemaps to core. The announcement says WordPress exposes a sitemap index at /wp-sitemap.xml, covering “all public and publicly queryable post types and taxonomies” plus author archives and the home page, with up to 2,000 entries per sitemap. The index is referenced in robots.txt, and sitemaps are switched off when the site discourages search engines.

Developers can switch the core sitemap off or remove parts of it with the documented filters, and SEO plugins can replace it with their own. The practical check is simple: open /robots.txt, follow the Sitemap: line, and confirm that products and product categories are listed and that author archives you do not want indexed are not. Our sitemap inspector does this for one sitemap.

Canonicals

WordPress core’s rel_canonical() “Outputs rel=canonical for singular queries” only: single posts, pages and custom post types, which includes single products. The shop page, product categories, tags and paginated archives get no canonical from core. A theme or SEO plugin usually adds one; confirm it does, and that filtered and sorted category URLs point back to the unfiltered page if that is your intent. Our indexability inspector shows the canonical for any URL.

Structured data

WooCommerce “outputs structured data for products automatically” in JSON-LD, according to its developer wiki: a Product with a nested Offer, on single product pages. It no longer outputs structured data on archives “as it contradicts Google guidelines”, and the full product data can be changed with the woocommerce_structured_data_product filter. The wiki page is old, so confirm the current output in your page source. SEO plugins can add their own Product markup on top; as on Shopify, check for duplicates.

Nothing on the platform, and the same three things as everywhere else.

  1. The crawlers are allowed. Both platforms let you write per-crawler rules into robots.txt. Check that the live file says what you intend for the search crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) and the training crawlers separately, and that a CDN, firewall or bot-protection app does not block what robots.txt allows. Our AI crawler access check fetches a URL as each documented agent.
  2. The product facts are in the HTML. The documented AI crawlers describe no JavaScript rendering step. Price, availability, specifications and reviews that an app injects with JavaScript may be missing from what they read. Our no-JS content check shows what disappears; the rendering article explains why it matters.
  3. The structured data matches the page. Google’s guidelines require markup to match visible content, and WooCommerce’s own wiki repeats that “only visible data should be marked up”. One Product node per product page, with the same price and availability the shopper sees.

A checklist for either platform

  1. /robots.txt says what you intend for Googlebot, Bingbot and each AI crawler, and no leftover staging rule blocks the store.
  2. No page you want indexed carries noindex, including every page after a staging-to-production move.
  3. The sitemap listed in robots.txt contains products, categories or collections, and blog posts, and is submitted in Search Console and Bing Webmaster Tools.
  4. Every product, category and collection page has a canonical, and filtered or sorted URLs point where you intend.
  5. Each product page has exactly one Product node, matching the visible price, availability and name.
  6. Product facts and reviews are in the HTML response, not only after JavaScript runs.
  7. On multi-market stores, hreflang comes from one source only.
  8. A CDN, firewall or bot-protection app is not blocking crawlers that robots.txt allows.

What we don’t claim

  • We do not claim either platform ranks better, or is cited more often by AI assistants. Neither platform’s documentation makes such a claim, and the outcome depends on the store, not the platform.
  • We do not claim the defaults described here are current for every theme, plugin or plan. Themes, apps and plugins change the output; check your live pages against the checklist.
  • We do not claim the details are permanent. Platform documentation changes without notice; re-read the sources before relying on them.

Sources

  1. Shopify — Customize robots.txt
  2. Shopify Help Center — Finding and submitting your sitemap
  3. Shopify Help Center — SEO overview
  4. Shopify Help Center — International SEO for markets
  5. Shopify — Liquid filters: structured_data
  6. Shopify — Use hreflang tags in your theme
  7. Shopify Help Center — Hiding a page from search engines
  8. WordPress Core — New XML sitemaps functionality in WordPress 5.5
  9. WordPress Developer Reference — do_robots()
  10. WordPress Developer Reference — wp_robots()
  11. WordPress Developer Reference — rel_canonical()
  12. WooCommerce wiki — Structured data for products
Technical SEO

Technical SEO audit checklist for Google and AI crawlers

A working checklist for a technical SEO audit that covers AI crawlers as well as Googlebot: access, rendering, indexation, architecture, structured data and measurement, with the documented rule behind each check and the free tool that runs it.

5 min read

Technical SEO

JavaScript rendering and AI crawlers: what they can and cannot see

Googlebot renders JavaScript in a second pass. The documented crawlers from OpenAI, Anthropic and Perplexity describe no rendering step. What that means for sites built on client-side frameworks, how to check your own pages, and what to serve in the HTML.

5 min read

Technical SEO

How to find AI crawlers in your server logs, and verify them

What an access log line contains, how to match the user agent tokens OpenAI, Anthropic, Perplexity, Google, Bing, Apple and Common Crawl document, how to confirm a request is genuine with published IP ranges or reverse DNS, what to measure, and what logs cannot tell you.

11 min read