> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asva-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# UCP Implementation: Checklist and Go-Live Validation

> Complete UCP implementation checklist covering pre-requisites, capability discovery, catalog, checkout, post-purchase, and validation commands.

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](https://asva-ai.com/tools/readiness) 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

<Steps>
  <Step title="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](/ucp/well-known)
  </Step>

  <Step title="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](https://asva-ai.com/tools/readiness) after each iteration.

    See: [Product catalog endpoint](/ucp/product-catalog)
  </Step>

  <Step title="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](/ucp/checkout-and-payments)
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.

    ```bash theme={null}
    curl -X POST https://asva-ai.com/api/audit \
      -H "Authorization: Bearer $ASVA_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"domain": "yourstore.com"}'
    ```
  </Step>
</Steps>

## Testing commands

Run these commands manually to verify each endpoint before using the automated audit:

```bash theme={null}
# 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

| Error                                       | Likely cause                                                    | Fix                                                                                  |
| ------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `/.well-known/ucp` returns 404              | File not at domain root, or server blocks `.well-known` paths   | Move file to root domain; add explicit server route                                  |
| `Content-Type: text/plain`                  | Host defaults to plain text for unknown extensions              | Set `Content-Type: application/json` in server config or use a route handler         |
| Catalog returns empty `products` array      | Endpoint not wired to your data source                          | Connect to live inventory and verify query returns results                           |
| Checkout returns 500                        | PSP credentials missing or payment token invalid                | Check environment variables; verify PSP test/live mode                               |
| Price mismatch between catalog and checkout | Prices cached too long or expressed in dollars instead of cents | Reduce cache TTL to 5 minutes; confirm all prices are in smallest currency unit      |
| Variant ID not found at checkout            | Variant ID in catalog differs from ID passed in checkout        | Ensure `variant_id` in checkout matches `id` in the variant object from your catalog |

## Validation reference

| Check                              | Tool                                                     | API endpoint                  |
| ---------------------------------- | -------------------------------------------------------- | ----------------------------- |
| Full readiness audit               | [Readiness Score](https://asva-ai.com/tools/readiness)   | `POST /api/audit`             |
| Manifest generation and validation | [Manifest Generator](https://asva-ai.com/tools/manifest) | `POST /api/manifest`          |
| Feed quality check                 | Built into Readiness Score                               | —                             |
| Manifest-only validation           | [Manifest Generator](https://asva-ai.com/tools/manifest) | `POST /api/manifest/validate` |

## Choose your implementation path

<CardGroup cols={2}>
  <Card title="Google Merchant Center" icon="google" href="/ucp/google-merchant-center">
    Recommended for most brands. Builds on your existing Merchant Center feed.
  </Card>

  <Card title="Shopify" icon="shopify" href="/ucp/shopify">
    Native UCP on Shopify — fastest path for Shopify merchants.
  </Card>

  <Card title="Custom or headless" icon="code" href="/ucp/getting-started">
    Build UCP endpoints on any backend stack. Full control over data and logic.
  </Card>

  <Card title="Agency rollout" icon="building" href="/guides/playbooks">
    Multi-client playbook for agencies implementing UCP at scale.
  </Card>
</CardGroup>
