As with other ad types, you can use [`GoogleAdsService.SearchStream`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService/SearchStream) to
retrieve product status and performance data for Shopping products.

Campaigns that support products from a Google Merchant Center feed have the
following dedicated reports:

- [Shopping Performance View](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view)
- [Product Group View](https://developers.google.com/google-ads/api/fields/v26/product_group_view)
- [Asset Group Product Group View](https://developers.google.com/google-ads/api/fields/v26/asset_group_product_group_view)
- [Shopping Product](https://developers.google.com/google-ads/api/fields/v26/shopping_product)
- [Cart Data Sales View](https://developers.google.com/google-ads/api/fields/v26/cart_data_sales_view) (available in v24 and later)
- [Final URL Expansion Asset View](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting#final-url-expansion-asset-view) (available for Shopping campaigns in v26 and later)

In addition, starting in v26, on Shopping campaigns,
[`final_url_expansion_asset_view`](https://developers.google.com/google-ads/api/fields/v26/final_url_expansion_asset_view) reports text customization assets served
when AI Max (`campaign.ai_max_setting.enable_ai_max = true`) and Final URL
expansion (`FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION = OPTED_IN`) are enabled.
See the [Final URL expansion asset view](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting#final-url-expansion-asset-view)
section for query requirements and an example.

> [!NOTE]
> **Note:** Both `shopping_performance_view` and `shopping_product` return metrics at a product level. `shopping_performance_view` provides the historical state of a product that has served ads, whereas `shopping_product` provides the current state of a product whether it has served ads or not. Use `shopping_product` primarily to assess the current state of a product and any issues stopping it from being used by a campaign.

## The Shopping Performance View

The [Shopping Performance View](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view) provides aggregated historical reporting
statistics for products by attributes such as [`product_item_id`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#segments.product_item_id).

It supports all campaign types that utilize product feeds from Google Merchant
Center, including Shopping, Performance Max, Demand Gen, Video, App, and Display
campaigns.

> [!NOTE]
> **Note:** Starting **June 15, 2026**, the Shopping Performance View includes data from all Performance Max networks. You may notice a one-time increase in reported metrics for Performance Max campaigns as data from previously excluded networks (such as YouTube) are incorporated.

The Shopping Performance View captures the state of the product at the time the
relevant metrics were recorded. This includes segments such as
[`product_title`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#segments.product_title), which might have changed since the metric was recorded.

`shopping_performance_view` also supports the following segments and metrics:

- [`segments.ad_sub_network_type`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#segments.ad_sub_network_type) (also supported in `product_group_view` and `asset_group_product_group_view`).
- Conversion-date segmented metrics: `metrics.conversions_by_conversion_date`, `metrics.all_conversions_by_conversion_date`, `metrics.conversions_value_by_conversion_date`, `metrics.all_conversions_value_by_conversion_date`, `metrics.value_per_conversions_by_conversion_date`, and `metrics.value_per_all_conversions_by_conversion_date`.
- Competitive impression share metrics: `metrics.search_budget_lost_impression_share`, `metrics.search_rank_lost_impression_share`, `metrics.search_budget_lost_absolute_top_impression_share`, and `metrics.search_rank_lost_absolute_top_impression_share`.
- **Available in v24 and later:** The [`segments.conversion_attribution_event_type`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#segments.conversion_attribution_event_type) segment and the `metrics.all_*` [cart data metrics](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting#product-performance) (which report cart data across all conversions, including non-biddable conversions).

Here is an example query that retrieves impressions, clicks, cost, conversions,
and all conversions for products by `product_item_id` with clicks in the last 30
days (sorted in descending order by all conversions, then conversions, then
clicks, then cost, then impressions):

    SELECT
      segments.product_item_id,
      metrics.clicks,
      metrics.cost_micros,
      metrics.impressions,
      metrics.conversions,
      metrics.all_conversions
    FROM shopping_performance_view
    WHERE segments.date DURING LAST_30_DAYS
      AND metrics.clicks > 0
    ORDER BY
      metrics.all_conversions DESC,
      metrics.conversions DESC,
      metrics.clicks DESC,
      metrics.cost_micros DESC,
      metrics.impressions DESC

## Attribution logic for product reporting

Product-level reports use a specific attribution framework to credit performance
to individual products when multiple products appear in a single ad.

### Financial metrics

Financial metrics, such as `metrics.cost_micros` and `metrics.conversions`, are
calculated to ensure their sum across all products doesn't exceed the
campaign-level reports.

Direct interactions
:   When user intent is clear and tied to a single product (such as a click
    directly on a product), 100% of the associated cost and conversion credit is
    attributed to that specific product.

Indirect interactions
:   When user intent is directed at the ad as a whole (for example, if the user
    clicks a headline, Call-to-Action button, or a video), the associated cost and
    conversion credit is distributed uniformly across all products served in that
    particular ad.

### Interaction metrics

Interaction metrics, such as `metrics.impressions` and `metrics.clicks`, measure
product-specific engagement.

For impressions, the count is incremented for **every product** included in the
ad when the event occurs, regardless of whether the product was visible in the
user's viewport. Because of this, the sum of impressions across all products in
a report may be significantly higher than the corresponding campaign-level
totals.

Conversely, `metrics.clicks` only measures clicks that occurred on that
specific product. In the Google Ads UI, the `metrics.clicks` field is explicitly
labeled as **Product Clicks**.

## Product Group View

The [Product Group View](https://developers.google.com/google-ads/api/fields/v26/product_group_view) provides aggregated reporting statistics for
[Shopping listing groups](https://developers.google.com/google-ads/api/docs/shopping-ads/create-listing-groups) (referred to as *product groups* in the UI). See
the Performance Max reporting guide for [Asset Group Product Group View](https://developers.google.com/google-ads/api/performance-max/retail-reporting#campaign-performance-asset-product-group)
examples.

Here is an example query that retrieves impressions, clicks, conversions, and
all conversions for Shopping listing groups by campaign with impressions in the
last 30 days (sorted in descending order by all conversions, then conversions,
then clicks, then impressions):

    SELECT
      campaign.name,
      metrics.impressions,
      metrics.clicks,
      metrics.conversions,
      metrics.all_conversions
    FROM product_group_view
    WHERE segments.date DURING LAST_30_DAYS
      AND metrics.impressions > 0
    ORDER BY
      metrics.all_conversions DESC,
      metrics.conversions DESC,
      metrics.clicks DESC,
      metrics.impressions DESC

## The Shopping Product report

The [Shopping Product](https://developers.google.com/google-ads/api/fields/v26/shopping_product) report provides the attributes and reporting
statistics for products that exist in Google Merchant Center accounts linked to
the Google Ads account. This report can be used to inspect statistics at a
customer, campaign, and ad group level. It supports Shopping, Performance Max,
Demand Gen, Video, and (in v24 and later) App campaigns. You can also query
[`shopping_product.product_image_uri`](https://developers.google.com/google-ads/api/fields/v26/shopping_product#shopping_product.product_image_uri) to retrieve the URI of the product
image provided by the merchant.

Here is an example query that retrieves impressions, clicks, conversions, and
all conversions for the last 30 days (sorted in descending order by all
conversions, then conversions, then clicks, then impressions) for all Shopping
products from all linked Google Merchant Center accounts:

    SELECT
      shopping_product.resource_name,
      shopping_product.item_id,
      shopping_product.feed_label,
      shopping_product.merchant_center_id,
      metrics.clicks,
      metrics.impressions,
      metrics.conversions,
      metrics.all_conversions
    FROM shopping_product
    WHERE segments.date DURING LAST_30_DAYS
    ORDER BY
      metrics.all_conversions DESC,
      metrics.conversions DESC,
      metrics.clicks DESC,
      metrics.impressions DESC

See the [Reporting guide](https://developers.google.com/google-ads/api/docs/reporting/overview) for more details on queries.

### Performance considerations

The Shopping Product report can return a significant amount of data when an
account is linked to a large number of products. The following recommendations
can assist with improving the performance of your GAQL queries:

- Queries at the campaign and ad group level are usually quicker than those at the account level, as they are likely to contain fewer products and require access to less data.
- The more fields and metrics in the `SELECT` clause, the slower the response time. Select only the fields and metrics you require in the query.
- Products with one or more issues return more data. You can filter by `shopping_product.status` in the `WHERE` clause to understand which products are likely to return issues that have caused the relevant status.

### Common use cases for the Shopping Product report

The [Shopping Product](https://developers.google.com/google-ads/api/fields/v26/shopping_product) report provides flexible access to product information
for campaigns that utilize product feeds. It can give you insights into the
status of products from Google Merchant Center accounts, as well as ads-specific
information such as performance metrics and issues that are preventing products
from serving ads.

This section covers some typical use cases similar to those possible in the
[Products](https://ads.google.com/aw/products) view in the Google Ads UI.

The `issues` field for `shopping_product` is similar to [`ProductStatus`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.products#ProductStatus) in
the Merchant API, with the addition of issues that are specific to Google Ads.
To check if the issue needs to be solved in Google Merchant Center or Google
Ads, first check the `shopping_product.issues.documentation` field of the
response, which includes a Help Center article to assist.

### Product statuses (Account level)

Specifying the report without filters for campaign or ad group returns all
products at the account level.

It supports metrics, status, and issues from all campaigns in the account of
type:

- Shopping
- Performance Max

This query lets you see the status of the product, for example `NOT_ELIGIBLE`,
and a list of issues specific to the product that have resulted in the given
status:

    SELECT
      shopping_product.resource_name,
      shopping_product.merchant_center_id,
      shopping_product.channel,
      shopping_product.language_code,
      shopping_product.feed_label,
      shopping_product.item_id,
      shopping_product.status,
      shopping_product.issues
    FROM shopping_product

### Product statuses (Campaign level)

Specifying the report with a campaign resource as part of the `WHERE` clause
returns all products included in the selected campaign.

It is supported by the following campaign types that can utilize product feeds:

- Shopping
- Performance Max
- Demand Gen
- Video
- App (available in v24 and later)

> [!NOTE]
> **Note:** For Demand Gen, Video, and (in v24 and later) App campaigns, only the `impressions`, `clicks`, and `ctr` metrics are supported. In addition, `shopping_product.status` and `shopping_product.issues` are not supported for App campaigns.

This query lets you see the status of each product included in a given campaign,
including the issues that are causing the status. For example, a paused campaign
affects the product status:

    SELECT
      shopping_product.resource_name,
      shopping_product.campaign,
      campaign.name,
      shopping_product.merchant_center_id,
      shopping_product.channel,
      shopping_product.language_code,
      shopping_product.feed_label,
      shopping_product.item_id,
      shopping_product.status,
      shopping_product.issues
    FROM shopping_product
    WHERE
      shopping_product.campaign = 'customers/<CUSTOMER_ID>/campaigns/<CAMPAIGN_ID>'

### Product statuses (Ad group level)

Specifying the report with **both** an ad group resource and a campaign resource
as part of the `WHERE` clause returns all products included in the selected
campaign. The metrics, status, and issues of the product reflect whether it is
included or excluded from the selected ad group.

It is supported by the following campaign types:

- Shopping
- Demand Gen
- Video
- App (available in v24 and later; supports `impressions`, `clicks`, and `ctr` metrics only, and does not support `status` or `issues`)

This query lets you see the status of the product with respect to that ad group.
It lets you confirm product group filters (at the ad group level) are being
applied correctly and check the status of each product:

    SELECT
      shopping_product.resource_name,
      shopping_product.campaign,
      campaign.name,
      shopping_product.ad_group,
      ad_group.name,
      shopping_product.merchant_center_id,
      shopping_product.channel,
      shopping_product.language_code,
      shopping_product.feed_label,
      shopping_product.item_id,
      shopping_product.status,
      shopping_product.issues
    FROM shopping_product
    WHERE
      shopping_product.campaign = 'customers/<CUSTOMER_ID>/campaigns/<CAMPAIGN_ID>'
      AND shopping_product.ad_group =
        'customers/<CUSTOMER_ID>/adGroups/<AD_GROUP_ID>'

> [!NOTE]
> **Note:** Both the campaign **and** ad group must be specified in the `WHERE` clause. If one or the other is not present, the query results in one of the following errors: `MISSING_CAMPAIGN_FILTER` or `MISSING_AD_GROUP_FILTER`.

### Product metrics, filtered by date (Account level)

Specifying the report with a date or date range in the `WHERE` clause returns
metrics for all products at the account level for the specified time period,
regardless of whether the metrics are non-zero.

You cannot select `segments.date`; doing so results in an
`UNSUPPORTED_DATE_SEGMENTATION` error.

This query lets you see the performance of each product for a given day or other
compatible date range, aggregated across all campaigns:

    SELECT
      shopping_product.resource_name,
      shopping_product.merchant_center_id,
      shopping_product.channel,
      shopping_product.language_code,
      shopping_product.feed_label,
      shopping_product.item_id,
      metrics.clicks,
      metrics.impressions,
      metrics.cost_micros
    FROM shopping_product
    WHERE
      segments.date DURING LAST_30_DAYS

## Product performance with cart data

Retail advertisers can access relevant sales and profit metrics such as Revenue,
Gross Profit, Gross Profit Margin, and Units sold. These metrics are available
to all advertisers who implement [Conversions with cart data](https://support.google.com/google-ads/answer/9028254) across
Shopping campaigns and are compatible with the following reports:

- [`ad_group`](https://developers.google.com/google-ads/api/fields/v26/ad_group)
- [`ad_group_ad`](https://developers.google.com/google-ads/api/fields/v26/ad_group_ad)
- [`campaign`](https://developers.google.com/google-ads/api/fields/v26/campaign)
- [`cart_data_sales_view`](https://developers.google.com/google-ads/api/fields/v26/cart_data_sales_view) (available in v24 and later)
- [`customer`](https://developers.google.com/google-ads/api/fields/v26/customer) (Aggregated for all campaigns)
- [`product_group_view`](https://developers.google.com/google-ads/api/fields/v26/product_group_view)
- [`shopping_performance_view`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view)
- [`shopping_product`](https://developers.google.com/google-ads/api/fields/v26/shopping_product) (for `metrics.all_*` cart data metrics in v24 and later)

The following cart data metrics can be used in reports, such as the
[`shopping_performance_view`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view), for Shopping campaigns:
[`metrics.average_cart_size`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.average_cart_size)  
[`metrics.average_order_value_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.average_order_value_micros)  
[`metrics.cost_of_goods_sold_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.cost_of_goods_sold_micros)  
[`metrics.cross_sell_cost_of_goods_sold_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.cross_sell_cost_of_goods_sold_micros)  
[`metrics.cross_sell_gross_profit_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.cross_sell_gross_profit_micros)  
[`metrics.cross_sell_revenue_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.cross_sell_revenue_micros)  
[`metrics.cross_sell_units_sold`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.cross_sell_units_sold)  
[`metrics.gross_profit_margin`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.gross_profit_margin)  
[`metrics.gross_profit_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.gross_profit_micros)  
[`metrics.lead_cost_of_goods_sold_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.lead_cost_of_goods_sold_micros)  
[`metrics.lead_gross_profit_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.lead_gross_profit_micros)  
[`metrics.lead_revenue_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.lead_revenue_micros)  
[`metrics.lead_units_sold`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.lead_units_sold)  
[`metrics.orders`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.orders)  
[`metrics.revenue_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.revenue_micros)  
[`metrics.units_sold`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.units_sold)

In v24 and later, the following cart data metrics are also available to report
across all conversions (including non-biddable conversions):
[`metrics.all_average_cart_size`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_average_cart_size)  
[`metrics.all_average_order_value_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_average_order_value_micros)  
[`metrics.all_cost_of_goods_sold_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_cost_of_goods_sold_micros)  
[`metrics.all_cross_sell_cost_of_goods_sold_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_cross_sell_cost_of_goods_sold_micros)  
[`metrics.all_cross_sell_gross_profit_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_cross_sell_gross_profit_micros)  
[`metrics.all_cross_sell_revenue_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_cross_sell_revenue_micros)  
[`metrics.all_cross_sell_units_sold`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_cross_sell_units_sold)  
[`metrics.all_gross_profit_margin`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_gross_profit_margin)  
[`metrics.all_gross_profit_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_gross_profit_micros)  
[`metrics.all_lead_cost_of_goods_sold_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_lead_cost_of_goods_sold_micros)  
[`metrics.all_lead_gross_profit_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_lead_gross_profit_micros)  
[`metrics.all_lead_revenue_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_lead_revenue_micros)  
[`metrics.all_lead_units_sold`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_lead_units_sold)  
[`metrics.all_orders`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_orders)  
[`metrics.all_revenue_micros`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_revenue_micros)  
[`metrics.all_units_sold`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view#metrics.all_units_sold)

> [!NOTE]
> **Note:** Cart data metrics are not available until conversions have been recorded for the associated products. Queries against [`shopping_performance_view`](https://developers.google.com/google-ads/api/fields/v26/shopping_performance_view) can take longer to execute for accounts with a large number of products, even with filters applied.

The following example shows how cart data metrics can be used to analyze
product-level performance for Shopping campaigns in the last 30 days:

    SELECT
      segments.product_item_id,
      segments.product_title,
      metrics.average_cart_size,
      metrics.average_order_value_micros,
      metrics.conversions,
      metrics.conversions_value,
      metrics.gross_profit_micros,
      metrics.gross_profit_margin,
      metrics.revenue_micros,
      metrics.units_sold,
      campaign.advertising_channel_type
    FROM shopping_performance_view
    WHERE campaign.advertising_channel_type = 'SHOPPING'
      AND segments.date DURING LAST_30_DAYS
      AND metrics.conversions > 0
    ORDER BY
      metrics.gross_profit_margin DESC,
      metrics.revenue_micros DESC,
      metrics.conversions_value DESC

## Campaign performance with cart data

Cart data metrics can be used at the campaign level and can be combined with
other performance metrics such as impressions, clicks, and cost:

    SELECT
      campaign.id,
      campaign.name,
      campaign.advertising_channel_type,
      metrics.impressions,
      metrics.clicks,
      metrics.conversions,
      metrics.cost_micros,
      metrics.average_order_value_micros,
      metrics.gross_profit_micros,
      metrics.gross_profit_margin
    FROM campaign
    WHERE campaign.advertising_channel_type = 'SHOPPING'
      AND segments.date DURING LAST_30_DAYS
    ORDER BY
      metrics.gross_profit_margin DESC,
      metrics.average_order_value_micros DESC,
      metrics.cost_micros DESC,
      metrics.conversions DESC,
      metrics.clicks DESC,
      metrics.impressions DESC

## Final URL expansion asset view

Starting in v26, you can use
[`final_url_expansion_asset_view`](https://developers.google.com/google-ads/api/fields/v26/final_url_expansion_asset_view) to measure asset-level performance
for text customization assets served on Shopping campaigns when AI Max
(`campaign.ai_max_setting.enable_ai_max = true`) and Final URL expansion
(`FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION = OPTED_IN`) are enabled.

When querying `final_url_expansion_asset_view`, follow these filtering and field
selection rules:

- Queries on `final_url_expansion_asset_view` must filter on at least one of `campaign.advertising_channel_type`, `campaign` (`campaign.id`, `campaign.resource_name`, or `final_url_expansion_asset_view.campaign`), or `ad_group` (`ad_group.id`, `ad_group.resource_name`, or `final_url_expansion_asset_view.ad_group`); omitting all of them returns [`FinalUrlExpansionAssetViewError.MISSING_REQUIRED_FILTER`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#missing_required_filter).
- When querying `final_url_expansion_asset_view` for Shopping campaigns at the account or campaign level, you must filter by `campaign.advertising_channel_type = 'SHOPPING'` (or filter by a single ad group using `=`). Filtering by a campaign (`campaign.id`, `campaign.resource_name`, or `final_url_expansion_asset_view.campaign`) also requires `campaign.advertising_channel_type = 'SHOPPING'`; omitting it returns [`FinalUrlExpansionAssetViewError.REQUIRES_ADVERTISING_CHANNEL_TYPE_FILTER`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#requires_advertising_channel_type_filter), whereas filtering by a single `ad_group` satisfies the filter requirement on its own.
- Filters on `campaign.advertising_channel_type`, `campaign`, or `ad_group` must use the `=` operator on a single value; using `IN` or multiple conditions for the same resource type returns [`FinalUrlExpansionAssetViewError.REQUIRES_FILTER_BY_SINGLE_RESOURCE`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#requires_filter_by_single_resource).
- For Shopping campaigns, you can select and filter by `ad_group` fields, but you cannot select `asset_group` fields. Selecting `asset_group` fields on Shopping campaigns (or when filtering by `ad_group`) returns [`FinalUrlExpansionAssetViewError.CANNOT_SELECT_ASSET_GROUP`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#cannot_select_asset_group) (or [`CANNOT_SELECT_BOTH_AD_GROUP_AND_ASSET_GROUP`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#cannot_select_both_ad_group_and_asset_group) when `ad_group` fields are also selected). Filtering by `asset_group` while selecting `ad_group` fields returns [`CANNOT_SELECT_AD_GROUP`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#cannot_select_ad_group), and filtering by both `ad_group` and `asset_group` returns [`CANNOT_FILTER_BY_BOTH_AD_GROUP_AND_ASSET_GROUP`](https://developers.google.com/google-ads/api/reference/rpc/v26/FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError#cannot_filter_by_both_ad_group_and_asset_group).

The following query retrieves asset-level performance metrics for Shopping
campaigns over the last 30 days:

    SELECT
      campaign.id,
      campaign.name,
      campaign.advertising_channel_type,
      ad_group.id,
      final_url_expansion_asset_view.asset,
      final_url_expansion_asset_view.field_type,
      final_url_expansion_asset_view.final_url,
      final_url_expansion_asset_view.status,
      metrics.impressions,
      metrics.clicks,
      metrics.conversions
    FROM final_url_expansion_asset_view
    WHERE
      campaign.advertising_channel_type = 'SHOPPING'
      AND segments.date DURING LAST_30_DAYS