Steps Sell through AI

My price only appears after JavaScript runs. How do I confirm an AI agent can read it?

Compare page-source price, currency, and availability with Shopify responses in the same visitor context. Hand confirmed gaps to the developer.

· Updated September 21, 2026

When this applies
You need to check whether a public product page includes price, currency, and availability in its server-sent JSON-LD, including after Store Check reports a gap. [1] [4]
When this does not apply
Shopify Catalog sends product data to activated AI channels through Shopify. This Answer covers the separate open-web route, not Catalog delivery. [6]
Why this matters
Not all crawlers run JavaScript. Google warns that dynamically generated Product markup can make Shopping crawls less frequent and less reliable for price and availability. [1] [2]
What to do
Find the product’s JSON-LD Offers in page source. Compare their minimum price, currency, and combined availability with the product .js and cart.js responses in the same visitor context. Correct confirmed gaps and repeat. [4] [5]
When you’re done
For each page checked, the server-sent JSON-LD identifies that product and has complete Offers with nonnegative prices. Their minimum price, currency, and combined availability match the same-context Shopify responses. [4] [5]
What this cannot prove
Matching evidence covers only the pages and visitor context checked. It does not prove that a crawler fetched or indexed them, that an assistant quoted them, or that Shopify Catalog delivered them. [1] [6]
Sources checked
September 21, 2026

Steps

  1. Open a public product page while signed out and view its source. Find the application/ld+json block for that product and its Offer or AggregateOffer data. Visible price text alone is insufficient. [1] [5]
  2. In the same visitor context, open the product URL with .js appended to its product path and the locale-appropriate cart.js. Record price_min divided by 100, available, and the cart currency. [4]
  3. Compare every Offer’s price, currency, and availability as described below. If the minimum price and combined availability agree, keep the page unchanged. If context or currency differs, stop without diagnosing a theme fault. [4]
  4. For a confirmed missing or inconsistent Offer, have the theme or storefront developer correct the server-sent markup, then repeat the comparison and Re-check Store Check. If you cannot safely edit code, send the observed evidence to that developer. [5] [2]

Open the official page, then report your progress

The page you opened and the completion or stop step you report stay only in this browser on this device. AI Commerce Ready and Shopify do not check the result or change your store here.

Official page
Shopify admin → Online Store → Themes → For the relevant theme, click the ··· menu → Edit code
Before you act
The theme code editor opens with the theme's directories, including sections and snippets.
When you’re done
For each page checked, the server-sent JSON-LD identifies that product and has complete Offers with nonnegative prices. Their minimum price, currency, and combined availability match the same-context Shopify responses.
When to stop
Stop without changes when the sampled evidence agrees. Stop and hand off when evidence is unreadable, visitor context or currency differs, or the markup uses forms this check cannot compare. Preserve intended login and pricing restrictions. [4] [3]
Go to Shopify admin theme code editor

When you return: Keep this Answer open. After any correction, return to compare the same page again. When you came from Store Check, run Re-check and read its reported coverage before treating the Finding as resolved.

What would you like to report?

Paid help and free options

When paid help makes sense
Developer help can be useful when a confirmed markup gap needs changes to a custom theme, pricing integration, or headless storefront while preserving the intended pricing and access rules. [2] [5]
What’s already free
A browser can show page source and Shopify’s public product JSON. Shopify also provides a Liquid structured_data filter for generating product JSON-LD; a theme must use it to include that output. [4] [5]

Check the price data sent with the page, not only the price you see. JSON-LD is product data a theme can put in the HTML response. Compare its price, currency, and availability with Shopify’s public product and cart responses.

This covers public-page discovery. Shopify’s data sharing explanation separates that route from Shopify Catalog delivery.

1. Read the page source

Open the product page signed out and use View page source. The browser inspector may show changes made after JavaScript runs.

Find application/ld+json, then the Product or ProductGroup for this product and its offers, including variants. Confirm identity by URL, identifier, or other product evidence. A recommended product’s Offer, visible price text, or the word Offer alone is insufficient.

Google says not all bots run JavaScript. Dynamically generated Product markup can also make Shopping crawls less frequent and reliable. These statements promise no particular agent’s behavior.

2. Read Shopify’s matching values

Keep the same domain, locale, market, and signed-out visitor context. For /products/example, open /products/example.js, retaining any locale prefix. Record price_min / 100 and product-level available.

Shopify’s Ajax product reference says prices use the customer’s presentment currency. Read currency from the locale-appropriate cart.js in that same context. The product response is not a universal base-currency reference.

Stop with “unable to compare” if a response is unreadable, a redirect changes the product or context, or currencies differ. These gaps do not identify a faulty theme, app, or JavaScript.

3. Compare the product’s Offers

Every Offer needs its own complete numeric, nonnegative price, priceCurrency, and availability. Do not combine fields from incomplete Offers.

  • The lowest Offer price must match price_min / 100.
  • Every Offer currency must match cart currency.
  • Combined availability must match product available: true means at least one available Offer; false means none. The cheapest variant may be sold out while another is available.

For Store Check, available states are InStock, PreOrder, BackOrder, and LimitedAvailability. Unavailable states are OutOfStock, SoldOut, and Discontinued. Read the final name of a schema.org URL. Other values need review.

For AggregateOffer, compare lowPrice and priceCurrency. Complete child Offers must have that minimum price and supply combined availability; any aggregate availability must agree. Without children, the aggregate needs its own availability.

If markup uses only priceSpecification or an unsupported availability value, ask the developer to review it. Re-check may still report missing or mismatched evidence even if the developer confirms accurate markup. Do not change accurate markup solely to pass this check. Google’s merchant listing rules are separate; Store Check accepting zero prices says nothing about Google eligibility.

4. Correct confirmed gaps and check again

Send the developer the product URL, visitor context, JSON-LD, and product/cart values. Stop here if you cannot safely edit code.

For Liquid themes, use the theme code editor. Shopify’s structured_data filter can generate JSON-LD; the developer should correct its source and avoid conflicting duplicate Offers. A headless developer owns that storefront’s response; the theme editor may not control it.

Preserve market pricing, login restrictions, and B2B rules. Do not remove pricing apps or expose restricted prices. After correction, compare the same responses again.

If you came from a Finding, return to Store Check and run Re-check. Read coverage and evidence availability: it checks at most three published pages on the primary domain anonymously. Its context may differ from yours. Redirected hosts or paths, missing currency context, or different currencies leave it Not Checked.

Matching data confirms only the pages and context checked. It proves no crawler fetch, indexing, assistant quotation, or Catalog delivery.

Sources

  1. JavaScript SEO basics
  2. Generate structured data with JavaScript
  3. Merchant listing structured data
  4. Ajax API product endpoint
  5. Liquid structured_data filter
  6. Data sharing and privacy for agentic storefronts