The Query Cookbook
Asset performance across RSA and Performance Max, in one query set
Ready-to-run GAQL for creative asset ratings across responsive search ads and Performance Max asset groups, so you can find weak headlines and images in one query set.
A weak headline behaves the same way whether it sits inside a responsive search ad or a Performance Max asset group: it drags the average down and Google quietly stops showing it. The two surfaces report asset ratings through different resources though, ad_group_ad_asset_view for Search, asset_group_asset for Performance Max, so most people audit one and forget the other. This pack covers both from one place.
Before you start
- You need Google Ads API access or a login with Query Builder access.
performance_labelis the field to watch throughout: it returnsLOW,GOODorBESTonce an asset has enough data, andPENDING,LEARNINGorUNRATEDbefore that.- Text assets return their content inline; image assets return an asset ID you resolve with the fourth query below.
The queries
RSA and search assets, every headline and description inside a responsive search ad, with its rating.
-- What it answers: performance rating for every headline and description inside a responsive search ad
SELECT
campaign.name,
ad_group.name,
ad_group_ad_asset_view.field_type,
ad_group_ad_asset_view.performance_label,
asset.text_asset.text
FROM ad_group_ad_asset_view
WHERE campaign.advertising_channel_type = 'SEARCH'
Performance Max assets, headlines, descriptions and images inside every asset group.
-- What it answers: performance rating for every headline, description and image inside a Performance Max asset group
SELECT
campaign.name,
asset_group.name,
asset_group_asset.field_type,
asset_group_asset.performance_label,
asset_group_asset.asset
FROM asset_group_asset
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
Asset-group listing, the status and health of the group itself, before you go hunting for weak assets inside it.
-- What it answers: the status and primary status of every Performance Max asset group
SELECT
campaign.name,
asset_group.name,
asset_group.status,
asset_group.primary_status
FROM asset_group
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
Asset lookup, resolving an asset ID back to its text or image, for joining onto the query above.
-- What it answers: the actual text or image behind an asset id returned by asset_group_asset
SELECT
asset.id,
asset.type,
asset.name,
asset.text_asset.text,
asset.image_asset.full_size.url
FROM asset
How to run these
Run the RSA query and the PMax query separately, they sit on different resources and cannot be combined into one SELECT. For Performance Max, asset_group_asset.asset returns a resource name, not the asset content, so run the asset lookup query and join the two result sets on asset.id in a spreadsheet or a script. In an Ads Script, the same text works inside AdsApp.report().
Reading the output
Group the RSA results by ad group and count how many assets are LOW against how many are BEST, an ad group with more than two or three LOW assets is usually starved of headline variety, not just weak copy. For Performance Max, cross-reference the asset-group listing first: a group with a primary_status other than ELIGIBLE will show poor asset performance for structural reasons that no amount of creative swapping fixes on its own.
This pack complements the RSA Asset Auditor script on this shelf, that script alerts on a schedule, this is the cookbook for pulling the same data on demand or into a different report. One limitation carries over from the Demand Gen pack: asset-view metrics are limited to impressions, clicks and conversions, and ratings can lag a live change by a day or more, so treat a just-changed asset's rating as not yet settled.