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]
- Sources checked
- September 21, 2026
Steps
- 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]
- 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]
- 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]
- 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 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.
Paid help and free options
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.