GET /ucp/products endpoint is the primary interface between your inventory and AI agents. Agents call it to discover products, compare options, check availability, and identify the exact variant a customer wants before initiating checkout. If your catalog data is missing, malformed, or stale, agents cannot complete purchases — and customers get a broken experience.
Product object schema
A complete product object looks like this:Required product fields
string
required
Unique, stable product identifier. Must not change when product details are updated — agents and order systems rely on this ID for the full purchase lifecycle.
string
required
Clear, descriptive product name. Agents use this to match customer requests. Avoid internal codes or abbreviations.
string
required
Product description. Minimum 50 characters for adequate AI comprehension. For Google AI Mode eligibility, aim for 150+ characters.
integer
required
Price in the smallest currency unit. Cents for USD, pence for GBP, paisa for INR.
12999 means 12,999.string
required
ISO 4217 currency code (e.g.
"USD", "GBP", "INR").string
required
Stock status. Must be one of:
in_stock, out_of_stock, preorder, backorder.Optional but recommended fields
Variant structure
Every product with selectable options must expose variants as explicit objects. Agents cannot infer variant IDs or availability from a base product alone. Each variant object requires:string
required
Unique variant identifier. Passed as
variant_id in checkout requests.object
required
Key-value map of what makes this variant distinct. Common keys:
size, color, material, style.object
required
Variant-level price object with
amount and currency. May differ from the base product price.string
required
Per-variant availability status. A base product may be
in_stock even if some variants are out_of_stock.Pricing
Prices must always be in the smallest currency unit:Availability statuses
Pagination
For catalogs with more than 100 products, include apagination object so agents can fetch your full catalog in pages:
next URLs until the field is absent or null.
Filtering parameters
If your manifest declares"supports_search": true and lists supports_filters, agents can query your catalog with these query parameters:
string
Keyword search query (e.g.
?q=running+shoes).string
Filter by product category (e.g.
?category=footwear).integer
Minimum price in smallest currency unit (e.g.
?min_price=5000 for $50.00).integer
Maximum price in smallest currency unit (e.g.
?max_price=15000 for $150.00).string
Filter by stock status. One of:
in_stock, out_of_stock, preorder, backorder.Common issues
Missing variants causes checkout failure
Missing variants causes checkout failure
If a customer selects “size 10 black” and your catalog only has a base
prod_123 without variant objects, the agent cannot pass a variant_id to your checkout endpoint. Always add variant objects for any product that has options.Stale availability causes abandoned carts
Stale availability causes abandoned carts
If your catalog shows a product as
in_stock but it is actually sold out, the checkout will fail after the customer has already committed to the purchase. Sync inventory updates to your catalog within 5 minutes of any stock change.Prices in dollars instead of cents
Prices in dollars instead of cents
A price of
129 is interpreted as 129.00. Always express prices in the smallest currency unit. See the pricing examples above.Validate your catalog
Use the Readiness Score tool to check catalog health, or run the API:Next steps
Checkout and payments
Handle purchases with the checkout endpoint — cart creation, order confirmation, and PSP integration.
Feed specs and formatting
Prepare feeds for Google Merchant Center and ACP.