Four AI Agents Told Shoppers This Furniture Store Was Out of Stock. It Wasn't.

Jump to section›
#Short answer
Home Elegance USA, a Shopify furniture retailer with 30,855 products, was losing sales to a single template bug: every AI shopping agent — ChatGPT, Gemini, Perplexity, and Claude — told shoppers its in-stock furniture was backordered. Ten days after we shipped five fixes, all four agents stopped. Three now explicitly confirm "In stock." Full 20-cell before/after test below, dated and repeatable.
#The symptom
Home Elegance USA sells 30 furniture brands across the US. Traffic was fine. Google was fine. But shoppers who asked an AI assistant about a product got told it was backordered — on items sitting in stock.
We tested it the boring way: five buyer questions across four agents, 20 cells, scored, dated, repeatable.
Baseline (27 June 2026):
- 4 of 4 agents asserted an in-stock item was backordered or unavailable.
- 0 of 4 confirmed "In stock."
- ChatGPT went further: it diagnosed the store's own site as broken, then recommended competitors instead.
- Gemini invented a fact — it told users the retailer was the wholesale brand it carries, and therefore "cannot sell" one of its actual brands. Wrong entity, wrong catalog, confident tone.
That last one matters. An agent that misidentifies who you are will confidently answer questions about you using someone else's facts.
#The cause
Not inventory. Not the platform. Two lines of template logic:
- The product template rendered a "This item is backordered" sentence into the page HTML unconditionally — the condition it should have checked wasn't wired up.
- The real inventory status was painted in by JavaScript after page load.
Humans saw "In stock" because their browser ran the JS. Crawlers read the served HTML — where the only stock sentence present was the backorder one. So every agent read the page correctly. The page was lying.
This is the general lesson, and it's why this is an agent-commerce problem and not an SEO problem: an AI agent's view of your store is the raw HTML, not the rendered page. Anything your theme paints in with JavaScript may as well not exist. Anything hardcoded in the template is treated as fact, even when your admin says otherwise.
Check it on your own store in 30 seconds: view-source: on a product page, then Ctrl+F your stock status. If your "In stock" isn't there but a "backordered"/"sold out" string is, agents are reading the wrong one.
#What we shipped in 10 days
| # | Fix | Why it mattered |
|---|---|---|
| 1 | Backorder sentence made conditional + stock status server-rendered | The paid objective. Agents now read true stock state from HTML |
| 2 | Page titles/meta rebuilt word-safe at the theme layer | An SEO app's AI "one-click fix" had truncated titles mid-word ("...Furnitu") and left orphan punctuation across a catalog it flagged at 4,959 pages |
| 3 | JSON-LD deduplicated; brand re-attached to Product via shared @id |
Theme and SEO app were each emitting their own Product/Organization/Breadcrumb nodes. Competing graphs → the agent picks one, and the one it picked had no brand |
| 4 | Review collection + AggregateRating wired live |
Ratings are the field agents quote most in shopping answers |
| 5 | FAQ schema — 13 buy-intent questions (shipping, returns, brands, location, financing) | Agents answer from the page or they guess |
#The result (re-test 9 July 2026, same 20 cells, same rubric)
| Metric | Before (27 June) | After (9 July) |
|---|---|---|
| Agents saying an in-stock item is backordered | 4 / 4 | 0 / 4 |
| Agents explicitly confirming "In stock" | 0 / 4 | 3 / 4 |
| Agents diagnosing a site bug / recommending competitors | 1 (aggressively) | 0 |
| Brand-entity hallucination (Gemini) | Present | Gone — correct product, correct price, correct retailer |
| AI Visibility Score (our rubric) | 5 / 10 | 7 / 10 |
ChatGPT's own words on re-test: it had "crawled within the last week" and the page "explicitly shows the availability as In stock."
#What did not improve — and why we are saying so
Category visibility was flat: 4/12 → 3-4/12. Ask "best affordable luxury furniture" and the store still mostly doesn't surface. Competitors still rank for its own brand keywords.
That's the expected result, and pretending otherwise would make the rest of these numbers worthless. The five fixes were correctness fixes, not ranking fixes. When an agent describes you, it now describes you accurately. Whether it picks you in a competitive answer is a different mechanism — reviews, entity authority, third-party corroboration — and that's a 4–8 week arc, not a 10-day one.
Two more honest notes from the same test:
- One agent (Claude) still couldn't retrieve the product pages at all. We verified both URL forms return HTTP 200 with correct content and that robots.txt blocks no AI crawler. It's a coverage gap on the retrieval side, not a site defect. Nothing to fix; re-test later.
- Perplexity invented a number — it quoted a 25% restocking fee. The policy says 20%, and "25%" appears nowhere on the site. This is the argument for the FAQ work in one line: when a site states a fact clearly and repeatedly, agents have less room to make one up.
#The takeaway: three failure modes, three different fixes
Most stores misdiagnose which one they have:
- Agents can't read you → template/rendering problem. More content won't help.
- Agents read you but describe you wrong → schema and entity problem. This store had both, and both were fixable in days.
- Agents read you correctly but don't pick you → authority problem. Slow, real, and the only one that isn't a quick win.
The bug in this case had been live long enough to be quoted back by four different AI systems. Nobody found it in analytics, because it doesn't show up in analytics — it shows up as sales that never happen.
See the full engagement scope, sections, and clientMeta on the Home Elegance USA case study. Want the same 20-cell teardown on your store? Run our free AI visibility audit.