Reporting

  • Reporting for Demand Gen campaigns can be accessed at different levels, similar to other campaign types, including campaign-level, ad-level, and asset-level reporting using the Google Ads API.

  • Campaign-level reporting allows retrieval of attributes and performance metrics for Demand Gen campaigns, and clicks are filtered by click_type of CROSS_NETWORK.

  • Ad-level reporting supports retrieving data for the three types of Demand Gen ads: Demand Gen Multi-Asset Ad, Demand Gen Carousel Ad, and Demand Gen Video Responsive Ad.

  • Asset-level reporting provides access to specialized assets for Demand Gen carousel ads, including their attributes and metrics like impressions.

  • Legacy "Demand Gen video ad" types from the Google Ads frontend are not supported by the Google Ads API.

You can retrieve reporting attributes and performance metrics for Demand Gen campaigns at the campaign, ad, and asset levels.

Campaign-level reporting

As with other campaign types, you can use GoogleAdsService.SearchStream to retrieve attributes and performance metrics for Demand Gen campaigns:

SELECT
  campaign.id,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros
FROM campaign
WHERE campaign.advertising_channel_type = DEMAND_GEN

To segment clicks in reporting for Demand Gen campaigns by click type, filter by segments.click_type = CROSS_NETWORK:

SELECT
  campaign.id,
  segments.click_type,
  metrics.clicks
FROM campaign
WHERE campaign.advertising_channel_type = DEMAND_GEN
  AND segments.click_type = CROSS_NETWORK

To break down Demand Gen performance by channel (such as YOUTUBE, DISCOVER, GMAIL, MAPS, or CONTENT) and YouTube surface (YOUTUBE_INSTREAM, YOUTUBE_INFEED, YOUTUBE_SHORTS, or UNSEGMENTED), select both segments.ad_network_type and segments.ad_sub_network_type (note that segments.ad_sub_network_type must always be selected together with segments.ad_network_type):

SELECT
  campaign.id,
  segments.ad_network_type,
  segments.ad_sub_network_type,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.video_trueview_views
FROM campaign
WHERE campaign.advertising_channel_type = DEMAND_GEN

Ad-level reporting

The Google Ads API supports Demand Gen multi-asset, carousel, video responsive, and product ads (DemandGenMultiAssetAdInfo, DemandGenCarouselAdInfo, DemandGenVideoResponsiveAdInfo, and DemandGenProductAdInfo). Use these queries with GoogleAdsService.SearchStream to retrieve their attributes and metrics:

SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_multi_asset_ad.marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.square_marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.portrait_marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.tall_portrait_marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.classic_display_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.logo_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.headlines,
  ad_group_ad.ad.demand_gen_multi_asset_ad.descriptions,
  ad_group_ad.ad.demand_gen_multi_asset_ad.business_name,
  ad_group_ad.ad.demand_gen_multi_asset_ad.call_to_action_text,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_MULTI_ASSET_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_carousel_ad.business_name,
  ad_group_ad.ad.demand_gen_carousel_ad.logo_image,
  ad_group_ad.ad.demand_gen_carousel_ad.headline,
  ad_group_ad.ad.demand_gen_carousel_ad.description,
  ad_group_ad.ad.demand_gen_carousel_ad.call_to_action_text,
  ad_group_ad.ad.demand_gen_carousel_ad.carousel_cards,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_CAROUSEL_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_video_responsive_ad.breadcrumb1,
  ad_group_ad.ad.demand_gen_video_responsive_ad.breadcrumb2,
  ad_group_ad.ad.demand_gen_video_responsive_ad.business_name,
  ad_group_ad.ad.demand_gen_video_responsive_ad.call_to_actions,
  ad_group_ad.ad.demand_gen_video_responsive_ad.companion_banners,
  ad_group_ad.ad.demand_gen_video_responsive_ad.descriptions,
  ad_group_ad.ad.demand_gen_video_responsive_ad.headlines,
  ad_group_ad.ad.demand_gen_video_responsive_ad.logo_images,
  ad_group_ad.ad.demand_gen_video_responsive_ad.long_headlines,
  ad_group_ad.ad.demand_gen_video_responsive_ad.videos,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.video_trueview_views
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_VIDEO_RESPONSIVE_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_product_ad.headline,
  ad_group_ad.ad.demand_gen_product_ad.description,
  ad_group_ad.ad.demand_gen_product_ad.logo_image,
  ad_group_ad.ad.demand_gen_product_ad.breadcrumb1,
  ad_group_ad.ad.demand_gen_product_ad.breadcrumb2,
  ad_group_ad.ad.demand_gen_product_ad.business_name,
  ad_group_ad.ad.demand_gen_product_ad.call_to_action,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_PRODUCT_AD

You can also query all Demand Gen ad types together in a single request:

SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_multi_asset_ad.headlines,
  ad_group_ad.ad.demand_gen_carousel_ad.headline,
  ad_group_ad.ad.demand_gen_video_responsive_ad.headlines,
  ad_group_ad.ad.demand_gen_product_ad.headline,
  ad_group_ad.ad.demand_gen_product_ad.description,
  ad_group_ad.ad.demand_gen_product_ad.business_name,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros
FROM ad_group_ad
WHERE ad_group_ad.ad.type IN (
  DEMAND_GEN_MULTI_ASSET_AD,
  DEMAND_GEN_CAROUSEL_AD,
  DEMAND_GEN_VIDEO_RESPONSIVE_AD,
  DEMAND_GEN_PRODUCT_AD
)

Asset-level reporting

Demand Gen campaigns have a specialized asset type for carousel cards (DEMAND_GEN_CAROUSEL_CARD). Use GoogleAdsService.SearchStream to retrieve these assets:

SELECT
  asset.id,
  asset.demand_gen_carousel_card_asset.marketing_image_asset,
  asset.demand_gen_carousel_card_asset.square_marketing_image_asset,
  asset.demand_gen_carousel_card_asset.portrait_marketing_image_asset,
  asset.demand_gen_carousel_card_asset.headline,
  asset.demand_gen_carousel_card_asset.call_to_action_text
FROM asset
WHERE asset.type = DEMAND_GEN_CAROUSEL_CARD

You can also retrieve performance metrics for DEMAND_GEN_CAROUSEL_CARD assets using ad_group_ad_asset_view:

SELECT
  asset.id,
  asset.name,
  asset.type,
  metrics.impressions
FROM ad_group_ad_asset_view
WHERE ad_group_ad_asset_view.field_type = DEMAND_GEN_CAROUSEL_CARD

Unsupported entities

While standard Demand Gen video responsive ads (DEMAND_GEN_VIDEO_RESPONSIVE_AD) are supported, deprecated legacy Discovery video ads that show up in the Google Ads UI with ad type "Demand Gen video ad (legacy)" are not supported by the Google Ads API and won't be returned by GoogleAdsService.SearchStream or GoogleAdsService.Search.