A Demand Gen ad builds the creative served to a user when an ad auction is won.
AdGroupAd resources configure the relevant creative options under
the union field ad_details.
Configure ad details
There are four types of Demand Gen ads. Each AdGroupAd resource can only be a single type. Each type is configured in individual field under the union field ad_details:
A link to the relevant ad type requirements is available in the description of
each field. Only one of these fields can be populated when creating an
AdGroupAd resource.
Image dimension and resolution requirements by type
Each ad type requires different sizes of image assets.
The following table lists the image types and relevant file restrictions:
| Image type | |
|---|---|
| Companion banner |
Maximum file size: 150 KB Dimensions: 300x60 |
| Landscape image |
Maximum file size: 5120 KB Recommended dimensions: 1200x628, Minimum: 600x314 |
| Logo image |
Maximum file size: 5120 KB Recommended dimensions: 1200x1200, Minimum: 128x128 |
| Portrait image |
Maximum file size: 5120 KB Recommended dimensions: 960x1200, Minimum: 480x600 |
| Square image |
Maximum file size: 5120 KB Recommended dimensions: 1200x1200, Minimum: 300x300 |
Create an ad
Here's how to create a Demand Gen video ad:
Java
// Provide the ID of the parent advertiser. long advertiserId = advertiser-id; // Provide the ID of the parent ad group. long adGroupId = ad-group-id; // Provide the display name of the ad. String displayName = display-name; // Provide the information for the ad creative. String finalAdUrl = final-ad-url; String callToAction = call-to-action; String headline = headline; String longHeadline = long-headline; String description = description; String businessName = business-name; long youtubeAssetId = youtube-video-asset-id; long logoAssetId = logo-asset-id; // Create the ad structure. AdGroupAd ad = new AdGroupAd() .setAdGroupId(adGroupId) .setDisplayName(displayName) .setEntityStatus("ENTITY_STATUS_PAUSED") .setDemandGenVideoAd( new DemandGenVideoAd() .setFinalUrl(finalAdUrl) .setCallToAction(callToAction) .setHeadlines(Arrays.asList(headline)) .setLongHeadlines(Arrays.asList(longHeadline)) .setDescriptions(Arrays.asList(description)) .setBusinessName(businessName) .setVideos( Arrays.asList( new YoutubeVideoDetails() .setVideoAssetId(youtubeAssetId))) .setLogo(new ImageAsset().setAssetId(logoAssetId))); // Configure the create request. AdGroupAds.Create request = service.advertisers().adGroupAds().create(advertiserId, ad); // Create the ad group. AdGroupAd response = request.execute(); // Display the new ad. System.out.printf("Demand Gen ad %s was created.", response.getName());
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the parent ad group. ad_group_id = ad-group-id # Provide the display name of the ad. display_name = display-name # Provide the information for the ad creative. final_ad_url = final-ad-url call_to_action = call-to-action headline = headline long_headline = long-headline description = description business_name = business-name youtube_asset_id = youtube-video-asset-id logo_asset_id = logo-asset-id # Create the ad object. ad_obj = { "adGroupId": ad_group_id, "displayName": display_name, "entityStatus": "ENTITY_STATUS_PAUSED", "demandGenVideoAd": { "finalUrl": final_ad_url, "callToAction": call_to_action, "headlines": [headline], "longHeadlines": [long_headline], "descriptions": [description], "businessName": business_name, "videos": [{"videoAssetId": youtube_asset_id}], "logo": {"assetId": logo_asset_id} } } # Build and execute request. response = ( service.advertisers() .adGroupAds() .create(advertiserId=advertiser_id, body=ad_obj) .execute() ) # Display the new ad. print(f"Demand Gen ad {response['name']} was created.")
PHP
// Provide the ID of the parent advertiser. $advertiserId = advertiser-id; // Provide the ID of the parent ad group. $adGroupId = ad-group-id; // Provide the display name of the ad. $displayName = display-name; // Provide the information for the ad creative. $finalAdUrl = final-ad-url; $callToAction = call-to-action; $headline = headline; $longHeadline = long-headline; $description = description; $businessName = business-name; $youtubeAssetId = youtube-video-asset-id; $logoAssetId = logo-asset-id; // Create the ad structure. $ad = new Google_Service_DisplayVideo_AdGroupAd(); $ad->setAdGroupId($adGroupId); $ad->setDisplayName($displayName); $ad->setEntityStatus('ENTITY_STATUS_PAUSED'); // Create the Demand Gen video ad creative. $demandGenVideoAd = new Google_Service_DisplayVideo_DemandGenVideoAd(); $demandGenVideoAd->setFinalUrl($finalAdUrl); $demandGenVideoAd->setCallToAction($callToAction); $demandGenVideoAd->setHeadlines(array($headline)); $demandGenVideoAd->setLongHeadlines(array($longHeadline)); $demandGenVideoAd->setDescriptions(array($description)); $demandGenVideoAd->setBusinessName($businessName); // Assign the video asset to the ad creative. $youtubeVideoAsset = new Google_Service_DisplayVideo_YoutubeVideoDetails(); $youtubeVideoAsset->setVideoAssetId($youtubeAssetId); $demandGenVideoAd->setVideos(array($youtubeVideoAsset)); // Assign the logo asset to the ad creative. $imageAsset = new Google_Service_DisplayVideo_ImageAsset(); $imageAsset->setAssetId($logoAssetId); $demandGenVideoAd->setLogo($imageAsset); // Assign the Demand Gen video ad to the ad. $ad->setDemandGenVideoAd($demandGenVideoAd); // Call the API, creating the ad under the advertiser and ad group given. try { $result = $this->service->advertisers_adGroupAds->create( $advertiserId, $ad ); } catch (\Exception $e) { $this->renderError($e); return; } // Display the new ad. printf('<p>Ad %s was created.</p>', $result['name']);