In `v25` and later, you can use the
[`SmartCampaignSettingService.GeneratePMaxDraftCampaign`](https://developers.google.com/google-ads/api/reference/rpc/v26/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`](https://developers.google.com/google-ads/api/reference/rpc/v26/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`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignStatusEnum.CampaignStatus#paused).
- Its serving eligibility is reflected in [`primary_status`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#primary_status).
- `contains_eu_political_advertising` is set to [`DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#contains_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](https://developers.google.com/google-ads/api/performance-max/asset-requirements).
2. Upload new images by following the [upload image asset](https://developers.google.com/google-ads/api/samples/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](https://developers.google.com/google-ads/api/performance-max/asset-groups#link-asset-groups-to-assets).

## Request parameters

> [!CAUTION]
> **Caution:** The `gbp_enabled` and `image_enabled` parameters are not supported and cause errors if set to `true` in a request. Leave both fields unset or set to `false`.

The [`GeneratePMaxDraftCampaignRequest`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignRequest) message accepts
the following fields:

- [`resource_name`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignRequest#resource_name) (**Required** ): The resource name
  of the [`SmartCampaignSetting`](https://developers.google.com/google-ads/api/reference/rpc/v26/SmartCampaignSetting) to regenerate for
  the Smart campaign you want to convert, in the following format:

      customers/customer_id/smartCampaignSettings/campaign_id

- [`validate_only`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignRequest#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`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse#validated_info) field without creating draft
  entities.

- [`gbp_enabled`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignRequest#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`](https://developers.google.com/google-ads/api/reference/rpc/v26/SmartCampaignErrorEnum.SmartCampaignError#gbp_enabled_generate_pmax_not_supported)
  error.

- [`image_enabled`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignRequest#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`](https://developers.google.com/google-ads/api/reference/rpc/v26/SmartCampaignErrorEnum.SmartCampaignError#image_enabled_generate_pmax_not_supported)
  error.

## Response details

The [`GeneratePMaxDraftCampaignResponse`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse) message
returns the resource names of the generated Performance Max draft campaign and
its associated entities:

- [`pmax_campaign`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse#pmax_campaign): The [`Campaign`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign) resource name of the generated draft Performance Max campaign.
- [`campaign_budget`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse#campaign_budget): The [`CampaignBudget`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignBudget) resource name linked to the generated Performance Max campaign.
- [`asset_group`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse#asset_group): The [`AssetGroup`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetGroup) resource name linked to the generated Performance Max campaign.
- [`assets`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse#assets%5B%5D): A list of [`Asset`](https://developers.google.com/google-ads/api/reference/rpc/v26/Asset) resource names linked to the generated Performance Max campaign.
- [`validated_info`](https://developers.google.com/google-ads/api/reference/rpc/v26/GeneratePMaxDraftCampaignResponse#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`).

## Recommended workflow

To convert a Smart campaign, use the following workflow:

1. **Generate the draft campaign** : Call [`SmartCampaignSettingService.GeneratePMaxDraftCampaign`](https://developers.google.com/google-ads/api/reference/rpc/v26/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.

> [!NOTE]
> **Note:** Once `gbp_enabled` and `image_enabled` are enabled in a future release, you will also be able to automatically migrate GBP locations and image assets.