2026-09-27

robots.txt, security plugins and AI shopping bots: a WooCommerce checklist

A WooCommerce store can have a perfect product catalog and still be invisible to AI shopping agents, because the crawlers never get the page. There are two places that happens: robots.txt, which asks crawlers to stay out, and firewalls (security plugins, CDNs, hosting rules), which block them outright. The first is easy to see. The second usually isn't.

This checklist covers both, with the exact user agents to look for and commands to test them.

The AI crawlers, and what each one does

Each vendor now runs separate bots for training, search indexing and user-requested fetches, and you can treat them differently.

User agent Vendor What it does Follows robots.txt?
GPTBot OpenAI Collects content that may train models Yes
OAI-SearchBot OpenAI Indexes pages for ChatGPT search and shopping answers Yes
ChatGPT-User OpenAI Fetches a page when a person asks ChatGPT about it May not ("robots.txt rules may not apply")
ClaudeBot Anthropic Training Yes
Claude-SearchBot Anthropic Indexes pages for Claude's search results Yes
Claude-User Anthropic Fetches a page when a person asks Claude Yes, according to Anthropic
PerplexityBot Perplexity Indexes pages for Perplexity's answers Yes
Perplexity-User Perplexity Fetches a page for a live user Generally not
Google-Extended Google A robots.txt token (not a crawler) controlling use in Gemini models Yes

Sources: OpenAI's crawler overview, Anthropic's crawler help page, Perplexity's crawler docs.

For shopping visibility, the search bots matter most: OAI-SearchBot, Claude-SearchBot and PerplexityBot build the indexes that product recommendations come from. The user bots matter when a shopper pastes your link. The training bots are a separate question.

A robots.txt that allows search and blocks training

If you want to be recommended but would rather not have your content used for model training, this is a reasonable starting point:

# AI search and user-requested fetches: allowed
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
Allow: /

# Model training: not allowed
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Disallow: /

# Everyone else: your normal rules
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/

Two details that trip people up:

WooCommerce URLs that must stay crawlable

When you tighten robots.txt, it's easy to block something a shopping agent needs. Keep these open:

Cart, checkout and account pages can stay disallowed: there's nothing there for a crawler, and keeping bots out saves your server work.

Where WordPress robots.txt comes from

WordPress serves a virtual robots.txt unless a real robots.txt file exists in your site's root folder, in which case the file wins and the virtual rules are ignored. SEO plugins usually offer an editor for the virtual one. So if your edits don't show up, check for a physical file (your host's file manager shows it).

Also check Settings → Reading → "Discourage search engines from indexing this site". With it on, WordPress asks every crawler not to index your pages.

The part robots.txt doesn't show: firewalls

Security plugins, CDNs and hosts can block crawlers by user agent, by IP reputation or by rate, and the crawler never gets far enough to read robots.txt. Common causes:

Test it

Ask for the same product page as a browser and as each bot, and compare:

URL=https://yourstore.com/product/your-product/
curl -s -o /dev/null -w "browser          %{http_code}\n" -A "Mozilla/5.0" "$URL"
for bot in OAI-SearchBot ChatGPT-User Claude-SearchBot Claude-User PerplexityBot Perplexity-User GPTBot ClaudeBot; do
  printf "%-16s " "$bot"
  curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 (compatible; $bot/1.0)" "$URL"
done

If the browser gets 200 and a bot gets 403, 406, 429 or 503, or a challenge page, something is blocking that bot.

Read the result carefully

Some CDNs verify crawlers by IP address: a request claiming to be OAI-SearchBot from your laptop is obviously fake, so it gets blocked, while the real crawler from OpenAI's published IP ranges gets through. OpenAI publishes those ranges for each of its bots, and good CDNs use them. So a block in this test means look at your firewall's bot settings and logs, not necessarily that the real crawler is blocked. If the logs show real crawler requests (from the vendor's published IPs) being blocked, that's the one to fix.

Checking all of this from inside WordPress

The free LeyMish AI Shopping Readiness plugin does both checks from your own store:

It also checks that the store is live, which catches WooCommerce's "coming soon" mode, the other common reason crawlers see nothing. Everything runs on your site with no outside calls.

The short version

  1. Store live, and search engines not discouraged.
  2. robots.txt allows OAI-SearchBot, Claude-SearchBot and PerplexityBot on product pages.
  3. The user bots aren't blocked (they may ignore robots.txt, but a firewall still stops them).
  4. No security plugin, CDN or host rule blocks those user agents. Test it, then confirm in the logs.
  5. Training bots: your call. Blocking them doesn't hurt shopping visibility.

Is your WooCommerce store readable by AI shopping agents?

The free LeyMish AI Shopping Readiness plugin gives you a 0–100 score and a fix list, and runs entirely on your site.

Download the free plugin See Pro