Agentic commerce
How to Expose Catalog Search and Checkout to AI Agents
Expose product data, catalog search, cart actions, and checkout to AI agents with a three-layer contract, exact pass rules, and a copy-ready evidence record.

Sections in this article
TL;DR
- Three layers: Catalog exposure is a data problem, checkout exposure is an action problem, and both sit behind an access layer of bot verification.
- Data conflict test: Inventory every Product markup emitter and compare overlapping fields before deciding whether a second block is a defect.
- Measurement gap: Server logs confirm a request arrived; they do not confirm an answer engine named the brand or linked to the page.
xpose catalog search and checkout to AI agents as three independently testable contracts: product data, live actions, and caller access. Publish stable identifiers and current product fields, expose documented search, cart, and checkout actions, then verify caller identity and save exact evidence at each gate. A storefront can pass one contract while failing another.
Different layers require different repairs. A data disagreement calls for field ownership and freshness checks. An action failure calls for inspection of the named search, cart, or checkout interface. An access rejection calls for identity and policy evidence. Fix the first failed layer before testing the next one.
A third layer sits underneath both: access. Before an agent can read a catalog or act on a cart, the request must pass the storefront's access policy. Cloudflare's Web Bot Auth reference documents one named verification method for verified bots and agents. It relies on a directory through which a crawler shares public keys and a protocol that attaches crawler identity to HTTP requests. That is an access mechanism, not evidence that the catalog or checkout action succeeded.
Three layers, three acceptance records: data, action, and access. Test and record each layer separately. A passing markup inspection does not stand in for an access decision, and a passing access decision does not stand in for a cart action. Every check below maps back to one of these layers so the first failed gate and its evidence remain visible.
In this article
- 1.Define separate contracts for product data, live actions, and caller access
- 2.Map identifiers, search, cart, and checkout without conflating snapshots and sessions
- 3.Confirm prerequisites before granting agent access
- 4.Build a repeatable live-SKU test fixture
- 5.Record reproducible evidence in an audit sheet
- 6.Diagnose each failure at the first broken layer
- 7.Choose measurement that matches the question
- 8.Record identifier, freshness, discovery, and policy edge cases
The mechanism that connects catalog data, search, and checkout for an agent is not one pipe, it is three handoffs, and each handoff has its own contract. Catalog data has to resolve to a stable identifier before search is useful. Search has to return results an agent can act on, not just display. Checkout has to accept an action from an agent's session without requiring a human to re-click through a UI built for a mouse.
Schema.org's Product type defines properties such as brand and category for describing a product. Treat the markup as a data contract: record which system emits each field, inspect the rendered value, and flag conflicting values before testing search or checkout.
Search and checkout sit above that identifier layer, and this is where a data snapshot differs from a live action interface. A feed reports the state captured when it was generated. Shopify's WebMCP changelog says: “Agents can search your catalog, manage the shopper's cart, and go to checkout on the shopper's behalf, all in the tab they're looking at.” It also says: “Everything an agent does happens on the shopper's live session.” Apply these statements to Shopify's documented WebMCP interface, not to every ecommerce platform.
The practical consequence is a clean boundary: a product feed can describe items, while a checkout action must operate on the current shopper session. Substituting one for the other is a design mistake this audit explicitly tests. The acceptance record therefore stores feed freshness and live-session action results as different fields.
Before granting any agent access to catalog search or checkout, confirm the prerequisites exist, because opening the door before the data or the action path is ready produces support tickets instead of sales. The checklist below is ordered: data prerequisites first, since a checkout mechanism sitting on bad catalog data just automates the error faster.
Each item below maps to one of the three layers from the contract: data, action, or access. Skipping an item does not fail loudly; it fails as an agent quietly abandoning a session or returning a wrong answer to the shopper, which is harder to notice than a server error.
Treat this as a gate. Use a Shopify community report and a Hacker News discussion only to discover edge cases, never as acceptance evidence. The completed evidence row decides whether this storefront passes.
Customer evidence is a separate analysis layer. The review-evidence workflow covers that layer without changing this storefront acceptance record.
Checklist
- On pages that use [schema.org Product](https://schema.org/Product), record the brand, category, and identifier values and compare them with the authoritative product record
- Inventory every Product markup emitter and compare overlapping fields; repair conflicting values or unintended ownership rather than assuming every second block is wrong
- When Cloudflare Web Bot Auth is the named access mechanism, record the public-key directory entry and signed-request decision described in [Cloudflare's reference](https://developers.cloudflare.com/bots/reference/bot-verification/web-bot-auth/)
- Name the exact search, cart, and checkout interface under test and save a sample structured response tied to one shopper session
- Run a positive action test and a negative control, saving the compared product, quantity, cart, and checkout destination values
- Assign an owner to the data, access, and action evidence rows and record the next required recheck event
See where your brand appears in AI answers - and where it does not.
Run a first-party brand check across supported answer engines. Results are measured without a promised citation or conversion. Browse all free tools
Choose one live, purchasable SKU and capture its actual starting state: canonical product URL, visible title, price, availability, primary identifier, markup emitter, and cart state. This is an executable fixture, not a claimed case study. The output is the completed evidence row for that SKU, with a timestamp and pass or fail at every gate.
Run the sequence below against the same SKU and the same shopper session. Save the rendered markup or response fragment used at each decision. If a gate fails, stop there and repair that layer before continuing, so a later checkout result cannot hide an earlier data or access failure.
A second SKU should be used only after the first path is reproducible. The purpose of this fixture is not to infer a fleet-wide success rate from one product. It establishes an exact test that another operator can repeat across the catalog and compare without changing the definitions.
- Record the live SKU baseline: URL, title, price, availability, identifier, markup source, and timestamp. Pass only when the values agree with the storefront record selected as authoritative
- Inspect the rendered page for every Product block. Record each emitter and compare overlapping fields. Pass when overlapping fields agree; do not assume that a second block is automatically wrong
- Apply the verification mechanism documented for the named access platform. For Cloudflare Web Bot Auth, record the public-key directory entry and the signed-request decision. Pass when the expected verified request is accepted and the negative control is rejected
- On a Shopify storefront, call the documented WebMCP search, cart, and checkout tools in one shopper session. On another platform, name and document the exact action interface being tested. Pass only when each response is structured and tied to the same session
- Compare the agent-visible product and cart state with the captured storefront state. Pass only when identifier, price, availability, quantity, and checkout destination agree; save the compared values rather than a bare pass label
- Repeat the fixture after a theme, catalog app, access-policy, or checkout change. Record the new result beside the prior run and investigate any changed field before restoring the pass state
An audit sheet turns the worked example into something repeatable by someone other than the person who built it. The sheet records, per storefront or per product template, whether each layer of the contract currently passes, and it records the evidence used to make that call rather than a gut impression.
The value of the audit sheet is in what it does not let a team skip: it forces a separate line for data, action, and access, so a team cannot mark 'agent-ready' as one checkbox when in fact only the catalog layer has been verified. This is the same discipline that a schema or feed audit needs, applied to the newer checkout and access layers.
Run the audit sheet before a launch announcement and after any theme, catalog app, access-policy, or checkout change. Compare the new evidence row with the prior passing row. The comparison identifies the first changed layer without claiming that every change breaks the same interface.
Copy-ready evidence record for one SKU and one shopper session
| Layer | Input to record | Test | Pass rule | Evidence to save |
|---|---|---|---|---|
| Product data | SKU, canonical URL, identifier, price, availability, timestamp | Compare rendered Product fields with the authoritative storefront record | Every compared value agrees at the recorded time | Rendered markup plus the authoritative record |
| Caller access | Named verification method, registered identity, positive request, negative control | Run both requests through the same access policy | The expected identity is accepted and the negative control is rejected | Directory or key record plus both policy decisions |
| Live action | Named search, cart, and checkout interface plus shopper session | Search the SKU, add it to cart, update quantity, and reach the checkout destination | Identifier, price, availability, quantity, and destination remain tied to the same session | Structured responses plus the compared cart state |
Stop at the first failed layer
Do not continue to checkout after a data or access failure. Repair the first failed layer, repeat that row, then continue with the same SKU and shopper session.
Most agent-exposure failures fall into one of three buckets that map directly onto the contract's three layers, and the repair path differs by bucket. The decision rule is simple: identify which layer is failing before attempting a fix, because a fix aimed at the wrong layer can pass its own test while the shopper-facing symptom persists.
The first bucket is a data-layer failure: overlapping Product fields disagree or an emitter has no intended owner. Inventory every emitter, record the authoritative product record, and compare the rendered values. Remove or change an emitter only when its ownership is unintended or its values conflict, then repeat the same comparison.
The second bucket is an access-layer failure. Cloudflare's Web Bot Auth reference describes its own integration as a verification method for verified bots and agents, using shared public keys and identity attached to HTTP requests. For that platform, follow the documented key and request flow, then record both a positive and a negative control. For another platform, use its named verification mechanism rather than generalizing Cloudflare's implementation.
The third bucket is an action-layer failure: the catalog values agree and the request passes access control, but the named interface cannot perform the intended cart or checkout action. Shopify documents WebMCP as a browser tool interface for its Liquid storefronts and Hydrogen developer preview. The repair is to test that exact interface, response, and shopper session. On another platform, the audit remains valid only after the operator substitutes that platform's documented action surface.
For the broader discovery layer, continue with the machine-readable discovery workflow.
- Symptom: two values disagree for the same product field. Layer: data. Repair: identify each emitter, choose the authoritative system, correct the conflicting value, and rerun the rendered-page comparison
- Symptom: the positive verified request is rejected while the negative control is also rejected. Layer: access. Repair: inspect the named verification flow, directory entry, signature, and policy decision before changing catalog or checkout code
- Symptom: product facts agree but the same shopper session cannot complete a cart action. Layer: action. Repair: inspect the named tool call and returned session state rather than falling back to simulated clicks
- Symptom: a previously passing path changes after a release. Layer: unknown until re-audited. Repair: compare the new evidence row with the last passing row and start at the first changed gate
Building the contract described above is only half the job; knowing whether an agent actually finds, reads, and cites the storefront correctly is the other half, and teams tend to reach for whatever measurement approach is closest at hand as opposed to the one that answers the question they actually have.
Manual spot checks answer 'does this one prompt work now,' but they do not create a stable panel by themselves. Server-log analysis answers 'did a request arrive and what did the server return,' but it cannot establish what a caller later said without a saved response. A repeated prompt panel answers a third question: whether the sampled answers name the brand or link to the page over time. Keep these outputs separate because request access, interface correctness, and answer behavior have different denominators.
EdenRank, the publisher of this article, is an AI Citation OS. EdenRank records whether an answer names the brand and whether it links to the brand page. EdenRank also runs an ongoing prompt panel and keeps a tracked run history. These are first-party product capabilities, not independent evidence about catalog or checkout behavior.
The table places these approaches side by side without treating one as a substitute for another. Select the row whose captured evidence matches the question, and keep separate denominators when two rows are reported together.
Approaches to measuring AI agent and answer engine exposure
| Approach | What it captures | What it requires |
|---|---|---|
| Manual spot checks | A single prompt outcome at a single point in time, useful for a quick sanity check | A person to run the prompt and read the response by hand |
| Server-log analysis | Whether a request arrived and what the server returned, independent of what the caller did with it | Log access, and a way to distinguish agent traffic from other bot traffic |
| A published third-party study | A market-wide pattern at the time it was measured, useful for context rather than a single storefront's status | Someone else's methodology and a fixed point in time, not a live view |
| EdenRank | EdenRank records whether an answer names the brand and whether it links to the brand page | An ongoing prompt panel and tracked run history; first-party product capability |
This audit separates two edge cases that otherwise get conflated. Identifier collision means a value intended to identify one product varies across emitters or systems. The second edge case is the boundary between a feed snapshot and a live action response. Each gets its own field because the repair and acceptance test are different.
A feed and a live response can match during one spot check and diverge after a catalog change. Record the feed generation time, the product update time, and the live-response time instead of assuming freshness. For API discovery, RFC 9727 defines an api-catalog well-known URI and link relation for automated discovery of a publisher's public API endpoints and metadata. Discovery still does not prove that a catalog action is authorized or correct; those remain separate gates.
None of the mechanisms in this reference controls a caller that ignores the declared interface and requests a page through another path. The operator must separately decide which callers and paths receive access. Record that policy decision beside the data and action results so a successful WebMCP or API test is not misreported as universal crawler coverage.
Field definitions for common edge cases in agent-exposed catalogs
| Field | What it means | Example value |
|---|---|---|
| Catalog identifier | A value meant to uniquely identify one product across systems and requests | sku-4471-navy-m |
| Markup source | Which storefront component emits the structured product fields used for comparison | theme, app, or both; both is a conflict only when ownership or values disagree |
| Feed freshness | The elapsed time between the feed snapshot and the storefront state used for comparison | record the generation timestamp and the maximum permitted age |
| Action response state | Whether the returned data belongs to the same named shopper session used by the test | record the interface, session key, request time, and compared cart state |
| Verified identity | The identity a request presents, checked against a registered public key before access is granted | agent key matches a key on file, or no match found |
FAQ
Is a product feed enough to expose a catalog to AI agents?
A feed can describe items at its generation time. It does not by itself perform a cart or checkout action in the current shopper session. Test data freshness and the named live action interface as separate gates.
How should a team investigate duplicate product markup?
Inventory every Product emitter, compare the overlapping fields, and record which system owns each value. A second block is not automatically a failure. Conflicting values or unintended ownership are the conditions to repair.
What does Web Bot Auth verify?
Cloudflare documents Web Bot Auth as a verification method for verified bots and agents. Its reference describes public-key sharing through a directory and a protocol that attaches crawler identity to HTTP requests. That verifies the named access flow, not the correctness of catalog data or checkout actions.
What to remember
Treat product data, live actions, and caller access as three separate contracts with separate evidence.
Use one live SKU as an executable fixture, then repeat the same definitions across the catalog.
Inventory every Product markup emitter and repair conflicts, not merely the existence of a second block.
Scope every platform claim to the exact documented interface and save both positive and negative controls.
Re-run the evidence row after theme, app, access-policy, or checkout changes and compare it with the last pass.
Measure server access and answer-engine naming or linking separately; neither proves the other.
References and further reading
These links are provided for direct inspection. A reference is not treated as proof of every statement in this article.
- 1.
- 2.
- 3.Product - Schema.org Typeschema.org
- 4.Cloudflare Web Bot Auth referencedevelopers.cloudflare.com
- 5.Hacker News discussion of agentic checkout and machine-readable commercenews.ycombinator.com
- 6.Shopify community thread on a theme and an app both emitting product markupcommunity.shopify.com
Written by
EdenRank Editorial Team
The product and editorial team documents repeatable ways to inspect AI-answer visibility, source evidence, and content operations.
Expertise
Want insights like this for your own brand?
Talk to the teamKeep building the topical graph.
Ecommerce Product Questions to Citation-Ready Assets: A 6-Phase Playbook
A six-phase operating playbook for turning ecommerce product questions into owned, testable assets with an explicit validation and rerun log.
How to Optimize Schema Markup for AI Engines, Not Just Google
Schema tuned only for Google's star ratings and FAQ dropdowns can still leave an AI engine unable to tell who you are. Here is the schema that actually resolves entity identity.
Product Data Contracts for AI Buying Agents: Build, Validate, and Monitor
Give every product claim an owner, source, timestamp, validation rule, and explicit unknown state before an agent reads it.