Commerce Checks

Commerce Checks

Catalog feeds, structured product data, and agentic commerce hooks.

When commerce applies

Commerce is the only dimension AIScan turns off by default. It activates whenever the scanner sees real selling signals — structured pricing data, a payment provider (Stripe, Paddle, Lemon Squeezy, Polar, Gumroad), or commerce routes such as /pricing and /checkout — not just an e-commerce platform fingerprint. For everyone else, these checks return na and don't affect your score.

Sites that sell are classified as transactional (SaaS and digital plans) or catalogue (a storefront with many products). Transactional sites are graded on machine-readable pricing; UCP and x402 are bonus-only for them, because those are catalogue standards. Catalogue sites get the full rubric.

M1 — Product feed

Agents that shop on a user's behalf need a stable, machine-readable list of what you sell. AIScan looks for a Google Merchant Center XML feed, a JSON product catalog, or a CSV at common paths (/products.json, /feed.xml).

How to fix

  • Shopify/products.json ships by default; expose it explicitly.
  • WooCommerce — add a feed plugin (Product Feed PRO, CTX Feed) that generates Google Merchant XML.
  • Custom — emit a feed at build or via an endpoint with stable URLs, prices, SKUs, and availability.

M2 — Structured product data

On product pages, AIScan checks for schema.org/Product JSON-LD with the basics: name, image, offers.price, offers.priceCurrency, offers.availability. Most e-commerce themes include this; older themes don't.

How to fix

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Acme Widget",
  "image": "https://acme.com/widget.jpg",
  "sku": "WIDGET-1",
  "offers": {
    "@type": "Offer",
    "price": "29.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

M3 — Agentic checkout

Emerging standards from Visa, Mastercard, OpenAI, Anthropic, and Shopify are converging on the idea of a machine-callable checkout endpoint. AIScan flags whether your store exposes one — informational for now, but worth tracking.

How to fix

Most platforms aren't there yet. Watch for Shopify's Agent Commerce rollout and equivalent on Stripe/Visa. If you build a custom checkout, expose an OpenAPI description and link it from your API catalog.

M4 — Machine-readable pricing

Essential for transactional sites, recommended for catalogues. AIScan looks on your pricing/plans page (then the homepage) for schema.org Offer or AggregateOffer JSON-LD carrying price, priceCurrency, and ideally the billing period. An agent asked "what does this cost?" should be able to answer without scraping prose. Describing only a free tier (price: 0) counts as partial — the paid plans still aren't machine-readable.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Pro",
  "offers": {
    "@type": "Offer",
    "price": "12.00",
    "priceCurrency": "USD",
    "priceSpecification": {
      "@type": "UnitPriceSpecification",
      "price": "12.00",
      "priceCurrency": "USD",
      "billingDuration": 1,
      "unitCode": "MON"
    }
  }
}
</script>
Related checks: agentic checkout usually depends on discoverable APIs, MCP or OAuth metadata, so pair this page with the Capabilities checks. For AIScan's own transactional pricing example, see the pricing page JSON-LD.

Further reading