The check that decides everything
Fetch one of your product pages with curl and read what comes back. If the price is not in there, an agent comparing you against three competitors cannot include you in the comparison.
This is the most common failure in retail. Prices render client side from a pricing service, so a person sees them and a fetch sees an empty shell. SecondDoor measures exactly this: prices in raw HTML against prices after rendering, on your real product pages.
Markup is the fallback every agent shares
Where an agent has a feed partnership it uses the feed. Everywhere else it parses the page, and Product and Offer structured data is what makes that reliable rather than a guess at your layout. Google states plainly that on-page markup is the verification signal for its shopping surfaces.
Completeness is what separates useful from decorative. Price and currency let an agent compute a total. Availability stops it recommending something you cannot ship. A GTIN or MPN lets it match your item to the same item elsewhere, which is how you get compared on merit rather than skipped.
Feeds where you can get them
Google Merchant Center is the entry ticket to AI Mode and Gemini shopping, and the free listing costs nothing but the work. OpenAI accepts a product feed pushed to an allow-listed endpoint, refreshed as often as every fifteen minutes. Shopify syndicates catalog data across its own agent surfaces.
None of that replaces the page. Feeds cover the surfaces you have a relationship with; markup covers every other agent that arrives.