Somewhere on the internet right now, an AI agent is trying to buy a t-shirt and getting told it’s out of stock when it isn’t. Nobody’s watching. Nobody knows.
Here’s the direct answer: if any part of your product page’s price or availability is set by JavaScript after the initial load, an AI shopping agent almost certainly can’t see it. Most of these agents — ChatGPT’s browsing tool, Perplexity, Gemini — fetch the raw HTML your server sends. They don’t run your JavaScript. If your theme renders “Add to Cart” client-side, or your availability field in JSON-LD was set once and never updated when a variant sold out, the agent is reading a snapshot of your store that’s already wrong.
We went and checked our own properties for exactly this, expecting to find small stuff. We found bigger stuff.
Does your homepage even resolve for a crawler?
The single highest-impact bug we found wasn’t a schema mismatch — it was that our own root domain returned a flat 401 Unauthorized. Not a redirect, not a coming-soon page. An error. The actual marketing page lived one path deeper. Any crawler, AI or otherwise, landing on the bare domain got nothing. Zero indexed pages, confirmed via a direct site: search. Before any JSON-LD cleanup or content work matters at all, check that your root domain actually serves something.
Is there a robots.txt, and does it let AI crawlers in?
We had none at all — a flat 404 where a robots.txt should be. No crawl guidance for anyone, human or AI. If you do have one, actually open it and check for GPTBot, ClaudeBot, and PerplexityBot by name — a lot of stores inherit a blanket Disallow from an old SEO plugin default and never notice, because it doesn’t break anything a human would see.
Does your JSON-LD say what your page actually says?
This is the one from the original question that started this post. Pull a product page with curl or view-source — not devtools, which shows you the DOM after JavaScript has run — and read the actual Product schema your server sent. Compare price and availability against what a real shopper sees on the same page. If they were set once at page-build time and the live inventory has moved since, they’ll quietly diverge, and an agent reading only the schema has no way to know it’s stale.
Is there structured data at all?
We had none — no Organization schema, no Product schema, nothing. This isn’t just an AI-agent problem; it’s the same gap that keeps you out of Google’s AI Overviews and rich snippets. FAQPage schema on a well-written FAQ section is one of the highest-leverage, lowest-effort things you can add, and it’s exactly the kind of direct, quotable content both traditional answer boxes and AI answer engines prefer over marketing copy.
The honest bottom line
None of this is exotic. It’s four checks: does your root domain resolve, does your robots.txt let AI crawlers in, does your JSON-LD match reality, and do you have structured data at all. We failed three of the four on our own site before fixing them. If you haven’t checked, you probably will too — and the only way to find out is to actually look, the same way an agent would: at the raw response, not the rendered page.
(Housekeeping: yoursignalstack — the Shopify analytics tool this blog exists to support — is currently pending Shopify App Store approval, so it’s not installable yet. It has nothing to do with the checks above; different problem, same honesty-over-hype approach we’re trying to bring to both.)
Leave a Reply