Convert Smart campaigns to PMax campaigns

In v25 and later, you can use the SmartCampaignSettingService.GeneratePMaxDraftCampaign method to convert a Smart campaign to a Performance Max campaign. This method is not available in v24 and earlier.

How conversion works

When you call SmartCampaignSettingService.GeneratePMaxDraftCampaign, the API generates a draft Performance Max campaign, budget, asset group, and assets, based on the configuration of the Smart campaign provided in the request. Once generated, you should inspect, modify, and enhance the new resources before enabling the campaign to serve ads.

The generated Performance Max draft campaign is initialized with the following status values:

  • status is set to PAUSED.
  • Its serving eligibility is reflected in primary_status.
  • contains_eu_political_advertising is set to DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING by default (if not already specified on the Smart campaign). Verify and update this field if your campaign contains EU political advertising.

This lets you inspect, modify, and enhance the generated Performance Max campaign, budget, asset group, and assets before you enable the campaign to serve ads.

Draft assets

The new campaign is accompanied by a group of placeholder images that need to be replaced before the new campaign is enabled. When the image_enabled field is supported and set to true in the request, the API automatically generates images instead of using placeholder images. You can inspect the new assets in the response's assets field, and replace them by following these steps:

  1. Review the asset requirements guide.
  2. Upload new images by following the upload image asset example.
  3. Link the new assets to the draft campaign's asset group and then remove the AssetGroupAsset links for the placeholder images (either in the same atomic mutate request or after linking the new assets so minimum asset requirements remain satisfied) by following the link asset groups to assets guide.

Request parameters

The GeneratePMaxDraftCampaignRequest message accepts the following fields:

  • resource_name (Required): The resource name of the SmartCampaignSetting to regenerate for the Smart campaign you want to convert, in the following format:

    customers/customer_id/smartCampaignSettings/campaign_id
    
  • validate_only (Optional): If true, the request is validated but not executed. Only validation errors, warnings, or possible conversion issues are returned in the response's validated_info field without creating draft entities.

  • gbp_enabled (Not supported): Optional. Whether to convert the Google Business Profile (GBP) location linked with the Performance Max campaign. Leave this field unset or false; setting it to true is not supported and returns a SmartCampaignError.GBP_ENABLED_GENERATE_PMAX_NOT_SUPPORTED error.

  • image_enabled (Not supported): Optional. Whether to generate required Performance Max campaign images (such as horizontal, square, and logo image types). Leave this field unset or false; setting it to true is not supported and returns a SmartCampaignError.IMAGE_ENABLED_GENERATE_PMAX_NOT_SUPPORTED error.

Response details

The GeneratePMaxDraftCampaignResponse message returns the resource names of the generated Performance Max draft campaign and its associated entities:

  • pmax_campaign: The Campaign resource name of the generated draft Performance Max campaign.
  • campaign_budget: The CampaignBudget resource name linked to the generated Performance Max campaign.
  • asset_group: The AssetGroup resource name linked to the generated Performance Max campaign.
  • assets: A list of Asset resource names linked to the generated Performance Max campaign.
  • validated_info: Validation information or possible conversion issues returned by the conversion check (populated both when validate_only is set to true and alongside the generated entity resource names when validate_only is false).

To convert a Smart campaign, use the following workflow:

  1. Generate the draft campaign: Call SmartCampaignSettingService.GeneratePMaxDraftCampaign with only the required resource_name set (leave gbp_enabled and image_enabled unset or set to false). Save the returned pmax_campaign, campaign_budget, asset_group, and assets resource names.
  2. Review and customize the campaign: Because the draft Performance Max campaign is created with status = PAUSED and creation_status = INCOMPLETE, inspect and configure its budget, asset group, and assets.
  3. Enable the campaign and pause the original: When you are ready to serve ads, update the Performance Max campaign's status to ENABLED, then update the original Smart campaign's status to PAUSED to prevent duplicate serving.