> [!WARNING]
> **Experimental:** This feature is in alpha (experimental) and is subject to change.

The Merchant Reports API lets you programmatically retrieve Universal
Commerce Protocol (UCP) checkout and conversion performance metrics across
Google surfaces, including AI Mode in Search and Gemini. These reports provide
the same performance insights available in the
[Merchant Center UCP analytics dashboard](https://developers.google.com/merchant/ucp/guides/tools/merchant-center/analytics),
helping you monitor conversion funnels, completed orders, cart transfers, and
product-level engagement.

The Reporting sub-API provides two views for analyzing UCP performance:

- **[`UcpAgenticPerformanceView`](https://developers.google.com/merchant/api/reference/rest/reports_v1alpha/accounts.reports.md.txt#UcpAgenticPerformanceView)
  (`ucp_agentic_performance_view`)**: Provides account-level conversion funnel, order, cancellation, and cart transfer metrics segmented by date and customer country.
- **[`UcpAgenticProductPerformanceView`](https://developers.google.com/merchant/api/reference/rest/reports_v1alpha/accounts.reports.md.txt#UcpAgenticProductPerformanceView)
  (`ucp_agentic_product_performance_view`)** : Provides product-level (`offer_id`) buy button click metrics segmented by date and customer country.

## Before you begin

Before querying the UCP performance views, make sure you meet the following
requirements:

- **Use the `v1alpha` endpoint** : Send your [MCQL](https://developers.google.com/merchant/api/guides/reports/query-language.md.txt) queries to the `v1alpha` [`accounts.reports.search`](https://developers.google.com/merchant/api/reference/rest/reports_v1alpha/accounts.reports/search.md.txt) method. For details on executing report requests, see the [Merchant Reports API Get started](https://developers.google.com/merchant/api/guides/reports/get-started.md.txt).
- **Supported account types** : Both `ucp_agentic_performance_view` and `ucp_agentic_product_performance_view` support leaf accounts (standalone accounts and individual sub-accounts) as well as [advanced accounts](https://support.google.com/merchants/answer/188487) (multi-client accounts or aggregator accounts). For details and examples, see [Query at the advanced account level](https://developers.google.com/merchant/api/guides/reports/ucp-performance-reports.md.txt#query-advanced-account).
- **Required date filter** : You must specify a condition on `date` in the `WHERE` clause of every query for both views.

## Analyze account-level UCP performance

Use `ucp_agentic_performance_view` to track your overall UCP conversion funnel,
from buy button clicks and account linking to completed purchases and cart
transfers.

### Currency and price metrics

`ucp_agentic_performance_view` handles currency and [`Price`](https://developers.google.com/merchant/api/reference/rest/Shared.Types/Price.md.txt)
metrics in the same way as
[performance reports](https://developers.google.com/merchant/api/guides/reports/performance-reports.md.txt#currency_and_price_metrics):

- **Price metrics** : The following metrics return a `Price` object
  containing both an `amount_micros` value and a `currency_code`:

  - `purchase_value`
  - `average_order_value`
  - `average_purchase_product_value`
  - `average_cart_value`
  - `average_cart_product_value`
- **Non-price metrics**: The following metrics don't have an associated
  currency:

  - `buy_button_clicks`
  - `accounts_linked`
  - `account_linking_attempts`
  - `account_linking_rate`
  - `purchase_count`
  - `cancellations`
  - `average_purchase_product_count`
  - `cart_transfers`
  - `average_cart_product_count`

> [!IMPORTANT]
> **Important:** Including funnel or count metrics (such as `buy_button_clicks`) in the same query as `Price` value metrics separates the returned rows by currency. Because metrics like `buy_button_clicks` don't have an associated currency on their own, combining them with `Price` metrics can split or omit rows without purchase values. To avoid this and get accurate totals, run two separate queries:

1. **Overall funnel and count metrics (currency-independent)**: Select only non-price metrics to get aggregate counts independent of currency.
2. **Purchase and cart value metrics (by currency)** : Select `Price` metrics together with their corresponding order and cart counts to analyze revenue and value per currency.

### Query 1: Retrieve overall funnel metrics (currency-independent)

Use the following query to retrieve overall conversion funnel, order count, and
cart transfer metrics independent of currency (with no `Price` value metrics
included):

```sql
SELECT
  date,
  account_id,
  customer_country_code,
  buy_button_clicks,
  accounts_linked,
  account_linking_attempts,
  account_linking_rate,
  purchase_count,
  cancellations,
  average_purchase_product_count,
  cart_transfers,
  average_cart_product_count
FROM ucp_agentic_performance_view
WHERE date = '2026-09-20'
```

> [!NOTE]
> **Note:** Because `average_cart_value` is a `Price` metric with an associated `currency_code`, omit it from your overall funnel query and include it in your purchase and cart value query instead.

The response returns aggregated funnel metrics for each customer country:

```json
{
  "results": [
    {
      "ucpAgenticPerformanceView": {
        "date": {
          "year": 2026,
          "month": 9,
          "day": 20
        },
        "accountId": "123456789",
        "customerCountryCode": "US",
        "buyButtonClicks": "420",
        "accountsLinked": "85",
        "accountLinkingAttempts": "125",
        "accountLinkingRate": 0.68,
        "purchaseCount": "64",
        "cancellations": "3",
        "averagePurchaseProductCount": 1.75,
        "cartTransfers": "52",
        "averageCartProductCount": 2.1
      }
    }
  ]
}
```

### Query 2: Retrieve purchase and cart value metrics (by currency)

Use the following query to retrieve purchase values, average order values, and
cart transfer values segmented by currency:

```sql
SELECT
  date,
  account_id,
  customer_country_code,
  purchase_count,
  purchase_value,
  average_order_value,
  average_purchase_product_count,
  average_purchase_product_value,
  average_cart_value,
  average_cart_product_value
FROM ucp_agentic_performance_view
WHERE date = '2026-09-20' AND purchase_count > 0
```

The response returns a separate row for each currency present in the purchase
or cart value metrics:

```json
{
  "results": [
    {
      "ucpAgenticPerformanceView": {
        "date": {
          "year": 2026,
          "month": 9,
          "day": 20
        },
        "accountId": "123456789",
        "customerCountryCode": "US",
        "purchaseCount": "64",
        "purchaseValue": {
          "amountMicros": "5120000000",
          "currencyCode": "USD"
        },
        "averageOrderValue": {
          "amountMicros": "80000000",
          "currencyCode": "USD"
        },
        "averagePurchaseProductCount": 1.75,
        "averagePurchaseProductValue": {
          "amountMicros": "45714285",
          "currencyCode": "USD"
        },
        "cartTransfers": "52",
        "averageCartValue": {
          "amountMicros": "94500000",
          "currencyCode": "USD"
        },
        "averageCartProductCount": 2.1,
        "averageCartProductValue": {
          "amountMicros": "45000000",
          "currencyCode": "USD"
        }
      }
    }
  ]
}
```

## Analyze product-level UCP performance

Use `ucp_agentic_product_performance_view` to see which individual products
receive buy button clicks directly from Google surfaces.

### Retrieve buy button clicks by product

Use the following query to retrieve product-level buy button clicks for a
specific date:

```sql
SELECT
  date,
  account_id,
  customer_country_code,
  offer_id,
  title,
  buy_button_clicks
FROM ucp_agentic_product_performance_view
WHERE date = '2026-09-20'
```

You can also omit `date` from the `SELECT` clause to aggregate clicks across a
date range using `BETWEEN`:

```sql
SELECT
  account_id,
  customer_country_code,
  offer_id,
  title,
  buy_button_clicks
FROM ucp_agentic_product_performance_view
WHERE date BETWEEN '2026-09-01' AND '2026-09-20'
ORDER BY buy_button_clicks DESC
```

The response returns the aggregated buy button clicks for each matching offer:

```json
{
  "results": [
    {
      "ucpAgenticProductPerformanceView": {
        "accountId": "123456789",
        "customerCountryCode": "US",
        "offerId": "sku-10042",
        "title": "Lightweight Running Shoes - Blue / Size 10",
        "buyButtonClicks": "38"
      }
    }
  ]
}
```

## Query at the advanced account level

You can query both `ucp_agentic_performance_view` and
`ucp_agentic_product_performance_view` by specifying an
[advanced account](https://support.google.com/merchants/answer/188487)
(multi-client account or aggregator account) in the `parent` parameter of the
[`accounts.reports.search`](https://developers.google.com/merchant/api/reference/rest/reports_v1alpha/accounts.reports/search.md.txt)
request, such as `accounts/{advanced_account_id}`.

In both views, the `account_id` column always holds the **leaf**
Merchant Center account ID (the individual sub-account ID when querying
under an advanced account, or the standalone account ID when querying a
standalone account). When querying at the advanced account level, whether you
include `account_id` in the `SELECT` clause determines how the metrics are
grouped:

- **Omit `account_id` (aggregated at the advanced account level)** : When `account_id` is not selected, the response aggregates metrics across all sub-accounts belonging to the advanced account.
- **Select `account_id` (broken down by sub-account)** : When `account_id` is selected, the response segments the stats by leaf `account_id`, returning separate rows for each sub-account under the advanced account.

### Retrieve aggregated metrics across an advanced account

To retrieve total UCP funnel metrics rolled up at the advanced account level,
send the request using your advanced account ID as the `parent` resource and
omit `account_id` from the `SELECT` clause:

```sql
SELECT
  date,
  customer_country_code,
  buy_button_clicks,
  accounts_linked,
  account_linking_attempts,
  account_linking_rate,
  purchase_count,
  cancellations
FROM ucp_agentic_performance_view
WHERE date = '2026-09-20'
```

The response returns a single aggregated row per date and customer country
across all sub-accounts of the advanced account:

```json
{
  "results": [
    {
      "ucpAgenticPerformanceView": {
        "date": {
          "year": 2026,
          "month": 9,
          "day": 20
        },
        "customerCountryCode": "US",
        "buyButtonClicks": "730",
        "accountsLinked": "140",
        "accountLinkingAttempts": "200",
        "accountLinkingRate": 0.7,
        "purchaseCount": "110",
        "cancellations": "5"
      }
    }
  ]
}
```

### Retrieve metrics broken down by sub-account

To break down the results by sub-account when querying an advanced account,
include `account_id` in the `SELECT` clause:

```sql
SELECT
  date,
  account_id,
  customer_country_code,
  buy_button_clicks,
  accounts_linked,
  account_linking_attempts,
  account_linking_rate,
  purchase_count,
  cancellations
FROM ucp_agentic_performance_view
WHERE date = '2026-09-20'
```

Because `account_id` always holds the leaf account ID, the response returns a
separate row for each sub-account under the advanced account:

```json
{
  "results": [
    {
      "ucpAgenticPerformanceView": {
        "date": {
          "year": 2026,
          "month": 9,
          "day": 20
        },
        "accountId": "123456789",
        "customerCountryCode": "US",
        "buyButtonClicks": "420",
        "accountsLinked": "85",
        "accountLinkingAttempts": "125",
        "accountLinkingRate": 0.68,
        "purchaseCount": "64",
        "cancellations": "3"
      }
    },
    {
      "ucpAgenticPerformanceView": {
        "date": {
          "year": 2026,
          "month": 9,
          "day": 20
        },
        "accountId": "987654321",
        "customerCountryCode": "US",
        "buyButtonClicks": "310",
        "accountsLinked": "55",
        "accountLinkingAttempts": "100",
        "accountLinkingRate": 0.55,
        "purchaseCount": "46",
        "cancellations": "2"
      }
    }
  ]
}
```