Skip to main content
Use this page as your implementation reference when building UCP from scratch or auditing an existing integration. Work through the checklist top-to-bottom — each section depends on the ones before it. The Readiness Score tool maps directly to these checks and will surface any gaps automatically.

Implementation checklist

Pre-implementation

Check
Domain has HTTPS configured
Google Merchant Center account is active (if using the Google path)
Product feed exists in a machine-readable format (JSON or XML)
Payment processor (PSP) integration is already in place
Policy pages are live: returns, privacy, and shipping

Capability discovery

Check
/.well-known/ucp is hosted at the domain root
File is valid JSON — no trailing commas, correct syntax
Response header is Content-Type: application/json
File is publicly accessible with no authentication required
Both product_catalog and checkout capabilities are declared

Catalog

Check
GET /ucp/products returns valid product objects
Each product has id, name, description, price, and availability
Products with multiple options have explicit variant objects
Prices are in the smallest currency unit (cents, not dollars)
Availability statuses use the correct enum values
Product images are absolute HTTPS URLs

Checkout

Check
POST /ucp/checkout accepts cart items and shipping address, returns shipping options
POST /ucp/checkout/:id/confirm accepts a payment token and places the order
Inventory is re-validated at confirmation time (not just at cart creation)
Structured error responses are returned for payment failure, out-of-stock, and invalid address
Idempotency keys are supported to prevent duplicate orders
expires_at is included in the cart creation response

Post-purchase

Check
GET /ucp/orders/:id returns current order status
Fulfillment and tracking updates are sent via webhook
Returns or cancellations endpoint is available (recommended)

Implementation steps

1

Implement capability discovery

Start with /.well-known/ucp. This is the fastest path to partial readiness — even before your catalog and checkout are live, publishing a manifest with your planned endpoints signals to Google and other agents that your domain is UCP-capable.See: UCP capability discovery
2

Expose your catalog endpoint

Build GET /ucp/products. Focus on getting the data shape right: explicit variant objects for every product with options, prices in cents, and correct availability enum values. Run the Readiness Score after each iteration.See: Product catalog endpoint
3

Implement checkout endpoints

Build cart creation (POST /ucp/checkout) and order confirmation (POST /ucp/checkout/:id/confirm). Integrate your PSP for payment token processing. Return structured errors for every failure mode.See: Checkout and payments
4

Add post-purchase hooks

Implement GET /ucp/orders/:id for order status lookups. Configure fulfillment webhooks so customers receive tracking updates inside the AI conversation without leaving it.
5

Validate and go live

Run the full Readiness Score audit. Fix any critical or high-severity gaps before submitting. If you’re using the Google path, submit your updated Merchant Center feed and check Diagnostics for UCP-specific errors.
curl -X POST https://asva-ai.com/api/audit \
  -H "Authorization: Bearer $ASVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "yourstore.com"}'

Testing commands

Run these commands manually to verify each endpoint before using the automated audit:
# Confirm the manifest is reachable and returns valid JSON
curl -I https://yourstore.com/.well-known/ucp
curl https://yourstore.com/.well-known/ucp | python3 -m json.tool

# Test the catalog endpoint
curl https://yourstore.com/ucp/products

# Dry-run a checkout request
curl -X POST https://yourstore.com/ucp/checkout \
  -H "Content-Type: application/json" \
  -d '{"items":[{"product_id":"prod_123","quantity":1}],"dry_run":true}'

# Check order status (replace with a real order ID)
curl https://yourstore.com/ucp/orders/order_abc123

Common errors and fixes

ErrorLikely causeFix
/.well-known/ucp returns 404File not at domain root, or server blocks .well-known pathsMove file to root domain; add explicit server route
Content-Type: text/plainHost defaults to plain text for unknown extensionsSet Content-Type: application/json in server config or use a route handler
Catalog returns empty products arrayEndpoint not wired to your data sourceConnect to live inventory and verify query returns results
Checkout returns 500PSP credentials missing or payment token invalidCheck environment variables; verify PSP test/live mode
Price mismatch between catalog and checkoutPrices cached too long or expressed in dollars instead of centsReduce cache TTL to 5 minutes; confirm all prices are in smallest currency unit
Variant ID not found at checkoutVariant ID in catalog differs from ID passed in checkoutEnsure variant_id in checkout matches id in the variant object from your catalog

Validation reference

CheckToolAPI endpoint
Full readiness auditReadiness ScorePOST /api/audit
Manifest generation and validationManifest GeneratorPOST /api/manifest
Feed quality checkBuilt into Readiness Score
Manifest-only validationManifest GeneratorPOST /api/manifest/validate

Choose your implementation path

Google Merchant Center

Recommended for most brands. Builds on your existing Merchant Center feed.

Shopify

Native UCP on Shopify — fastest path for Shopify merchants.

Custom or headless

Build UCP endpoints on any backend stack. Full control over data and logic.

Agency rollout

Multi-client playbook for agencies implementing UCP at scale.