Each `AssetGroup` in a Performance Max campaign requires an initial minimum set
of assets. These could be existing assets used in other campaigns or new assets
specifically for an `AssetGroup` in a Performance Max campaign.

When linked to Google Merchant Center, a
[retail](https://developers.google.com/google-ads/api/performance-max/retail) Performance Max campaign generates the
minimum necessary set of assets automatically. As a best practice, we recommend
uploading additional assets to maximize reach across all inventory.

> [!CAUTION]
> **Caution:** If you link custom assets (other than HTML5 `MEDIA_BUNDLE` assets) to an `AssetGroup` in a retail campaign, make sure to provide all [minimum required assets](https://developers.google.com/google-ads/api/performance-max/asset-requirements#required-assets). Linking only optional asset types (such as `YOUTUBE_VIDEO`) without the required text and image assets leaves the asset group in an unsupported state that blocks edits in the Google Ads UI. See [linking asset groups to assets in retail campaigns](https://developers.google.com/google-ads/api/performance-max/asset-groups#link-asset-groups-to-assets-in-performance-max-retail-campaigns) for details.

## Required assets

Requests to create an `AssetGroup` in a standard non-retail campaign (excluding
[Local Services Performance Max campaigns](https://developers.google.com/google-ads/api/performance-max/asset-groups#local-services-pmax), which don't use
`AssetGroupAsset` links) or to link custom assets (other than HTML5
`MEDIA_BUNDLE` assets in retail campaigns) to an `AssetGroup` must meet all of
the following requirements:

> [!NOTE]
> **Note:** Only asset types listed in the following table can be linked to asset groups. If you want to use other asset types not listed here, such as `SITELINK`, you must link them to the campaign instead by creating a [`CampaignAsset`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignAsset). See [Build an asset group](https://support.google.com/google-ads/answer/10724492).

| Required `TEXT` Assets || Number allowed per `AssetGroup` ||
|---|---|---|---|
| [`AssetFieldType`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetFieldTypeEnum.AssetFieldType) | **Character limit** | **Min** | **Max** |
| `HEADLINE` | 30 characters | 3 | 15 |
| `LONG_HEADLINE` | 90 characters | 1 | 5 |
| `DESCRIPTION` | 90 characters | 2 | 5 |

| Required `IMAGE` Assets ||||| Number allowed per `AssetGroup` ||
|---|---|---|---|---|---|---|
| [`AssetFieldType`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetFieldTypeEnum.AssetFieldType) | **Required aspect ratio** | **Recommended dimensions** | **Min dimensions** | **Max file size** | **Min** | **Max** |
| `MARKETING_IMAGE` | Landscape (1.91:1) | 1200 x 628 | 600 x 314 | 5120 KB | 1 | 20 |
| `SQUARE_MARKETING_IMAGE` | (1:1) | 1200 x 1200 | 300 x 300 | 5120 KB | 1 | 20 |

> [!NOTE]
> **Note:** The supported file types for images are GIF, JPG, and PNG.

If you try to [link an image
asset](https://developers.google.com/google-ads/api/performance-max/asset-groups#link-asset-groups-to-assets) that doesn't conform to
the aspect ratio specification for that `AssetFieldType`, an
`ASPECT_RATIO_NOT_ALLOWED` error is returned. Note that this
validation occurs when linking, not during the initial asset upload.

| Additional required assets when brand guidelines are disabled |||||| Number allowed per `AssetGroup` ||
|---|---|---|---|---|---|---|---|
| [`AssetFieldType`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetFieldTypeEnum.AssetFieldType) | **Character limit** | **Required aspect ratio** | **Recommended dimensions** | **Min dimensions** | **Max file size** | **Min** | **Max** |
| `BUSINESS_NAME` | 25 characters | n/a | n/a | n/a | n/a | 1 | 1 |
| `LOGO` | n/a | (1:1) | 1200 x 1200 | 128 x 128 | 5120 KB | 1 | 5 |

> [!IMPORTANT]
> **Important:** For Performance Max campaign with brand guidelines enabled, `BUSINESS_NAME`, `LANDSCAPE_LOGO` and `LOGO` must be linked using [`CampaignAsset`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignAsset) instead of [`AssetGroupAsset`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetGroupAsset). See the [Create a campaign](https://developers.google.com/google-ads/api/performance-max/create-campaign#brand-guidelines) guide for more information.

## Optional assets

The following assets are optional. However, we recommend uploading additional
assets to maximize reach across all inventory.

| Optional `IMAGE` Assets ||||||
|---|---|---|---|---|---|
| [`AssetFieldType`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetFieldTypeEnum.AssetFieldType) | **Required aspect ratio** | **Recommended dimensions** | **Min dimensions** | **Max file size** | **Max number allowed per `AssetGroup`** |
| `PORTRAIT_MARKETING_IMAGE` | (4:5) | 960 x 1200 | 480 x 600 | 5120 KB | 20 |
| `LANDSCAPE_LOGO` | (4:1) | 1200 x 300 | 512 x 128 | 5120 KB | 20 |

> [!IMPORTANT]
> **Important:** `LANDSCAPE_LOGO` can only be included in an asset group if brand guidelines are disabled. Otherwise, it must be linked as a [`CampaignAsset`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignAsset).

| Other optional Assets ||||||
|---|---|---|---|---|---|
| [`AssetFieldType`](https://developers.google.com/google-ads/api/reference/rpc/v26/AssetFieldTypeEnum.AssetFieldType) | **Specifications** | **Max number allowed per `AssetGroup`** |
| `YOUTUBE_VIDEO` | Aspect ratio of horizontal (16:9), square (1:1), or vertical (9:16); and greater than or equal to 10 seconds in duration | 15 |
| `CALL_TO_ACTION_SELECTION` | Automated by default, or select from a [list](https://developers.google.com/google-ads/api/data/call-to-action-translations) | 1 |
| `MEDIA_BUNDLE` | Less than 150 KB | 1 |

## Asset selection

Asset groups in Performance Max campaigns can use assets from your account-level
asset library, so you can reuse assets across campaigns and asset groups rather
than uploading commonly used assets multiple times. You can issue search
requests to find assets that meet the respective requirements and specifications
for each `AssetFieldType`.

Combine queries to check if your account has enough assets to create
a valid asset group. For example, the following query demonstrates how to
retrieve all assets that meet the specifications for a `MARKETING_IMAGE`, one
of the required `IMAGE` assets:

    SELECT
      asset.resource_name,
      asset.name,
      asset.image_asset.full_size.width_pixels,
      asset.image_asset.full_size.height_pixels
    FROM asset
    WHERE asset.type = 'IMAGE'
      AND asset.image_asset.file_size <= 5120000
      AND asset.image_asset.full_size.width_pixels = 1200
      AND asset.image_asset.full_size.height_pixels = 628
      AND asset.name LIKE '%KEYWORD%'

- This example uses the recommended dimensions for a `MARKETING_IMAGE` as filtering conditions in the `WHERE` clause. These are not requirements, but images must meet specified aspect ratios.
- The asset width and height in the `SELECT` clause can be used to check required aspect ratios later on if you don't use the filters in the `WHERE` clause.
- This example shows how to optionally filter by asset name, which can be useful if you've uploaded assets with descriptive names.

## Assets Best Practices

Performance Max campaigns use the power of Google AI to dynamically create and
serve ads across all Google channels. To maximize your campaign's reach and
optimize performance, you must provide a rich and diverse set of assets.
The more high-quality assets you provide, up to the allowed maximums for each
type, the more opportunities Google AI has to mix and match combinations that
resonate with various audiences and perform best across different ad formats and
placements. This allows your campaign to adapt and excel, driving better results
for your business.

To further enhance your campaign's performance, it's important to understand how
Google AI optimizes your assets over time. While the system provides insights
into asset performance, avoid immediately removing underperforming assets if you
haven't reached the maximum allowed for that asset type.

Instead, if you have the available slots, prioritize uploading new, high-quality
assets to fill that available space. This provides Google AI with even more
options to test and learn. The system may still find valuable combinations for
existing assets when paired with different creative elements or shown to
different audiences. Only consider removing assets when you've truly exhausted
all opportunities to add new, strong alternatives and you are at or near the
maximum asset count for that type.