As with other campaign types, you can use
to retrieve attributes and performance metrics for Performance Max campaigns.
The following table outlines the options for reporting on Performance
Max campaigns organized by objective.
|Measurement objective||Associated resources||Examples|
|Campaign level performance||
||All Performance Max campaign performance|
|Asset group level performance||
|Retail campaign performance|
|Campaign criterion performance||
||Location criterion performance|
Campaign level performance
Viewing Performance Max campaign performance is similar to viewing the
performance for any other campaign type. However,
you must add a filter to include only campaigns with an
All Performance Max campaign performance
For example, the following query returns the performance for all Performance
Max campaigns over the last 30 days. You can also limit the results to a single
campaign by filtering on
SELECT metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM campaign WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND segments.date DURING LAST_30_DAYS
Asset group level performance
In addition to campaign reporting, reporting is available for
asset_group resources linked to your Performance Max
Asset group ad strength
Because Performance Max campaigns dynamically generate ads for each asset group
using the assets attached to that asset group, it's not possible to view
individual ad performance. However, the Google Ads API exposes the
to evaluate the performance of ads associated with different
The following query demonstrates how to view the ad strength of all asset
groups. You can further filter this query on
to view the ad strength of one or more specific asset groups. Alternatively, you
can add a
campaign filter as described previously, to compare the ad strength
of different asset groups within a specified campaign.
SELECT asset_group.id, asset_group.ad_strength FROM asset_group WHERE asset_group.status = 'ENABLED'
Asset group performance
asset_group resource exposes a variety of
metrics to measure individual asset group performance. The sample query below
demonstrates how to retrieve the performance metrics for each
a specified campaign.
SELECT asset_group.id, asset_group.name, metrics.conversions, metrics.conversions_value, metrics.cost_micros, metrics.clicks, metrics.impressions FROM asset_group WHERE asset_group.campaign = 'customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID'
It's possible to obtain asset level performance by using the
Asset performance with
SELECT asset_group_asset.asset, asset_group_asset.performance_label, asset_group_asset.status FROM asset_group_asset WHERE asset_group.id = ASSET_GROUP_ID AND asset_group_asset.status != 'REMOVED'
Top asset combinations
resource can be used to query the top performing combinations of assets in asset
groups. For example, the following query produces a list of the top asset
combinations in a specified
asset_group. Each row in the response contains a
messages of type
Each item in that list contains a list of the assets in the respective
combination represented as an
SELECT asset_group_top_combination_view.asset_group_top_combinations FROM asset_group_top_combination_view WHERE asset_group.id = ASSET_GROUP_ID
Taking this a step further, you can adjust this query to generate insights that
help with asset selection and better optimize Performance Max campaign
performance. The query below produces the top asset combinations by asset group
in a single campaign but limits the results to asset groups that have an
EXCELLENT. The resulting asset combinations represent the top asset
combinations in the best performing asset groups in the campaign.
SELECT asset_group_top_combination_view.asset_group_top_combinations, asset_group.ad_strength, asset_group.id FROM asset_group_top_combination_view WHERE asset_group.ad_strength IN ('GOOD', 'EXCELLENT') AND campaign.id = CAMPAIGN_ID
Retail campaign performance
There are a variety of ways to measure Performance Max retail campaigns based on your reporting objectives.
All retail campaigns performance
The most basic example is retrieving the performance of all Performance Max
retail campaigns using the methodology of the
All Performance Max campaign performance
example. In order to create a
Performance Max retail campaign, you must populate the
shopping_setting field in your
campaign with the
merchant_id of your
Merchant Center account. Adding the condition
campaign.shopping_setting.merchant_id IS NOT NULL to the
WHERE clause then
filters the result set to include only retail campaigns.
SELECT metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM campaign WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND campaign.shopping_setting.merchant_id IS NOT NULL AND segments.date DURING LAST_30_DAYS
Campaign performance for a
field can be used to target specific product feeds in your
Merchant Center account. You can filter on this field to get reporting metrics
for all campaigns associated with a specific product feed. For
example, the following query demonstrates how to retrieve metrics for all
Performance Max campaigns that target products intended to be promoted during
the winter season.
SELECT metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM campaign WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND campaign.shopping_setting.merchant_id IS NOT NULL AND campaign.shopping_setting.feed_label = 'WINTER-PRODUCTS' AND segments.date DURING LAST_30_DAYS
You can use the
shopping_performance_view to retrieve
product-level metrics across all of your Performance Max retail campaigns, as
shown in the query below. Filtering on
limits the results to Performance Max campaigns, and including
automatically filters those results to include only retail campaigns because
non-retail campaigns don't have any associated products.
SELECT segments.product_item_id, metrics.clicks, metrics.cost_micros, metrics.impressions, metrics.conversions, metrics.all_conversions, campaign.advertising_channel_type FROM shopping_performance_view WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND 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
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 across Performance Max campaigns and are compatible with the following reports.
customer(Aggregated for all campaigns)
The following cart data metrics can be used in reports, such as the
Performance Max for retail campaigns.
The following example demonstrates how these cart data metrics can be used to understand product level performance for Performance Max 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 = 'PERFORMANCE_MAX' 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 = 'PERFORMANCE_MAX' AND campaign.shopping_setting.merchant_id IS NOT NULL 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
Campaign Performance by Asset Group and product Group
The following example demonstrates how
be used to retrieve performance metrics by
The example segments the results by product partition tree node for each
asset_group in the specified campaign.
SELECT asset_group.id, asset_group_listing_group_filter.id, metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM asset_group_product_group_view WHERE campaign.id = CAMPAIGN_ID AND segments.date DURING LAST_30_DAYS
Asset group performance by product group
Alternatively, you can use the
get performance metrics by
but limit the results to a single
asset_group filtering condition to the
SELECT asset_group_listing_group_filter.id, metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM asset_group_product_group_view WHERE asset_group.id = ASSET_GROUP_ID AND segments.date DURING LAST_30_DAYS
Listing group filter dimension performance
Taking the previous example a step further, you can segment performance metrics
dimension. The following example demonstrates how to retrieve performance
metrics by product brand, which is done by adding
SELECT clause, which also automatically filters the results to only
asset_group_listing_group_filter entities with a product brand
You can perform a similar analysis by replacing
asset_group_listing_group_filter.case_value.product_brand with a different
dimension, such as
SELECT asset_group_listing_group_filter.case_value.product_brand.value, metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM asset_group_product_group_view WHERE asset_group.id = ASSET_GROUP_ID AND segments.date DURING LAST_30_DAYS
Campaign criterion performance
Campaign criterion reports are only populated for supported criterion types, which you can find in the create campaign criteria guide.
Location criterion performance
Here is an example of querying Performance Max location criteria data from
SELECT campaign.id, campaign.name, metrics.clicks, metrics.impressions, campaign_criterion.location.geo_target_constant FROM location_view WHERE campaign.status != 'REMOVED'