When shoppers ask ChatGPT or Perplexity about your upcoming product drop, the AI often states the item is completely sold out. At Pendium, we monitor how major retrieval engines evaluate ecommerce stores, and this failure happens for a simple technical reason: Shopify stores routinely rely on visual front-end scripts to render a "Pre-order" button for human shoppers while serving raw out-of-stock data to automated crawlers. Fixing this lost revenue requires mapping your Shopify inventory states directly to the schema.org PreOrder enumeration in your JSON-LD and pairing it with a machine-readable releaseDate attribute. Without those two structured data fields, AI recommendation engines drop your product before the customer ever sees your store.
The phantom stock status problem
When an AI shopping agent tells a ready buyer that your product is unavailable, the purchase journey stops immediately. The shopper does not click through to double-check the product page. They simply ask the model for an alternative brand and spend their money elsewhere.
This scenario plays out daily across ChatGPT, Claude, and Google AI Overviews. A merchant launches marketing campaigns for an upcoming collection, builds anticipation across social channels, and opens pre-orders on Shopify. Yet, when prospective buyers use AI engines to research product comparisons or confirm release timing, the assistant returns a flat rejection: the item is out of stock.
According to research from Nivk's breakdown on phantom stock status, contradictory availability data between third-party feeds, model training snapshots, and live product markup causes immediate evaluation errors. AI agents treat product availability as an absolute qualifying gate rather than a secondary ranking factor. If an agent suspects an item cannot be purchased and delivered, it drops the item from the candidate set entirely to preserve its own credibility with the user.
For ecommerce operators using Pendium to track their recommendation footprint, seeing a high-priority launch flagged as unavailable is infuriating. The inventory exists in your planning calendar, your merchant admin accepts orders, and human visitors can click the checkout button without friction. To the language model parsing the raw page response, however, your product does not exist as an available purchase.
Why it happens: the visual vs. structured data mismatch
The breakdown stems from how modern ecommerce themes present information. Human shoppers interpret visual elements: styled text, button labels, badges, and layout modifications applied by client-side scripts. Automated engines read structured metadata, ignoring the visual styling altogether.
When an AI shopping agent assesses an offer, it pulls raw page code and cached catalog feeds. It looks specifically for the offers object within your product JSON-LD block. If that object contains contradictory availability states, the engine defaults to the safest assumption: the product is unavailable.
Data compiled in CatalogScan's guide to Shopify availability states reveals that 69% of Shopify stores output InStock for products that are out of stock, on backorder, or not yet released, while 83% of pre-order products lack any releaseDate property in their structured data. When systems encounter these broken signals, they misclassify the catalog.
How Shopify's catalog caching creates lag
AI agents do not always render your live storefront in real time when answering a user prompt. As detailed by AgentReady's analysis of catalog caching, shopping assistants frequently ingest cached product indexes, including Shopify's own Global Catalog, which updates on a scheduled batch cadence rather than instantaneously.
If your Shopify admin toggles an inventory state from zero stock to allow overselling, that change takes time to filter through external feeds. When an agent cross-references a live crawl against an older cached index, conflicting availability signals cause the model to lose confidence. The agent will usually present the older, out-of-stock state to the buyer.
The JavaScript cover-up
Most Shopify themes handle pre-orders through client-side JavaScript. The core HTML template renders a standard out-of-stock notification because the inventory quantity is zero. Once the page loads in a browser, a JavaScript snippet checks if the product has a specific tag (such as pre-order) or allows overselling, switches the button label to "Pre-order," and activates the checkout form.
Humans see the updated button. AI crawlers do not run complete browser rendering pipelines for every product URL they inspect. They parse the initial, server-delivered HTML payload.
A clear example of this failure surfaced in an investigation published by Nile's report on what AI agents see, documenting an audit by ecommerce engineer Leo Nguyen of LUMA-E. A merchant's product page clearly displayed an in-stock status to human visitors. However, ChatGPT, Gemini, Perplexity, and Claude all claimed the item was backordered.
The underlying Shopify theme had hardcoded a backorder message into the static HTML, relying on JavaScript to paint over the text for browser visitors. Human shoppers received the right message, while every automated crawler absorbed the hardcoded error. If your theme uses scripts to alter an out-of-stock state into a pre-order state after the DOM loads, machine parsers will continue to report your product as sold out.
| Storefront Element | What the Human Sees | What the AI Crawler Parses | Resulting AI Action |
|---|---|---|---|
| Default Shopify Button | "Pre-Order Now" (via JS) | schema.org/OutOfStock | Product excluded from recommendations |
| Bare-name Schema | Standard buy button | "availability": "InStock" | Downgraded confidence by strict parsers |
| Full PreOrder Schema | "Pre-Order Now" | schema.org/PreOrder + valid date | Recommended with estimated arrival dates |
The solution: fixing your JSON-LD availability state
Resolving this disconnect requires making your server-rendered structured data accurately reflect your pre-order status. You do not need an entire headless redesign to accomplish this; you need to adjust your theme's Liquid templates so that the generated JSON-LD outputs the exact schema.org properties machine agents require.
If you handle different types of catalog exceptions, such as refurbished items or irregular releases, clean schema is equally vital. You can see how this structural logic applies to other catalog properties in our guide on how to map Shopify condition metafields to schema so AI recommends your used inventory.
To fix pre-order handling, follow this sequence:
- View the unrendered source code of your product page to confirm what values exist inside the
application/ld+jsonscript tag. - Identify the Liquid snippet responsible for generating the
offersschema object (typically found insnippets/product-json-ld.liquidor embedded insidesections/main-product.liquid). - Replace binary availability checks with a conditional statement that recognizes pre-order conditions.
- Pass the absolute schema.org URL rather than a bare string.
- Populate the
releaseDateproperty using a dedicated Shopify product metafield.
Mapping to the PreOrder schema value
By default, many themes contain a simple ternary check that evaluates whether variant.available is true or false. If inventory is zero and you have not configured overselling properly, the theme outputs https://schema.org/OutOfStock. Even if you select "Continue selling when out of stock," standard themes simply emit https://schema.org/InStock.
InStock is technically incorrect for a pre-order item. When an agent parses an InStock label on a product with a future delivery promise, the discrepancy can trigger hallucinated shipping windows. The correct value is https://schema.org/PreOrder.
Update your Liquid template to differentiate between standard stock and pre-orders. Use the absolute URL format:
{%- assign availability_url = 'https://schema.org/OutOfStock' -%}
{%- if variant.available -%}
{%- if variant.inventory_policy == 'continue' and variant.inventory_quantity <= 0 -%}
{%- assign availability_url = 'https://schema.org/PreOrder' -%}
{%- elsif product.tags contains 'pre-order' -%}
{%- assign availability_url = 'https://schema.org/PreOrder' -%}
{%- else -%}
{%- assign availability_url = 'https://schema.org/InStock' -%}
{%- endif -%}
{%- endif -%}
"availability": "{{ availability_url }}"
Strict JSON-LD parsers look for the full URI https://schema.org/PreOrder. Emitting the bare string "PreOrder" causes some parsers to treat the value as an arbitrary text string rather than an enumerated schema entity, dropping the signal quality score.
Adding the releaseDate property
Setting the availability state to PreOrder is only the first half of the fix. When an AI shopping assistant evaluates a pre-order recommendation, it needs to tell the user when the item will actually ship. If the agent finds a PreOrder tag with no date, it cannot satisfy the user's implicit delivery criteria.
Create a product metafield in your Shopify admin under Settings > Custom Data > Products. Name it Release Date with the namespace and key set to custom.release_date, using the Date or Date and Time type.
Inject this metafield directly into the offers node of your JSON-LD schema whenever the product is flagged as a pre-order:
{%- if availability_url == 'https://schema.org/PreOrder' and product.metafields.custom.release_date != blank -%}
"releaseDate": "{{ product.metafields.custom.release_date | date: '%Y-%m-%d' }}",
{%- endif -%}
Using standard ISO-8601 formatting (YYYY-MM-DD) allows AI engines to parse the exact day the inventory becomes active. The agent can then answer user queries like "Can I get this jacket before November?" with accurate information derived straight from your structured data.
When it's more serious
A product showing an inaccurate stock status is often the first symptom of broader catalog corruption in your machine-readable footprint. When AI platforms parse contradictory data, they do not simply stop at reporting items as sold out; they begin making assumptions to bridge the gap.
Watch for these warning signs in your AI footprint:
- Agents state completely incorrect policies for your store, such as quoting a 25% restocking fee when your actual policy is 20% or completely free returns.
- The model reports that a product is available, but quotes pricing that was updated weeks ago or pulls promotional pricing long after a sale has ended.
- Multi-market catalogs cross wires, causing an AI answering a UK shopper to quote domestic US shipping timelines and USD pricing.
- The assistant acknowledges your product exists, but tells the shopper the site appears unmaintained or broken and recommends a direct competitor instead.
In the LUMA-E investigation, Perplexity cited a non-existent 25% restocking fee for a store whose true policy was 20%—a number that appeared nowhere in the site's code. When agents detect conflicting facts across your HTML, feeds, and schema, their confidence drops. ChatGPT and Claude will frequently choose not to risk recommending an unstable catalog, diverting the user to alternative brands whose structured data is clean and coherent.

Prevention: monitoring your AI readability
Schema fixes are not permanent installations. Every time an ecommerce team modifies a Shopify theme, installs a conversion-rate optimization app, or updates catalog feed plugins, structured data can break. A single script update can revert your JSON-LD logic to binary defaults or overwrite customized metafield output.
Preventing phantom stock issues requires continuous verification of how automated crawlers perceive your store. Traditional SEO site audits check whether pages return HTTP 200 codes and canonical tags, but they do not evaluate whether an AI model can parse your checkout terms or offer statuses.
Using an automated audit like Pendium's AI Site Audit tool helps verify that your JSON-LD, Open Graph tags, and schema.org markup remain fully readable by machine retrieval agents. Regularly running tests against your unrendered HTML ensures that theme edits do not quietly break your pre-order releases.
When availability data is wired accurately, AI models stop hallucinating stock errors. Your upcoming releases appear in AI searches with correct delivery expectations, protecting your product launch velocity and capturing high-intent shoppers the moment they ask for recommendations.
To see how AI engines currently interpret your catalog, run a free scan using Pendium's Visibility Scan Preview. Pendium monitors how seven major AI platforms—including ChatGPT, Claude, and Gemini—evaluate your brand, identifying perception gaps before they cost you sales. You can also explore the core capabilities of the platform directly at Pendium.ai.