You may already have product schema, shopping feeds, and commerce APIs, yet still not know whether your store is ready for an AI agent to recommend an item, verify the offer, and help complete a purchase. That uncertainty is the real protocol problem. The question is not simply which acronym to support, but whether your product facts and transaction controls survive a machine-to-machine buying journey.
The safest approach is to separate protocol compatibility from commerce readiness. Build one reliable commerce core, then connect protocols to it through controlled adapters. That gives you a practical path into Google UCP and OpenAI ACP without duplicating pricing, inventory, checkout, or policy logic for every new interface.
Choose the commerce job before you choose the protocol
An agentic commerce protocol is an interoperability contract. It defines how participating systems exchange commerce information or request actions. That contract matters, but it does not replace your catalog, pricing engine, order system, payment flow, or fulfillment operation.
Start by naming the buyer journey you want an agent to support. “We support agentic commerce” is too vague to test. “An agent can identify the correct variant, verify the current offer, create a cart, and return a checkout handoff” is specific enough to build and audit.
| Commerce job | Required source of truth | Failure to prevent |
|---|---|---|
| Discover and compare | Catalog, product identity, variants, attributes, and relationships | The agent selects the wrong product or compares unlike variants |
| Verify an offer | Current price, currency, availability, eligibility, and fulfillment conditions | The agent presents an expired, unavailable, or inapplicable offer |
| Create a cart or checkout handoff | Cart, promotion, customer, and checkout services | A discount is misapplied, a cart is corrupted, or the buyer loses context |
| Complete a bounded action | Authentication, authorization, payment, and order services | An unauthorized or duplicate transaction is created |
| Confirm and support an order | Order status, fulfillment, cancellation, and return systems | The agent promises an action that the merchant cannot honor |
A protocol may cover all, some, or none of those jobs. Build a requirements matrix from the actual specification and label each capability as supported, externally handled, unsupported, or subject to approval. Do not turn partial support into a blanket compatibility claim.
This also prevents a common architecture mistake: wiring business rules directly into a protocol integration. Protocol-specific code should translate requests and responses. Your existing commerce services should continue deciding what an item costs, whether it can be sold, which promotion applies, and what happens after the order.
Make product and offer data internally consistent

An AI agent cannot resolve contradictions by calling them “close enough.” If a product page says an item is available, a feed carries yesterday’s price, and the transaction API rejects the variant, the agent has no trustworthy offer to present. More interfaces amplify that inconsistency rather than repairing it.
Build a field-level inventory before adding endpoints. For every fact exposed to an agent, record its format, owner, update path, and authoritative system.
- Stabilize identity. Give each sellable product and variant a durable internal identifier. Use the same identifier wherever your catalog, feed, structured data, cart, and order systems can carry it.
- Separate products from offers. Descriptive attributes such as material or compatibility do not change on the same schedule as price, availability, delivery options, or promotion eligibility. Model them separately so mutable offer data can be refreshed without rebuilding the whole product record.
- Represent variants explicitly. Size, color, capacity, pack quantity, and other purchase-defining options should resolve to an exact sellable item. Do not make an agent infer the variant from an image filename or a paragraph of marketing copy.
- State conditions alongside claims. A price or delivery promise without its currency, region, eligibility, or other applicable condition is incomplete. Return the condition with the value rather than expecting the agent to recover it elsewhere.
- Connect policies to the affected offer. Return, cancellation, warranty, subscription, and fulfillment terms should be retrievable in the context where they apply. A generic policy page is useful to people, but it may not resolve an exception attached to one product or offer.
- Define conflict precedence. Decide which system wins when the page, JSON-LD, feed, cache, and transaction service disagree. Mutable facts should normally be revalidated against the system that can actually accept the transaction.
JSON-LD remains useful, but it serves a different role from a transaction API. Structured data helps machines interpret what a public page describes. It does not reserve inventory, authorize a discount, create an order, or prove that a cached offer is still valid. Keep page content, markup, feeds, and APIs aligned, then revalidate consequential facts when the buyer moves from discovery to action.
Give each response an unambiguous outcome. If current availability cannot be confirmed, return an unavailable or indeterminate state and a safe next step. Do not substitute an old value, invent a delivery promise, or turn missing data into a confident answer.
Put explicit controls around every agent action
A discovery request is mostly informational. Creating a cart changes state. Placing an order, cancelling one, or requesting a refund can affect money and customer rights. Your controls should become stricter as the consequence increases.
Put a protocol adapter between the external agent interface and your internal commerce services. The adapter should translate fields, enforce the supported capability set, reject malformed requests, and produce protocol-compatible errors. It should not become a second pricing engine or an alternative order-management system.
- Authenticate the caller. Establish which agent, platform, account, or delegated identity is making the request.
- Authorize the exact action. Knowing who called is not enough. Check whether that identity may read an offer, create a cart, place an order, cancel an order, or request another state change.
- Revalidate server-side. Price, availability, promotion eligibility, shipping conditions, and order totals must be checked by the commerce system before commitment. Values repeated by the agent are inputs to verify, not facts to trust.
- Make retries safe. State-changing requests need a stable operation identifier or equivalent idempotency control. A timeout followed by a retry must not create a second order or duplicate another irreversible action.
- Bound delegated authority. Limit what the agent can buy, change, cancel, or approve. When the requested action exceeds that authority, require an explicit user decision rather than stretching the scope silently.
- Preserve an audit trail. Record the caller, requested action, authorization result, validated commercial state, resulting transaction, and error outcome. Keep sensitive information out of prompts and general-purpose traces.
- Return recoverable errors. Tell the agent whether it should refresh an offer, request a missing selection, ask the buyer for confirmation, hand off to checkout, or stop. Do not expose credentials or sensitive internal details in the explanation.
Route payment credentials and personal data through your approved payment, identity, consent, and privacy flows. An agent conversation or model trace is not a safe substitute for those systems. If the agent only needs to hand the buyer into checkout, give it a constrained handoff mechanism rather than unnecessary access to the full payment process.
Confirmation also needs state awareness. If the price, item, quantity, delivery terms, or another material condition changes after the buyer’s instruction, stop and present the changed state before committing. Agreement to one offer is not blanket permission to accept a different one.
Optimize discovery and transaction readiness separately
Protocol support is not a ranking switch. An agent still needs to discover your products, understand them, decide whether they fit the request, and obtain a valid path to action. A working checkout endpoint does not compensate for vague product information, just as excellent content cannot complete a transaction when the offer cannot be verified.
Treat the journey as four connected layers:
- Discovery: Can the system find a canonical product page or catalog record for the buyer’s need?
- Understanding: Can it identify the product, variant, attributes, compatibility, constraints, and applicable policies without guessing?
- Decision support: Does your content answer the questions that distinguish this option from alternatives?
- Action: Can the agent verify the live offer and move into a controlled cart, checkout, or order flow?
Your public content should do more than repeat a product name and a promotional claim. State concrete specifications, intended use, compatibility, included components, variant differences, purchase conditions, and limitations where they matter. Use consistent terminology across prose, tables, structured data, feeds, and APIs. If one surface calls an option a “starter pack” while another exposes only an unexplained internal code, automated matching becomes less reliable.
Keep canonical pages useful to people even when machines consume their data. Clear explanations help a buyer verify the recommendation and give answer engines grounded material to cite or summarize. The protocol should extend that experience into live commerce operations, not turn the website into a thin wrapper around an endpoint.
Measure these layers independently. If products are rarely selected, investigate discoverability, identity, attributes, and decision content. If products are selected but transactions fail, investigate offer freshness, authorization, validation, handoff, and error recovery. Combining both failures into one “AI traffic” metric hides the part you need to fix.
Roll out one bounded journey and test the failure paths

Do not begin by exposing every catalog action to every agent. Choose one journey with a clear owner, a known source of truth, and a reversible handoff where possible. A narrow implementation reveals data and control problems before they spread across the whole store.
- Define the journey. Write the starting request, required product decisions, supported actions, handoff point, completion signal, and responsible internal team.
- Write the field contract. List required and optional fields, identifiers, formats, authority, freshness expectations, and what happens when a value is absent.
- Write the action contract. For every state change, define authentication, authorization, validation, confirmation, retry handling, audit output, and safe failure response.
- Validate read-only behavior first. Confirm that product identity, variants, current offers, and policies resolve consistently before allowing the integration to alter carts or orders.
- Simulate state changes. Exercise order creation, retries, timeouts, revocation, changing prices, unavailable variants, expired promotions, and partial service failures without risking a real buyer’s money.
- Restrict the first live scope. Limit the supported catalog, actions, regions, accounts, or other meaningful dimensions until the operational signals are stable.
- Expand by evidence. Add capabilities only when the previous scope has reliable data, safe authorization, understandable errors, and an owner who can respond to exceptions.
Test cases that expose weak integrations
- The chosen variant goes out of stock after discovery but before checkout.
- The price or promotion changes between recommendation and commitment.
- A request times out after the order service succeeds, then the agent retries it.
- The buyer omits a purchase-defining option such as size, quantity, or configuration.
- The caller’s authorization is revoked during the session.
- An internal service succeeds while the protocol adapter fails to return the response.
- The requested shipping, cancellation, or return condition is not available for that offer.
- The agent requests an action outside its delegated scope.
A pass is not merely “the endpoint returned a response.” The response must preserve the correct commercial state, avoid duplicate effects, explain what the agent can do next, and leave an auditable record.
Measure the agent funnel, not just agent traffic
Give every metric a numerator, denominator, and operational owner. Useful measures include exact product-resolution rate, successful offer-verification rate, cart or handoff success, authorized action success, duplicate requests safely suppressed, policy exceptions, and completed orders associated with an agent-assisted journey. Track stale-data failures separately from authorization and checkout failures because they require different fixes.
Preserve the boundary between influence and completion. An agent referral, a protocol request, a cart creation, a checkout handoff, and a paid order are different events. Calling all of them conversions will overstate performance and make protocol decisions harder to defend.
Key takeaways
- Define the exact discovery or transaction journey before evaluating a protocol.
- Keep pricing, inventory, policy, checkout, and order rules in your core commerce systems.
- Use adapters to connect protocols rather than rebuilding business logic for each interface.
- Align product pages, JSON-LD, feeds, and APIs, but revalidate mutable facts before consequential actions.
- Require explicit authentication, action-level authorization, safe retries, bounded delegation, and audit records.
- Launch with a restricted journey, test failure states, and expand only when each stage has measurable reliability.
Your next move is to pick one sellable journey and document its fields, actions, authorities, and errors on a single implementation map. That map will show whether your immediate constraint is visibility, catalog quality, transaction safety, or protocol translation. Fix that constraint first, then add the interface that gives the journey a useful route into agentic commerce.















